Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP登录系统/会话是';我第一次不工作_Php_Session_Login - Fatal编程技术网

PHP登录系统/会话是';我第一次不工作

PHP登录系统/会话是';我第一次不工作,php,session,login,Php,Session,Login,诊断这个问题有点困难,如果我的描述有点模糊,那么很抱歉。我有一个相当标准的登录系统,它在大多数情况下运行良好。今天我重新启动浏览器时发现了一个问题。。。除非我先访问admin2.php并导航回admin1.php,否则它不会让我登录到admin1.php 在那之后,一切都很顺利。我可以注销并重新登录 这是我的两个文件 admin1.php <style> #form_contain { text-align: center; } form { display: in

诊断这个问题有点困难,如果我的描述有点模糊,那么很抱歉。我有一个相当标准的登录系统,它在大多数情况下运行良好。今天我重新启动浏览器时发现了一个问题。。。除非我先访问admin2.php并导航回admin1.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>
    ';
}
}
?>
<?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>";
}   


?>

#表格包含{
文本对齐:居中;
}
形式{
显示:内联块;
裕度:100px 0!重要;
}
标签{
显示:表格单元格!重要;
垂直对齐:中间对齐;
}
输入[type='text'],输入[type=“password”]{
浮动:左;
显示:表格单元格!重要;
利润率:0.10px;
高度:25px;
宽度:260px!重要;
}

可能是因为您的登录代码在html之后出现,所以即使脚本在脚本末尾确实让您登录,您也似乎没有登录


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

请停止使用古老的
mysql.*
函数编写新代码。它们不再得到维护,社区已开始恢复。相反,你应该学习并使用或。如果你想学习,也可以<代码>
我对服务器端的东西还是新手。我还得多读一读,谢谢,我第一次尝试将PHP移到HTML之上并没有解决这个问题。就像我告诉@tereško的,我对PHP有点陌生,所以我确信我的代码不是100%的最佳实践。谢谢你的帮助,我会继续玩下去,看看能不能让它工作。我会让你知道的。@RyanGrush另外,如果你想使用PHP重定向,请使用
标题(“Location:blah”)
,但一定要在你向浏览器输出任何内容之前,甚至是空白,因为标题必须先发送。我不认为这是如何重定向的问题,对吗?我试着用一个替换JS重定向,但是没有用。也许我需要找到另一个登录系统解决方案,我在这里有点被难住了。@RyanGrush不,问题是,正如我最初所说的,你的登录代码直到你的HTML输出后才会出现。哇,我说得太快了。我在考试前做了一些CSS