gpt4 book ai didi

PHP 登录系统/ session 第一次无法正常工作

转载 作者:行者123 更新时间:2023-12-02 22:43:33 27 4
gpt4 key购买 nike

诊断这里的问题有点困难,如果我的描述有点含糊,请见谅。我有一个非常标准的登录系统,它在大多数情况下都运行良好。我今天注意到一个问题,虽然当我重新启动我的浏览器时......它不会让我登录 admin1.php 除非我先访问 admin2.php 然后导航回 admin1.php。

之后一切正常。我可以注销并重新登录就好了。

这是我的两个文件...

admin1.php

<style>
#form_contain {
text-align: center;
}

form {
display: inline-block;
margin: 100px 0 0 !important;
}

label {
display: table-cell !important;
vertical-align: middle;
}

input[type='text'], input[type="password"] {
float: left;
display: table-cell !important;
margin: 0 0 10px;
height: 25px;
width: 260px !important;
}
</style>

<?php
session_start();
include "lib/head.php";

function protect($string)
{
$string = mysql_real_escape_string($string);
return $string;
}

$user = $_SESSION['username'];

if(!$_POST['submit'])
{
if ($_SESSION['logged'] == true) {
include_once("admin_main.php");
}
else {

?>

<div id="form_contain">
<form method="post" action="<?=$_SERVER['PHP_SELF']; ?>">
<label>Username:</label>
<input type="text" name="username" maxlength="16">
<br>
<label>Password:</label>
<input type="password" name="password" maxlength="16">
<br>
<br>
<br>
<input type="submit" name="submit" value="Login" class="btn">
</form>
<p id="alert"></p>
</div>


<?php
}
}
else
{
$user = protect($_POST['username']);
$pass = protect($_POST['password']);

if($user && $pass)
{
$sql="SELECT id,username FROM catalog_users WHERE username='$user' AND password='$pass'";
$query=mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($query) == 1)
{
$row = mysql_fetch_assoc($query); // mysql_fetch_assoc gets the value for each field in the row
$_SESSION['id'] = $row['id']; //creates the first session var
$_SESSION['username'] = $row['username']; // second session var
$_SESSION['logged'] = true;

echo '
<script language="javascript">
window.location = "admin1.php";
</script>";

';

}
else
{
echo '
<script language="javascript">
window.location="admin_wrong.php";
</script>
';
}
}
else
{
echo '
<script language="javascript">
window.location="admin_wrong.php";
</script>
';
}
}
?>

admin2.php

<?php
session_start();
include('lib/head.php');


if (isset($_SESSION['logged']) && $_SESSION['logged'] == true) {
echo "
This is a secured page, welcome <b>".$_SESSION['username']."</b>
<br>
<br>
<a href='admin1.php'>Back</a>
<a href='logout.php'>Logout</a>

";
}
else {
echo "<b>Sorry, you cannot access this page</b>";
}


?>

更新 <?php session_start() 之前的 CSS在我的代码顶部导致了问题

最佳答案

可能是因为您的登录代码位于之后您的 html,所以看起来您没有登录,即使脚本确实在脚本末尾让您登录。<​​/p>

通常,您会希望尽可能将 PHP 和 HTML 分开(在不同的文件中),并首先执行所有 PHP 业务逻辑,然后输出所有 HTML。

关于PHP 登录系统/ session 第一次无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10400889/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com