• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Galgenmännchen Script funzt nur in 1 Browser

Status
Für weitere Antworten geschlossen.

Tobias4

Neues Mitglied
Hi,

das folgende Script wurde von jemandem überarbeitet, sodass es auch mit neueren PHP Versionen funktioniert.
Nur leider funzt das Script nun NUR NOCH im OPera 9.27. Neure Versionen dieses Browsers klappen auch nicht und IE und FF klappen auch nicht.

Könnte es jemand "reparieren"? Hier ein Beispiel, damit ihr es mit unterschiedlichen Browsern testen könnt. Müsst halt mal auf ein paar Buchstaben klicken um zu sehen, was passiert: tobias-theis.de Homepage :: Hangman

Code:
<?php 
/** 
* Galgenmaennchen (Hangman) 
* ========================= 
*/ 

session_start(); 

// Liste der möglichen Lösungsworte 
$wordlist = array( 
 'Hubschrauber', 
 'Reparaturwerkstatt', 
 'Affenbrotbaum', 
 'Hexensabbat', 
 'Spezialeinsatz', 
 'Kranwagen', 
 'Priesterweihe', 
 'Unterseeboot', 
 'Druckeranschluss', 
 'Tennis', 
 'Computer', 
 'Fussballplatz', 
 'Autowerkstatt', 
 'Umtauschkasse', 
 'Umkleidekabine', 
 'Reisepass', 
 'Hundekuchen', 
 'Marmeladenbrot', 
 'Murmelbahn', 
 'Hausmeisterkittel', 
 'Katzenstreu', 
 'Katzenklo', 
 'Herzschrittmacher', 
 'Salzstreuer', 
 'Salatschleuder', 
 'Eckball', 
 'Winterzeit', 
 'Fussballweltmeister', 
 'Spargelstecher', 
 'Tanzschule', 
 'Reisewecker', 
); 

$max_guess = 5; 

if (isset($_GET['new'])) { 
    session_destroy(); 
    unset($_SESSION); 
    session_start(); 
} 

if (!isset($_SESSION['GUESSED'])) { 
// Ein neues Spiel, Werte initialisieren ... 
    srand ((float) microtime() * 10000000); 
    $_SESSION['GUESSED'] = array(); 
    $_SESSION['MOVES'] = 0; 
    $_SESSION['HITS'] = 0; 
    $_SESSION['WORD2GUESS'] = $wordlist[array_rand($wordlist)]; 
} 




if (isset($_GET['c']) && $_SESSION['MISSED'] < $max_guess) { 
// Ein Buchstabe wurde geraten ... 
    $_SESSION['GUESSED'][] = $_GET['c']; 
    $_SESSION['MOVES']++; 
    if (stristr($_SESSION['WORD2GUESS'], $_GET['c'])) { 
        $_SESSION['HITS']++; 
    } 
} 


$_SESSION['MISSED'] = $_SESSION['MOVES'] - $_SESSION['HITS']; 


/* 
* Buchstabenliste zeichnen 
*/ 

function get_alpha_navigation() 
{ 
    $stack = ''; 
    $tpl = '<a href="'.$_SERVER['PHP_SELF'].'?c=%s">%s</a> '; 
    for ($i=65; $i<91; $i++){ 
        $l = chr($i); 
        $m = sprintf ($tpl, $l, $l); 
        if (in_array($l,$_SESSION['GUESSED'])) { 
            $m = $l.' '; 
        } 
        $stack .= '<li>'.$m.'</li>'; 
    } 
$result=' 
<ul id="navi"> 
'.$stack.' 
</ul> 
'; 
    return $result; 
} 

function get_result() 
{ 
    $word = $_SESSION['WORD2GUESS']; 
    $complete = true; 
    $msg = ''; 
    $stack = ''; 
    $l = strlen($word); 
    for ($i = 0; $i < $l;$i++) { 
        $cmp = strtoupper($word[$i]); 
        if (in_array($cmp, $_SESSION['GUESSED'])) { 
            $stack .= "<li>".$word[$i]."</li> "; 
        } else { 
            $complete = false; 
            $stack .= '<li>_</li> '; 
        } 
    } 
    if ($complete) { 
        $msg = '<BR><span style="font-family:Verdana; font-size:9pt;"><b>Gewonnen</b></span>'; 
    } 
$rv = $msg.' 
<ul id="wordtoguess"> 
'.$stack.' 
</ul> 
'; 

    return $rv; 
} 


$navi = get_alpha_navigation(); 

$word = get_result(); 

$msg = ''; 

$count_down = $max_guess - $_SESSION['MISSED']; 

