我正在做一个项目,在其中输入您需要用户名和密码的管理页面。一旦用户名和密码被更正或重定向到其他任何页面,其中任何一个都是不正确的,就会创建会话。 我的代码是:
<?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; 而且我不知道接下来该做什么。请建议!!!
答案 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语句。