【发布时间】:2016-10-03 17:59:26
【问题描述】:
这个问题真的让我很难受。我有 4 个文件,一个用于数据库配置,另一个用于登录页面,第三个用于登录处理,另一个用于成功登录后的重定向) 这是我的 db-connect.php:
<?php
$servername = "localhost";
$username = "dbroot";
$password = "dbpassword";
$dbname = "dbname";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
?>
我的 user-login.php 中的表单:
<form action="includes/login-process.php" id="login" class="formoid-metro-black" style="background-color:transparent;font-size:14px;font-family:'Open Sans','Helvetica Neue','Helvetica',Arial,Verdana,sans-serif;color:#FFFFFF;max-width:400px;min-width:150px; float:right;" method="post" enctype="multipart/form-data"><div class="title"><h2>Log In</h2></div>
<div class="element-input"><label class="title">Username<span class="required">*</span></label><input class="large" type="text" name="username" required="required"/></div>
<div class="element-password"><label class="title">Password<span class="required">*</span></label><input class="large" type="password" name="password" value="" required="required"/></div>
<div class="submit"><input type="submit" name="submit" value="Log In"/></div></form><script type="text/javascript" src="forms/sign-up-form_files/formoid1/formoid-metro-black.js"></script>
login-process.php:
<?php include ("db-connect.php");
if(isset($_POST['submit'])){
$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['password']);
$encrypt = md5($password);
$userquery = "SELECT * FROM user WHERE `user-username`='$username' AND `user-password`='$password'";
$run = mysqli_query($conn,$userquery);
if(mysqli_num_rows($run)>0){
$_SESSION['username']=$username;
?>
<script>alert('Login successful.')</script>
<script>window.open('../user-profile.php','_self')</script>
<?php
}
else {
?>
<script>alert('Username or Password Incorrect.','_self')</script>
<script>window.open('../user-login.php','_self')</script>
<?php
}
}
?>
在我的登录页面中,在我成功登录后,脚本警报成功证明,但是,当 user-profile.php 打开时(我将 session_start() 放在顶部),它直接运行条件在 if 语句中,忽略我已经成功登录的事实。 这是我的 user-profile.php:
<!DOCTYPE html>
<?php
session_start();
if(!isset($_SESSION['username'])){
?>
<script> alert('Please Log-in first.','_self')</script>
<?php include_once('user-login.php');
}
else {
$first_name= $_SESSION['fname'];
$first_name= ucfirst($first_name);
?>
//rest of my code
上面的代码应该运行 else 语句中的内容,但是我一直收到警报以首先登录。 (只需忽略 $firstname 代码,我想将其用于下面的输出)。你们中有人对此有任何想法吗?如果是这样,请帮助我。谢谢!
【问题讨论】:
-
您是否设置了
$_SESSION['username']的值? -
是的,参考我的 login-process.php 代码
-
您确定要公开您的真实数据库用户名和密码吗?
-
仅用于教育目的没关系
-
每个想要使用 SESSION 的脚本都必须在该脚本的顶部执行
session_start();。