if ($_SESSION['MISSED'] >= $max_guess){ 
    $msg = '<span style="font-family:Verdana; font-size:9pt;"><b>Verloren :(</b></span><BR>'; 
$msg .= '<span style="font-family:Verdana; font-size:9pt;">Das gesuchte Wort war <em>'.$_SESSION['WORD2GUESS'].'</em>.</span><BR>'; 
} 
echo ' 
<style type="text/css"> 

 #navi { 
 list-style-image:none; 
} 


 #navi a{ 
 text-decoration:none; 
 font-weight:bold; 
 color:#c00; 
} 

 #navi li{ 
 border:1px solid #c00; 
 padding:2px; 
 background-color:#ffc; 
 color:#ffc; 
 float:left; 
 width:18px; 
 height:16px; 
 list-style-type:none; 
} 

 #wordtoguess{ 
 list-style-image:none; 
 margin-top:60px; 
 clear:left; 
} 
 #wordtoguess li{ 
 border:1px solid #999; 
 padding:2px; 
 background-color:#D7FFD7; 
 color:#000; 
 float:left; 
 width:22px; 
 height:22px; 
 list-style-type:none; 
} 


</style> 

'.$navi.' 

'.$word.' 

<br style="clear:left;" /> 
<span style="font-family:Verdana; font-size:8pt;">Versuche gesamt:&nbsp;'.$_SESSION['MOVES'].'&nbsp;verbleibend:&nbsp;'.$count_down.'</span><br/> 
'.$msg.' 
<a href="'.$_SERVER['PHP_SELF'].'?new=1"><span style="font-family:Verdana; font-size:11pt;">Neues Spiel beginnen</span></a> 
'; 

?>
 
Zuletzt bearbeitet:
Ich habe die Datei auf meinem Webspace und local getestet und diese Funktioniert. Auf deiner Webseite geht es bei mir auch nicht (Opera
9.62).
Was mir aufgefallen ist, dass kein Session-Cookie gesetzt wird!

Viele Grüße,
Marlin
 
Dann würde ich mir mal die Response-Header angucken, ob überhaupt ein Set-Cookie gesendet wird und ob die Syntax korrekt ist.
 
also das einzige was mir so auf den ersten blick auffällt ist das wenn jemand

PHP:
array(
    1,
    2,
    3,
);

schreibt ich auch nicht funktionieren wollen würde ;)
 
Jetzt funzt es auf einmal auch im Opera 9.27 gar nicht mehr O.O
Bitte bitte bitte kann es jemand überarbeiten? :(
Ich habe die Datei auf meinem Webspace und local getestet und diese Funktioniert.
Der Script funktioniert wie er es soll. Es muss an etwas anderem liegen.
Könnte es sein, dass du beim einbinden in deine Webseite session_start() vergessen hast?
Beim Aufruf deiner Homepage, bekommt man immer wieder neuen cookie. Dieser heißt nicht wie normal "PHPSESSID" sondern "phpbb2hp_sid".

Viele Grüße,
Marlin
 
Die HP verwendet Cookies, da sie auf phpBB2 basiert xD Hab einfach nen phpBB2 Board installiert, in phpBB eingebundene seiten genommen, da ich zu blöd bin ne HP selbst zu machen, da ist das somit ganz einfach.

Habe es gerade auch mal so getestet, ohne es in die HP einzubinden, es funktioniert tatsächlich. Und was mache ich jetzt? Wie mache ich es jetzt, dass es in der HP geht? Dürfte ja nicht mehr so schwer sein, wenn wir jetzt schonmal den Fehler gefunden haben :D

PS: Im FF hat es eben einmal funktioniert, dann wieder nicht, im Opera funktioniert es meistens, manchma aber auch net und im IE glaub ich gar nicht.

session_start() ist doch drin:

Code:
<?php 
/** 
* Galgenmaennchen (Hangman) 
* ========================= 
*/ 

session_start(); 

// Liste der möglichen Lösungsworte
 
Zuletzt bearbeitet:
Eigentlich sollte man die Fehlerquelle ausmachen, jedoch könntest du auch einfach die Daten in einer Datenbank ablegen und wieder Abfragen und ein "normalen" cookie mit einer Id setzen. Schreibt deine Forensoftware der Sessionnamen um?
Eine weitere und noch unschönere Möglichkeit, ist ein Inlineframe.
(Habe ich nie gesagt^^ :D)

Viele Grüße,
Marlin
 
Schreibt deine Forensoftware der Sessionnamen um?
Ich weiß nicht, ob phpBB2 das macht O.O
Weiß nicht was genau ich jetzt machen soll =(
Würde das Script schon gerne so in die HP eingebunden haben und nicht in einer leeren weißen Seite ohne den Header und alles =(

EDIT: Außerdem verstehe ich nicht, warum es manchmal tadellos funktioniert in die Website eingebunden [ tobias-theis.de Homepage :: Hangman ] O.O
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Zurück
Oben