提交表单后使用会话返回空白页面的PHP登录

时间:2015-02-27 18:53:52

标签: php session

我想要使用会话登录我已经尝试了但是没有工作。

的index.php

<?php
session_start();
 ?>
<form method="post" name="login" action="login.php">
<label for="name" class="labelname"> Username </label>
<input type="text" name="username" id="userid" required="required" /><br />
<label for="name" class="labelname"> Password </label>
 <input type="password" name="password" id="passid" required="required"  /><br />
 <input type="submit" name="submit" id="submit"  value="Login" />
 </form>

的login.php

<?php 
include('config.php');
session_start();
{
$user=mysql_real_escape_string($_POST['username']);
$pass=mysql_real_escape_string($_POST['password']);
$fetch=mysql_query("SELECT id FROM `login` WHERE 
                     username='$user' and password='$pass'");
$count=mysql_num_rows($fetch);
if($count!="")
{
session_register("sessionusername");
$_SESSION['login_username']=$user;
header("Location:profile.php"); 
}
else
{
   header('Location:index.php');
}

}
?>

session.php文件

<?php
include('config.php');
session_start();
$check=$_SESSION['login_username'];
 $session=mysql_query("SELECT username FROM `login` WHERE username='$check'     ");
$row=mysql_fetch_array($session);
$login_session=$row['username'];
if(!isset($login_session))
{
header("Location:index.php");
}
?>

PROFILE.PHP

<?php
 include("session.php");
 ?>
 <h3 align="center"> Hellow <?php echo $login_session; ?></h3> 
 <h2 align="center" >Welcome to login system</h2> 
 <h4 align="center">  click here to <a href="logout.php">LogOut</a> </h4>

所以这里有什么错误我的代码,它不起作用,当我点击登录时,它保持空页。请提前感谢。

3 个答案:

答案 0 :(得分:2)

语法错误。

在第4行{之后删除session_start();,在login.php文件末尾删除}

保持这样的代码:

<?php 
    include('config.php');
    session_start();
    $user=mysql_real_escape_string($_POST['username']);
    $pass=mysql_real_escape_string($_POST['password']);
    $fetch=mysql_query("SELECT id FROM `login` WHERE 
                 username='$user' and password='$pass'");
    $count=mysql_num_rows($fetch);
    if($count!="")
    {
        session_register("sessionusername");
        $_SESSION['login_username']=$user;
        header("Location:profile.php"); 
         exit;
    }
    else
    {
        header('Location:index.php');
         exit;
    } 

?>

您是否注意到了差异?

<强>更新

正如Fred -ii-在评论中提到的那样:

  

session_register()函数自PHP 5.3.0开始,此函数已被弃用,自PHP 5.4.0起已被删除


error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告应仅在暂存时完成,而不是生产。

答案 1 :(得分:1)

删除第4行中未使用的“{”和LOGIN.php第21行中的“}”

答案 2 :(得分:0)

为什么需要在session.php中进行检查?将其更改为此,这已经足够,并且不会一直给DB施加压力。

此外,我发现您正在接受第一次登录的培训,您应该学会使用PDO课程。另外,使用prepared statements表示安全性,使用hash密码。只将哈希密码和salt保存到数据库中。

第一次做对,一直做正确。 ;)祝你好运!

<?php
session_start();
if(!isset($_SESSION['login_username'])) {
    header("Location:index.php");
}
?>