Ich lerne PHP (als Hobby) und wollte eine einfache Anmeldeseite zum Üben erstellen.Sitzungsvariablen werden nicht transportiert
Ich habe ein Formular:
<form action="phpAction/checklogin.php" method="POST">
<p>Username:</p>
<input type="text" name="username">
<p>Password:</p>
<input type="password" name="password">
<br><br>
<input type="submit" value="Submit">
<br><br>
<a href="signup.php">You don't have an account yet?</a>
</form>
Posting an den PHP-Code:
<?php
// Starts a MySQLi connection to the database
include "../includes/mysqliConn.php";
// Starts a session to keep the user logged in
session_start();
// Posts the username and password from the form and stores it into a session variable
if (isset($_POST["username"]) && isset($_POST["password"])) {
$_SESSION["username"] = $_POST["username"];
$_SESSION["password"] = $_POST["password"];
} else {
die("You cannot be here!");
}
// Checks login
$checklogin = 'SELECT * FROM users WHERE username = $_SESSION["username"] AND password = $_SESSION["password"]';
$result = $conn->query($checklogin);
if ($result->num_rows = 0){
echo "<script language='javascript' type='text/javascript'>alert('Login and/or password wrong!');window.location.href='login.php';</script>";
die();
} else {
// Variable to other pages see that the user is logged in
$_SESSION["islogged"] = "true";
// Redirects to the homepage
header("Location: ../index.php");
}
?>
Es setzt die Session-Variable "islogged" auf true, so dass andere Seiten können Benutzer-Informationen Diplay.
In der Kopfzeile der Webseite habe ich dies:
<?php
if ($_SESSION["islogged"] == "true") {
echo "<a href='#'>Panel</a>";
echo "<a href='#'>Logout</a>";
} else {
echo "<a href='login.php'>Login</a>";
echo "<a href='#'>/</a>";
echo "<a href='signup.php'>Sign Up</a>";
}
?>
Wenn die Variable „islogged“ auf „true“, sollte die Seite, um den Links-Panel und Logout angezeigt werden, anstelle der Anmeldung und Anmelden Einsen. Aber ich bekomme immer wieder Login und Anmeldung. Es scheint, dass die Sitzungsvariablen nicht "transportiert" werden.
Jede Art von Hilfe wird geschätzt.
PS: Sorry für schlechtes Englisch: P
Dank
1. Sie können keine Variablen setzen * ('$ _SESSION [" username "]') * innerhalb einfacher Anführungszeichen muss es doppelte Anführungszeichen sein. 2. Sie sollten SQL Injection Prevention und vorbereitete Anweisungen mit PDO/Mysqli betrachten – ash
Ich verwende einfache Anführungszeichen, denn wenn ich doppelte Anführungszeichen habe, bekomme ich eine 500 Error –
Sind Sie Aufruf von 'session_start' vor der Überprüfung' $ _SESSION ["islogged" ] 'auf anderen Seiten? –