-2

非常に奇妙なことが起こりました。コンピューターでログインスクリプトが正常に機能していました。ホスティングを使用して、すべてのデータベースと新しいサイトを新しいテスト サーバーに再アップロードしました。ただし、ログインして送信を押すと、ユーザー名とパスワードが var_dump であるかのように上部に表示されます。

これには何か理由がありますか?

これが示すものです

string(3) "s17" string(32) "PASSWORD HASH HERE"

助けてくれてありがとう。

編集。申し訳ありませんが、コードは少し長くなります。古い mysql_* を使用している理由をおっしゃるのを承知していますが、すぐに PDO に移行する予定です。現在学習中です。

<?php

// Start Session to enable creating the session variables below when they log in
session_start();
// Force script errors and warnings to show on page in case php.ini file is set to not display them
//error_reporting(E_ALL);
//ini_set('display_errors', '1');
//-----------------------------------------------------------------------------------------------------------------------------------
// Initialize some vars


include 'connect_to_mysql.php';


    $var_error="";  
    if (isset($_SESSION['error'])) {

         $var_error = $_SESSION['error'];
        unset($_SESSION['error']);
        $error_check_tok = "error_overlay();";

    }else{
            unset($_SESSION['error']);

    }




$login_username = '';
$login_password = '';
if (isset($_POST['login_submit'])) {

    $login_username = $_POST['login_username'];
    $login_password = $_POST['login_password'];

    $login_username = stripslashes($login_username);
    $login_password = stripslashes($login_password);

    $login_username = strip_tags($login_username);
    $login_password = strip_tags($login_password);



    // error handling conditional checks go here
    if ((!$login_username) || (!$login_password)) { 

       $reg_error = "you did not enter both Username and Password, Please try again.";
       $_SESSION['error'] = $reg_error;
       header("Location: index.php");

    } else { // Error handling is complete so process the info if no errors
        include 'connect_to_mysql.php'; // Connect to the database

        $login_username = mysql_real_escape_string($login_username); // After we connect, we secure the string before adding to query
        $login_password = mysql_real_escape_string($login_password); // After we connect, we secure the string before adding to query

        $login_password = md5($login_password); // Add MD5 Hash to the password variable they supplied after filtering it
        var_dump($login_username);
        var_dump($login_password);
        // Make the SQL query
        $sql_users = mysql_query("SELECT * FROM users WHERE username='$login_username' AND password='$login_password' AND account_activated='1'", $general); 
        $login_check = mysql_num_rows($sql_users);
        // If login check number is greater than 0 (meaning they do exist and are activated)
        if($login_check >= 1){ 
                while($row_users = mysql_fetch_array($sql_users)){

                    // Pleae note: Adam removed all of the session_register() functions cuz they were deprecated and
                    // he made the scripts to where they operate universally the same on all modern PHP versions(PHP 4.0  thru 5.3+)
                    // Create session var for their raw id
                    $user_id = $row_users["user_id"];   
                    $user_no_of_logins = $row_users["no_of_logins"];
                    $user_online = $row_users["online"];

                    $_SESSION['user_id'] = $user_id;
                    // Create the idx session var
                    $_SESSION['idx'] = base64_encode("g4p3h9xfn8sq03hs2234$id");
                    // Create session var for their username
                    $login_username = $row["login_username"];
                    $_SESSION['login_username'] = $login_username;
                    // Create session var for their password
                    $login_userpass = $row["login_password"];
                    $_SESSION['login_userpass'] = $login_userpass;


                    //$sql_login_check = mysql_num_rows($sql_login);
                    if($user_no_of_logins == "0"){

                        mysql_query("UPDATE users SET first_login=now() WHERE user_id='$user_id' LIMIT 1", $general);

                    }

                    if($user_online == "0"){

                       mysql_query("UPDATE users SET online = '1' WHERE user_id='$user_id' LIMIT 1", $general); 
                       mysql_query("UPDATE system SET no_online = no_online + 1", $system);
                    }


                    mysql_query("UPDATE users SET last_login=now() WHERE user_id='$user_id' LIMIT 1", $general);  
                    mysql_query("UPDATE users SET no_of_logins = no_of_logins + 1 WHERE user_id='$user_id' LIMIT 1", $general); 
                    mysql_query("UPDATE system SET total_logins = total_logins + 1", $system);




                } // close while

                // Remember Me Section
                if(isset($_POST['login_remember'])) { 
                     $encryptedID = base64_encode("g4enm2c0c4y3dn3727553$user_id");
                     setcookie("idCookie", $encryptedID, time()+60*60*24*100, "/"); // Cookie set to expire in about 30 days
                     setcookie("passCookie", $login_password, time()+60*60*24*100, "/"); // Cookie set to expire in about 30 days

                }

                // All good they are logged in, send them to homepage then exit script
                header("Location: overview.php");

        } else { // Run this code if login_check is equal to 0 meaning they do not exist
            $reg_error = "Login Inputs Incorrect, Please try again.";
            $_SESSION['error'] = $reg_error;
            header("Location: index.php");
        }


    } // Close else after error checks

} 

?>
4

2 に答える 2

2

まあ、それはまさにそこにあります:

<blink>
           vvvvvvvvvvvvvvvvvvvvvvvvvv
---------> var_dump($login_username); <---------
---------> var_dump($login_password); <---------
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
                                        </blink>

これが別のシステムに表示されなかった理由は、出力がそのシステムでバッファリングされた可能性があります。新しいシステムでは、出力はバッファリングされないため、上記が出力され、リダイレクトヘッダーはバッファリングされません。その理由については、https://stackoverflow.com/a/8028987/476をお読みください。

于 2012-10-03T01:57:31.337 に答える
0

「あたかも私がvar_dumpであるかのように、ユーザー名とパスワードを上部に表示するだけです。」

これは、ユーザー名とパスワードを呼び出しているためです。var_dump

コードから以下を削除すると、ユーザー名とパスワードの var ダンプが停止します。

var_dump($login_username);
var_dump($login_password);
于 2012-10-03T01:59:11.540 に答える