Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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
Javascript 在PHP中,当按下后退按钮时,如何停止显示警报框?_Javascript_Php - Fatal编程技术网

Javascript 在PHP中,当按下后退按钮时,如何停止显示警报框?

Javascript 在PHP中,当按下后退按钮时,如何停止显示警报框?,javascript,php,Javascript,Php,我的PHP代码工作正常,但问题是,当我按下后退按钮时,警报对话框再次出现。登录时需要“警报”对话框,该对话框工作正常。但当我按下后退按钮时,它再次显示警报框 <?php if($_POST){ $host = "localhost"; $user = "root"; $pass = ""; $db = "erp"; $userId = $_POST['myusername']; $password = $_POST['mypasswor

我的PHP代码工作正常,但问题是,当我按下后退按钮时,警报对话框再次出现。登录时需要“警报”对话框,该对话框工作正常。但当我按下后退按钮时,它再次显示警报框

<?php

if($_POST){
    $host = "localhost";
    $user = "root"; 
    $pass = "";
    $db = "erp";

    $userId = $_POST['myusername'];
    $password = $_POST['mypassword'];
    $conn = mysqli_connect($host,$user,$pass,$db);

    $query = "SELECT * from user where user_id='$userId'";
    $result = mysqli_query($conn,$query);
    $num = mysqli_num_rows($result);
    $row = mysqli_fetch_assoc($result);

        if($row["user_id"]==$userId){
            if($row["password"]==$password){     //when user_id and password 
                                                 //match, go to check 
                                                   //usertype
                switch($row["user_type_id"]){
                    case 1: session_start();
                            $_SESSION['erp']='true';
                            header('location:acc_setting.php');
                            break;
                    case 2: session_start();
                            $_SESSION['erp']='true';
                            header('location:dashboard.php');
                            break;
                    case 3: session_start();
                            $_SESSION['erp']='true';
                            header('location:c_course.php');
                            break; 
                }
            }
            else{
                echo '<script language="javascript">';
                echo 'alert("Invalid Password")';
                echo '</script>';
            }
        }
        else{
                echo '<script language="javascript">';
                echo 'alert("Invalid Username")';
                echo '</script>';
        }
}
?>

忽略我在评论中提到的安全问题,并具体回答您随后的问题
我如何设置会话变量并将其重定向到同一页面
以下内容可能会有所帮助。我在几个地方做了简化,但基本上大部分都是一样的

<?php
    if( $_POST ){

        session_start();

        $host = 'localhost';
        $user = 'root'; 
        $pass = '';
        $db = 'erp';
        $conn = mysqli_connect( $host, $user, $pass, $db );



        $destinations=array(
            1   =>  'acc_setting.php',
            2   =>  'dashboard.php',
            3   =>  'c_course.php'
        );



        $userId = $_POST['myusername'];
        $password = $_POST['mypassword'];


        /*
            This should be a prepared statement
            ->  $sql='select `password` from `users` where `user_id`=?';
            ->  $stmt=$conn->prepare( $sql );
            ->  $stmt->bind_param('s',$userid );
            etc etc

            The passwords should be hashed in the db using password_hash
            and verified in PHP using password_verify

            NEVER store plain text passwords
        */

        $query = "SELECT * from user where user_id='$userId'";


        $result = mysqli_query($conn,$query);
        $num = mysqli_num_rows($result);
        $row = mysqli_fetch_assoc($result);

            if( $row['user_id']==$userId ){
                /*
                    this should be password_verify 
                */
                if( $row['password']==$password ){

                    $_SESSION['erp']='true';

                    exit( header( sprintf( 'Location: %s', $destinations[ $row['user_type_id'] ] ) ) );

                } else{
                    $_SESSION['error']='Invalid Password';
                }
            } else{
                $_SESSION['error']='Invalid Username';
            }

            /*
                An error must have occurred, redirect back to oiginal page
            */
            exit( header( sprintf('Location: %s', $_SERVER['SCRIPT_NAME'] ) ) );
    }
?>

您有比警报更令人担忧的问题要处理-看起来您正在数据库中存储纯文本密码!!此外,上述问题容易受到SQL注入的影响。为了避免您面临的问题,设置会话变量并重定向回同一页面,而不是立即调用javascript,然后测试该会话,然后调用javascriptOne另一件事:最好是简单地让用户知道用户名或密码是错误的,而不是一个或另一个,因为它可能会泄漏有关有效UsersHanks的信息,但是如何设置会话变量并将其重定向到同一页面?
<form>
    <!--
        various form elements
    -->
    <?php
        if( !empty( $_SESSION['error'] ) ){
            echo $_SESSION['error'];
            unset( $_SESSION['error'] );
        }
    ?>
</form>