Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.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 isset无法使用提交按钮_Php_Html_Post_Form Submit_Isset - Fatal编程技术网

php isset无法使用提交按钮

php isset无法使用提交按钮,php,html,post,form-submit,isset,Php,Html,Post,Form Submit,Isset,我正在尝试使用php创建一个登录页面,我希望我的代码在按下登录按钮后检查给定的用户名和密码。但即使未按下登录按钮,代码也会执行。我在网上搜索了几十个代码,几乎所有的代码都是用这种方式实现的,所以我不明白这里出了什么问题。这是我的密码: <HTML> <HEAD> <TITLE>Welcome to FoodOrder - Log In or Sign Up</TITLE> </HEAD> <

我正在尝试使用php创建一个登录页面,我希望我的代码在按下登录按钮后检查给定的用户名和密码。但即使未按下登录按钮,代码也会执行。我在网上搜索了几十个代码,几乎所有的代码都是用这种方式实现的,所以我不明白这里出了什么问题。这是我的密码:

<HTML>
    <HEAD>
        <TITLE>Welcome to FoodOrder - Log In or Sign Up</TITLE>

    </HEAD>
    <BODY background = "foodOrder.png">

        <?php
        session_start();
        $con = mysqli_connect("xxxx", "xxxx", "xxxx", "xxxx");

        if(mysqli_connect_errno()){
            echo "Failed to connect, please check your username and password: ".mysqli_connect_error();
        }

        if(isset($_SESSION['user'])!= ""){
            header("Location: home.php");
        } 

        if(isset($_POST["login_button"])){
            $username = mysqli_real_escape_string($_POST['username']);
            $password = mysqli_real_escape_string($_POST['password']);
            $sql = "SELECT password from user where username  = '$username'";
            $res = mysqli_query($con,$sql);
            $row = mysqli_fetch_array($res);
            if($row['password'] == md5($password)){
                $_SESSION['user'] = $username;
                header("Location : home.php");
            } else {
                ?> <script>alert('wrong username or password');</script> <?php
            }
        }


        ?>

        <center>
            <div id ="login form">
                <form  method = "POST">
                    <table align = "center" width = "25%" border = "0">
                        <tr>
                            <td><input type = "text" name = "username" placeholder = "your_username_here" required></td>
                        </tr>
                        <tr>
                            <td><input type = "text" name = "password" placeholder = "your_password_here"></td>
                        </tr>
                        <tr>
                            <td><input type = "submit" name = "login_button"  value = "Log In" /></td>
                        </tr>
                        <tr>
                            <td><a href = "register.php">Sign Up</a></td>
                        </tr>
                    </table>
                </form>
            </div>
        </center>

    </BODY>



</HTML>

欢迎来到FoodOrder-登录或注册

通过删除
md5
一次来检查代码。
$\u会话
变量工作不正常

也可以试着更换这个

 if(isset($_SESSION['user'])!= ""){
            header("Location: home.php");
        }
用这个

if(!$_SESSION['user']){
            header("Location: home.php");
        }

我希望这些不是你真正的证件。。如果未按
登录
,将执行哪个代码?您也不应该逃避不进入数据库的输入,带有引号的密码将以这种方式被错误地散列。您也不应该使用
md5
作为密码。尽管进行了编辑,如果这些是您的凭据,请重置您的帐户。凭据可能已被破坏,并且仍存在于修订版中。@chris85它将正确地发送到数据库,但它错误地保存在会话中。请在我的系统中更正@chris85
:D
。这段代码运行得很好。为什么在isset中有感叹号
isset(!$\u会话['user'])
它将检查$\u会话变量是否有任何内容。非常确定这是一个错误。E_COMPILE_错误:键入64--无法对表达式的结果使用isset()(您可以改为使用“null!==expression”),谢谢您的回复,但它对我不起作用。它可能处理将来的错误,但是运行时仍然认为按钮被按下(即使没有),并且在if(isset…)语句之后继续。