starter hangt zich (spreekwoordelijk ;)) op aan galgje script
Ik heb geprobeerd het 'simpel script galgje v2' na te maken (http://www.phphulp.nl/php/script/php-algemeen/simpel-spel-galgje-v-2/1306/), maar dit is mij niet gelukt, volgens de foutmelding omdat de sessie niet gestart kan worden; hieronder de foutmelding en het PHP-script, tevens een link naar de site waar dit script nu draait.
(FOUTMELDING: Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /customers/projectdomes.com/projectdomes.com/httpd.www/phptest/test4.php:16) in /customers/projectdomes.com/projectdomes.com/httpd.www/phptest/test4.php on line 17 Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /customers/projectdomes.com/projectdomes.com/httpd.www/phptest/test4.php:16) in /customers/projectdomes.com/projectdomes.com/httpd.www/phptest/test4.php on line 17)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?PHP
session_start();
if($_SERVER['REQUEST_METHOD']=='POST'){
$woorden = array('Liefde', 'Draakje', 'Meesterlijk', 'Kameleon', 'Kikker', 'Project', 'Grappig'); //De woorden die moeten worden gelezen.
$rand = rand(0,count($woorden)-1);
$woord = $woorden[$rand];
$_SESSION['woord']=$woord;
$teller = 8; //Aantal kansen voor dood.
for ($x=0;$x<strlen($woord);$x++){
$hidden.='-';
}
}else{
$letter=$_POST['letter'];
$woord=$_SESSION['woord'];
$hiddenword=$_POST['hidden'];
$gebruikt=$_POST['gebruikt'];
$teller=$_POST['teller'];
$gebruikt.=$letter;
$hidden='';
$juist=false;
for($x=0;$x<strlen($woord);$x++){
if(substr($woord,$x,1)==$letter){
$hidden.=$letter;
$juist=true;
}else{
$hidden.=substr($hiddenword,$x,1);
}
}
if(!$juist){
$teller--;
}
if($woord==$hidden){
echo 'Gefeliciteerd u heeft het woord geraden!<br />';
echo 'Het woord was: '.$woord.'<br />';
$einde=true;
}
if($teller==0){
echo 'Je hebt 8 keer geraden, we moeten je helaas informeren dat je tot de overledenen behoort.'; //Evt 8 veranderen in een ander getal.
echo '<br />Het woord was: '.$woord;
$einde=true;
}
}
if(!$einde){
echo 'Voorlopig is dit geraden:<br />';
echo $hidden;
echo '<br />Je hebt nog '.$teller.' levens.<br />';
if($gebruikt){
echo 'De volgende letters heb je al gebruikt: '.strtoupper($gebruikt);
}
}
?>
session_start();
if($_SERVER['REQUEST_METHOD']=='POST'){
$woorden = array('Liefde', 'Draakje', 'Meesterlijk', 'Kameleon', 'Kikker', 'Project', 'Grappig'); //De woorden die moeten worden gelezen.
$rand = rand(0,count($woorden)-1);
$woord = $woorden[$rand];
$_SESSION['woord']=$woord;
$teller = 8; //Aantal kansen voor dood.
for ($x=0;$x<strlen($woord);$x++){
$hidden.='-';
}
}else{
$letter=$_POST['letter'];
$woord=$_SESSION['woord'];
$hiddenword=$_POST['hidden'];
$gebruikt=$_POST['gebruikt'];
$teller=$_POST['teller'];
$gebruikt.=$letter;
$hidden='';
$juist=false;
for($x=0;$x<strlen($woord);$x++){
if(substr($woord,$x,1)==$letter){
$hidden.=$letter;
$juist=true;
}else{
$hidden.=substr($hiddenword,$x,1);
}
}
if(!$juist){
$teller--;
}
if($woord==$hidden){
echo 'Gefeliciteerd u heeft het woord geraden!<br />';
echo 'Het woord was: '.$woord.'<br />';
$einde=true;
}
if($teller==0){
echo 'Je hebt 8 keer geraden, we moeten je helaas informeren dat je tot de overledenen behoort.'; //Evt 8 veranderen in een ander getal.
echo '<br />Het woord was: '.$woord;
$einde=true;
}
}
if(!$einde){
echo 'Voorlopig is dit geraden:<br />';
echo $hidden;
echo '<br />Je hebt nog '.$teller.' levens.<br />';
if($gebruikt){
echo 'De volgende letters heb je al gebruikt: '.strtoupper($gebruikt);
}
}
?>
Ik begrijp niet wat er mis is aan de registratie. Heb ik naast session_start() meer nodig om een sessie te starten?
Overigens merk ik op php.net dat deze functie depricated is, wat is er voor alternatief voor session_start?
((session_start():'This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.'))
Ik kom er niet achter wat ik hier fout doe, maar vermoedt nu dat ik verouderde scripting gebruik (Ik heb PHP 5.3.5 op de server staan), kan iemand mij helpen?
((De foutmelding is te zien op http://www.projectdomes.com/phptest/test4.php))
Er is waarschijnlijk al output voor je session_start()
EDIT:
Boven PHP staat dit, verder niets:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmln="http://www.w3.org/1999/xhtml">
<head>
<link href="styles.css" rel="stylesheet" type="text/css" />
<title>Galgje</title>
</head>
<body>
<div class="placehldr2" align="center">
<div class="placehldr" align="center">
<p><h2>Reserved for project Domes.</h2></p>
<br />
<p>[ Under construction ]</p>
<p>In the meanwhile, feel free to play gallows below.</p>
</div>
Gewijzigd op 21/03/2011 21:47:02 door Nick Zwaal
ja, er mag geen output zijn voor session_start() zet dat dus volledig bovenaan. Wat nog beter is -> maak eerst alle php en begin daarna pas aan de html / output
Nick Zwaal op 21/03/2011 21:32:32:
Overigens merk ik op php.net dat deze functie depricated is, wat is er voor alternatief voor session_start?
((session_start():'This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.'))
((session_start():'This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.'))
Waar haal je dit vandaan? Linkje graag.
Je kan inderdaad veel beter alle PHP boven het doctype afhandelen. Eigenlijk zou je het in de body alleen nog maar hoeven echoën, in praktijk zijn hier soms nog wat foreach/if loops voor nodig maar in principe meer niet.
- SanThe - op 21/03/2011 21:49:57:
Waar haal je dit vandaan? Linkje graag.
Nick Zwaal op 21/03/2011 21:32:32:
Overigens merk ik op php.net dat deze functie depricated is, wat is er voor alternatief voor session_start?
((session_start():'This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.'))
((session_start():'This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.'))
Waar haal je dit vandaan? Linkje graag.
Ik moet je een link verschuldigd zijn, ik kan het niet meer vinden :s
PHP.net geeft niets aan over deprecated.
Dan moet ik twee strings door elkaar heb gehaald op PHP.net, sorry voor de ophef!
Toevoeging op 21/03/2011 21:57:43:
PHP Jasper op 21/03/2011 21:47:14:
ja, er mag geen output zijn voor session_start() zet dat dus volledig bovenaan. Wat nog beter is -> maak eerst alle php en begin daarna pas aan de html / output
Wouter J op 21/03/2011 21:51:07:
Je kan inderdaad veel beter alle PHP boven het doctype afhandelen. Eigenlijk zou je het in de body alleen nog maar hoeven echoën, in praktijk zijn hier soms nog wat foreach/if loops voor nodig maar in principe meer niet.
Dan ga ik jullie advies maar eens ten harte nemen. Ik ga even stuntelen ;)
EDIT: Betekend dit dat 'alles' input is? (Dit bijv:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">)
EDIT2: Alles boven weggehaald om te kijken wat het doet; heb het geupload (http://www.projectdomes.com/phptest/test5.php) en de errors zijn weg ;)
Nu kan ik eindelijk beginnen aan de code ^^
Gewijzigd op 21/03/2011 22:07:50 door Nick Zwaal