2012-03-29 4 views
0

Ich habe diesen Code unten in dem, was geschehen sollte, ist, dass, wenn die $sessionMinus (was eine Zahl ist) nicht das gleiche wie ($_SESSION['initial_count']) ist, dann ist das Formular an sich selbst macht geltend, die ich passieren soll, aber wenn $sessionMinus gleich die gleiche Nummer wie ($_SESSION['initial_count']) dann Ich möchte, dass das Formular an create_session2.php übermittelt wird.Warum navigiert mich dieses Formular zu einer Fehlerseite?

Aber das Problem ist, dass, wenn ich auf den Absenden-Button, egal was passiert, es bringt mich auf eine Fehlerseite, egal ob die Zahlen übereinstimmen oder nicht. Warum passiert dies? (Dies passiert, wenn ich beide Zeichen == und === verwende).

Im Folgenden finden Sie den Code ein:

<?php 
session_start(); 

    if ($sessionMinus == $_SESSION['initial_count']){ 

     $action = ($sessionMinus == $_SESSION['initial_count']) ? "create_session2.php" : $_SERVER['PHP_SELF']; 

    } 

?> 


<body>  
     <form id="QandA" action="<?php echo htmlentities($action); ?>" method="post" onsubmit="return validateForm(this);" > 

... 

</body> 

Lösung ist unten:

<?php 

session_start(); 

if ($sessionMinus == $_SESSION['initial_count']){ 

    $action = 'create_session2.php'; 

}else if($sessionMinus != $_SESSION['initial_count']){ 

    $action = $_SERVER['PHP_SELF']; 

} 

?> 

<body> 

      <form id="QandA" action="<?php echo htmlentities($action); ?>" method="post" onsubmit="return validateForm(this);" > 



... 
</body> 
+0

Auf welche Seite verweisen Sie? Wird das Verhalten erwartet, wenn diese Variablen nicht gleich sind? – Noah

+0

Überprüfen Sie das Formular-Tag –

+0

Wenn Sie Fehler Seite sagen - welche Art? Ist es ein Fehler 500 oder was? – Pete

Antwort

0

Es gibt ein paar Dinge, das sein könnte:

  1. Überprüfen Sie Ihre php_error.log Datei für mehr Debug-Informationen, es wird in der Regel einige Informationen darüber haben, was den Fehler verursacht.

  2. Es sieht so aus, als ob Ihre PHP-Anweisungen und Ihr HTML-Code nicht korrekt getrennt sind (vorausgesetzt, diese Codezeilen stehen unmittelbar hintereinander). Sie benötigen ein ?>-Tag nach dem if-Block, aber vor dem -Tag. So würde Ihr Code sein:

    <?php /* <- this should be above this line already in your code */ 
    
    if ($sessionMinus == $_SESSION['initial_count']) { 
        $action = ($sessionMinus == $_SESSION['initial_count']) ? "create_session2.php" : $_SERVER['PHP_SELF']; 
    } 
    /* you need to add the tag below */ 
    ?> 
    <form id="QandA" action="<?php echo htmlentities($action); ?>" method="post" onsubmit="return validateForm(this);" > 
    
  3. Wo Sie die $action Variablen zuweisen, sollten Sie den Ausdruck in Klammern Einwickeln, wie folgt aus:

    $action = (($sessionMinus == $_SESSION['initial_count']) ? "create_session2.php" : $_SERVER['PHP_SELF']); 
    

und auch PHP_SELF-REQUEST_URI (als PHP_SELF Ändern Gibt den Dateipfad relativ zum Dokumentstamm an, nicht den vollständigen Pfad einschließlich Dokumentstammverzeichnis) und fügt den vollständigen Pfad zur Datei create_session2.php hinzu:

$action = (($sessionMinus == $_SESSION['initial_count']) ? $_SERVER['SERVER_NAME'] . "/create_session2.php" : $_SERVER['REQUEST_URI']); 
$action = (($sessionMinus == $_SESSION['initial_count']) ? $_SERVER['SERVER_NAME'] . "/create_session2.php" : $_SERVER['REQUEST_URI']); 

Sie sollten das SERVER_NAME Bit nicht hinzufügen müssen, aber ich bevorzuge immer absolute Pfade in meinen Links.

Wenn Sie mehr Quellcode bereitstellen können, wäre es sehr hilfreich.

-T

+0

Hallo, ich kopiere und poste Code, ich werde den Code aktualisieren, aber?> Tags und etc sind an den richtigen Stellen, bevor du sie erwähnst – user1292857

+0

Hallo, habe die Klammertheorie ausprobiert, aber hast immer noch kein Glück, muss ich REQUEST_URI verwenden ? – user1292857

+0

Nein, Sie sollten ** nicht ** benutzen. Können Sie den Quellcode der generierten Seite überprüfen und sehen, was die Aktion des Formulars ist? –

Verwandte Themen