【发布时间】:2018-08-19 03:22:49
【问题描述】:
我试图在 xammp 上注册网站,但看起来 $_SESSION 不起作用。我有 session_start();在每个文件上。这是我的文件。我希望你能帮助我:)
我还有一些 index.php,其中只有 2 个重定向按钮到 register.php 和 login.php(它不完整)
这是我的 register.php:
<?php
session_start();
$db = mysqli_connect("localhost", "root", "", "login");
if(isset($_POST['reg_btn'])) {
$username = $_POST['username']; //here I also tried with $_SESSION but it doesn't work
$email = $_POST['email']; //
$password = $_POST['password']; //
$password2 = $_POST['password2']; //
if ($password == $password2){
$password = md5($password);
$sql = "INSERT INTO users(username, email, password) VALUES('$username', '$email', '$password')";
mysqli_query($db, $sql);
$_SESSION['message'] = "You are logged in!";
$_SESSION['username'] = $username;
header("location:home.php");
}else{
$_SESSION['message'] = "The passwords doesn't match!";
}
}
?>
<html>
<head>
<title>Login Page</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="header">
<h1>Register</h1>
</div>
<div id="frm">
<form action="register.php" method="POST">
<table>
<tr>
<td><label>Email:</label></td>
<td><input type="email" name="email" class="textInput" /></td>
</tr>
<tr>
<td><label>Username:</label></td>
<td><input type="text" name="username" class="textInput" /></td>
</tr>
<tr>
<td><label>Password:</label></td>
<td><input type="password" name="password" class="textInput"/></td>
</tr>
<tr>
<td><label>Password Confirmation:</label></td>
<td><input type="password" name="password2" class="textInput"/></td>
</tr>
<tr>
<td><input type="submit" name="reg_btn" value="Register"/>
</tr>
</table>
</form>
</div>
</body>
</html>
这是我希望在其中显示会话变量的 home.php:
<?php
session_start();
?>
<html>
<head>
<title>Home Page</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="header">
<h1>Welcome <?php echo ",".$_SESSION['username'];?></h1>
</div>
</html>
【问题讨论】:
-
您是否遇到任何错误?您可能还想考虑使用 password_hash 函数来加密您的密码
-
在一个文档中尝试
<?php session_start(); $_SESSION['foo'] = 'bar';,然后在另一个文档中:<?php session_start(); var_dump($_SESSION);以查看值是否仍然存在。 -
(您也可以考虑使用准备好的查询。)
-
我可能会使用以前使用的用户名劫持其他用户的会话/帐户。
-
@chinloyal 不,我没有收到错误。这个“密码 = md5($password);”是密码哈希不是吗?