我遇到的问题是我的简单虚拟表单没有通过它的会话变量。有错误代码
注意:未定义的索引:第8行的... login.php中的用户名
注意:未定义的索引:第9行的... \ login.php中的密码
用户名或密码错误
会话开始 的index.php
<html>
<head></head>
<body>
<?php session_start();?>
<form action="login.php" method="POST">
Username:<input type="text" name="username">
Password:<input type="password" name="password">
<input type="submit" value="Login">
</form>
</body>
</html>
输入的验证将传递给 的login.php
<html>
<head></head>
<body>
<?php
session_start();
$user = "NULL";
$password = "NULL";
$user = $_REQUEST["username"];
$password = $_REQUEST["password"];
if($user == "ali" && $password == "123"){
$_SESSION["$user"] = $user;
echo "Login Successful</br>";
echo '<a href="logout.php">Logout</a>';
}
else{
echo "Wrong username or password</br>";
echo '<a href="index.php">Back</a>';
}
?>
<p>Welcome <?php echo htmlspecialchars($user) ?></p>
</body>
</html>
logout.php
<html>
<head></head>
<body>
<?php session_start();?>
<form action="login.php" method="POST">
Username:<input type="text" name="username">
Password:<input type="password" name="password">
<input type="submit" value="Login">
</form>
</body>
</html>
答案 0 :(得分:1)
- 您正面临未定义索引错误,因为当您直接执行login.php或重新加载login.php或在另一个选项卡中打开它时,那时$_REQUEST
是一个空数组。实际上你的login.php编码是错误的,这就是你得到未定义索引错误的原因。
- 首先session_start()
必须在<!DOCTYPE html>
之前
- $_SESSION["$user"]
错误,请改用$_SESSION['user']
。
- 你为什么使用$_REQUEST
?您的表单方法是POST,因此请使用$_POST
。请参阅$_REQUEST vs $_GET and $_POST
-Session 必须销毁。
- 这是工作代码......
<强> 1。 index.php
<html>
<head></head>
<body>
<form action="login.php" method="POST">
Username:<input type="text" name="username">
Password:<input type="password" name="password">
<input type="submit" value="Login">
</form>
</body>
</html>
<强> 2。的login.php 强>
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
if( isset($_SESSION['user']) ){
echo 'User is already logged in.<br />';
echo '<a href="logout.php">Logout</a>';
}
else {
if( isset($_POST["username"]) && isset($_POST["password"]) ) {
if($_POST["username"] == "ali" && $_POST["password"] == "123"){
$_SESSION["user"] = $_POST["username"];
echo "Login Successful</br>";
echo '<a href="logout.php">Logout</a>';
}
else {
echo "Wrong username or password</br>";
echo '<a href="index.php">Back</a>';
}
}
}
?>
</body>
</html>
第3。 logout.php 强>
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// remove all session variables
session_unset();
// destroy the session
session_destroy();
echo "All session variables are now removed, and the session is destroyed."
?>
</body>
</html>