用户会话和显示用户信息

时间:2014-06-25 13:11:24

标签: php html css session usersession

我正在做一个项目,在其中输入您需要用户名和密码的管理页面。一旦用户名和密码被更正或重定向到其他任何页面,其中任何一个都是不正确的,就会创建会话。 我的代码是:

<?php

    include_once './connection.php'; 
    file_exists("connection.php");

    $username = $_POST['username'];
    $password = $_POST['password'];


    $query=pg_query("select password from users where username like '".$username."' ");

    $mypassword=pg_fetch_object($query)->password;

    if(($password==$mypassword)and($mypassword!=null)){
        $_SESSION["username"]="username";
        $_SESSION["password"]="passwoed";
        header("location:admin_page.php");
    }

    else{  
        header("location:attempt.php");
    }


    pg_close($connection); 


?>

在管理页面中,我的代码是:

<?php
    session_start();    
    if(!isset($_SESSION["username"])){
        header("location:homepage.php");
    }
?>

<!DOCTYPE html>
<html>
<title>Project</title>
<body>
<div id="loginContainer" align='center'>
    <font color='white'>Logged In As: <?php echo $_SESSION["username"]; ?></font>       </div>
</body>

事情是我无法在管理页面直接重定向到主页。会话注册有问题吗?但是,如果我改变PHP代码,我在管理页面上:

<?php
    session_start();    
    if(isset($_SESSION["username"])){
        header("location:homepage.php");
    }
?>

我想通过$_SESSION[] supervariable显示我保存的用户名。我收到错误消息为Notice: Undefined index: username in C:\xampp\htdocs\admin_page.php.

先谢谢


我改变了你告诉我的代码。

但是我是否写作

<?php
    session_start();    
    if(!isset($_SESSION["username"])){
        header("location:homepage.php");
    }
?>

<!DOCTYPE html>
<html>
<title>Project</title>
<body>
<div id="loginContainer" align='center'>
    <font color='white'>Logged In As: <?php echo $_SESSION["username"]; ?></font>       </div>

OR

<?php
    session_start();    
    if(!isset($_SESSION["username"])){
        header("location:homepage.php");
    }
?>

<!DOCTYPE html>
<html>
<title>Project</title>
<body>
<div id="loginContainer" align='center'>
    <font color='white'>Logged In As: <?php echo $username; ?></font>       </div>
</body>

我得到了同样的错误。 &#34;注意:未定义的索引:C:\ xampp \ htdocs \ admin_page.php中的用户名。&#34; 而且我不知道接下来该做什么。请建议!!!

3 个答案:

答案 0 :(得分:3)

以上代码在我将代码更改为:

时起作用
<?php

    session_start();
    include_once './connection.php'; 
    file_exists("connection.php");

    $username = $_POST['username'];
    $password = $_POST['password'];


    $query=pg_query("select password from users where username like '".$username."' ");

    $mypassword=pg_fetch_object($query)->password;

    if(($password==$mypassword)and($mypassword!=null)){
        $_SESSION["username"]=$username;//instead of "username"
        $_SESSION["password"]=$password;
        header("location:admin_page.php");
    }

    else{  
        header("location:attempt.php");
    }


    pg_close($connection); 


    ?>

谢谢Geseft。

答案 1 :(得分:0)

更新以下显示的部分代码

if(($password==$mypassword)and($mypassword!=null)){
    $_SESSION["username"]="username";
    $_SESSION["password"]="passwoed";
    header("location:admin_page.php");
}

if(($password==$mypassword)and($mypassword!=null)){
    $_SESSION["username"]= $username;
    $_SESSION["password"]= $password;
    header("location:admin_page.php");
}

如果您想使用已发布的值以及$_SESSION["username"]设置$_SESSION["password"],则必须使用$username$password,因为您在这些变量中获得了已发布的值。

答案 2 :(得分:0)

首先解决问题:如果要将变量设置为session,则必须初始化session:

<?php

    session_start();
    include_once './connection.php'; 
    file_exists("connection.php");

    $username = $_POST['username'];
    $password = $_POST['password'];


    $query=pg_query("select password from users where username like '".$username."' ");

    $mypassword=pg_fetch_object($query)->password;

    if(($password==$mypassword)and($mypassword!=null)){
        $_SESSION["username"]=$username;
        $_SESSION["password"]=$password;
        header("location:admin_page.php");
    }

    else{  
        header("location:attempt.php");
    }


    pg_close($connection); 


    ?>

之后你也可以编辑admin_page:

<?php
    session_start();    
    if(!isset($_SESSION["username"])){
        header("location:homepage.php");
    }
else {
?>

<!DOCTYPE html>
<html>
<title>Project</title>
<body>
<div id="loginContainer" align='center'>
    <font color='white'>Logged In As: <?php echo $_SESSION["username"]; ?></font>       </div>
</body>
<?php 
 } 
?>

正如我在评论中所述,如果您没有获得“用户名”变量,则会设置头文件,但页面的其余部分也会“呈现”。这就是为什么我包含了一个else语句。