2016-06-08 11 views
2

Hier ist mein Code. Dies ist auf der Anmeldeseite.Beim Senden, speichern Sie in SESSION und senden Sie diese Sitzung an eine neue PHP-Seite

session_start(); 
if (isset($_POST['username'])) { 
    $_SESSION['username'] = $_POST['username']; 
} 

<form action="BAMainPage.php" method="post"> 
    <button type="submit" id="login" onclick="loginfunction()" >Log In</button> 
    <script> 
    function loginfunction() { 
     if(document.getElementById('username').value!=="") {  
      //location.href="http://localhost/bhbonlineretailphp/BAMainPage.php";       
     } else { 
      alert("failed"); 
     }      
    } 
    </script> 
</form> 

Dies ist die BAMainPage, die geöffnet wird, nachdem auf die Anmeldeschaltfläche geklickt wurde.

session_start(); 
echo $_SESSION['username']; 

Beim Öffnen zeigt die BAMainPage diesen Fehler jedoch an.

Notice: Undefined index: username in C:\xampp\htdocs\BHBOnlineRetailPHP\BAMainPage.php 

Warum ist der Benutzername nicht definiert? Ich habe den Wert bereits in $_SESSION['username'] gespeichert.

+1

Sie den Wert nur Sitzung speichern, wenn '$ _POST [ 'Benutzername'] 'ist gesetzt, aber vorbei Das Aussehen davon, Ihr Formular richtet sich an eine andere Datei, so dass der Code sowieso nicht ausgeführt wird. Es gibt auch das Problem, dass Sie scheinbar keine Eingabe haben, die 'username' definiert, was den ersten Punkt in Frage stellt. –

Antwort

1

Sieht aus wie Sie Ihren Benutzernamen BAMainPage.php Mitteilung verfassen, das bedeutet, dass Sie den Benutzernamen aus der POST dort und nicht in der gleichen Datei zuweisen müssen Sie das Formular einreichen von

so bewegen nur

session_start(); 
if (isset($_POST['username'])){ 
     $_SESSION['username'] = $_POST['username']; 
    } 

zu BAMainPage und echo es dann und Sie hsould es zu sehen, von dort auf Sie die Sitzung irgendwo anders in der Lage fortsetzen können und die $SESSION['username '] folgen Sie

+0

OMG Es funktioniert! Vielen Dank!! hahah Ich habe 2 Stunden damit verbracht und kann dieses Problem anscheinend nicht lösen. Eine weitere Frage, bedeutet das, dass meine Aktion meinen POST stattdessen auf die nächste Seite bringt? Daher muss ich den POST auf der nächsten Seite aufrufen? – Marcus

+0

ja, aber Sie können die Aktion als POST das Formular auf die gleiche Seite wie Sie sind action = rojobo

+0

wow danke sehr viel mann :) – Marcus

0

Früher wird es nicht Ihre $ _POST ['Benutzername'].

Ihre Login-Aktion ist BAMainPage.php. Sobald Sie also Ihre POST-Daten hier vorliegen haben, sollten Sie die Sitzung auf dieser Seite schreiben, anstatt sie auf der vorherigen Seite zu schreiben.

// BAMainPage.php 
session_start(); 
if (isset($_POST['username'])){ 
    $_SESSION['username'] = $_POST['username']; 
} 

Danach können Sie schreiben:

session_start(); 
echo $_SESSION['username']; 

In jeder Seite, die Sie wollen.

0

[Vorausgesetzt, dass Sie vergessen haben, nur einige Formularelemente in den entsandten Code enthalten ...]

Dieser Code nie ausgeführt:

$_SESSION['username'] = $_POST['username']; 

Weil Sie nie das Formular zu dieser Seite veröffentlichen. Sie per Post an eine andere Seite:

<form action="BAMainPage.php" method="post"> 

So auf BAMainPage.php ist, wo Sie $_POST['username'] zugreifen würde. Im Grunde brauchen Sie in dieser Interaktion überhaupt keinen Sitzungsstatus zu verwenden. Die Formularwerte werden direkt an BAMainPage.php gesendet.

Verwandte Themen