私はlearnig PHP(趣味として)ですし、簡単なログインページを構築して練習したいと思っていました。セッション変数が転送されていません
私はフォームを持っている:PHPコードに
<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>
投稿:
<?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");
}
?>
それは他のページは、ユーザーの情報をdiplayことができるようにtrueに "islogged" セッション変数を設定します。私はこれを持っているウェブサイトのヘッダーに
:
<?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>";
}
?>
変数が「真」に設定され、ページが代わりにログインし、サインアップのため、リンクパネルおよびログアウトを表示しなければならない「islogged」ときもの。しかし、私はログインとサインアップを続けています。 セッション変数が "移送されていない"ようです。
何か助けていただければ幸いです。
PS:悪い英語のため申し訳ありません:P
おかげ
1.変数*( '$ _SESSION [" username "]')*を一重引用符で囲むことはできません。二重引用符でなければなりません。 2. SQLインジェクション防止とPDO/Mysqliでの準備文を見てください。 – ash
二重引用符を付けると500エラーが発生するので、一重引用符を使用しています –
$ _SESSION ["islogged"をチェックする前に 'session_start'を呼び出していますか? ] '他のページで? –