簡體   English   中英

在PHP的if / else語句中訪問時變量超出范圍

[英]Variable out of scope when accessed in if/else statement in PHP

我是PHP腳本的新手,來自Java背景。 到目前為止,這是一件微不足道的事情,對我來說已經變成了腦筋急轉彎。 所以這是問題所在,我為變量分配了一些值,並且當嘗試在if / else語句中使用該值時,該變量實際上並未將先前分配的值賦予該值。 這是代碼:-

<?php
    session_start();

    $email = $_POST["Email"];   
    $password = $_POST["Password"];

    $db_username="root";
    $db_password="root";
    $database="mydb";
    $localhost = "mysql";

    $con = mysql_connect($localhost,$db_username,$db_password);
    mysql_select_db($database,$con) or die( "Unable to select database");

    $query = "select * from photobook.users where email ='$email' and password ='$password';" ;

    $result = mysql_query($query);

    $num=mysql_num_rows($result);

    if($num == 1){
        while($row = mysql_fetch_array($result))
             {
                $_SESSION['email'] = $row['email'];

                $_SESSION['username'] = $row['username'];   
             }

        header("location: home.php");

    }

    else{

        include "photoBookProtocol.php";

                print "<br>email value after photobookprotocol file include is $email";
                print "<br>password value after photobookprotocol file include is $password";

        $obj=new Protocol();

        $var = $obj->loginCheck($email,$password);

                print "value of var received is $var";

        if($var == 0){
            session_destroy();
                        print "<br>user does not exist";
            //header("location: login.php");
        }
        else{
            $_SESSION['email'] = $var[0];
            $_SESSION['username'] = $var[1];
            print "<br>user exists";
            header("location: home.php");

        }   
    }

    mysql_close($con);
?>

因此,當我在“ else”子句中的loginCheck($ email,$ password)中傳遞$ email和$ password時,沒有任何傳遞。 知道為什么會這樣嗎?

您的變量作用域沒有問題,因此:

  • POST數據中沒有任何內容
  • 包含將覆蓋兩個變量
  • loginCheck()接收到正確的變量,但是函數中存在錯誤

附帶說明,由於您的腳本依賴於POST數據,因此在繼續操作之前,您應該有一個條件來檢查是否存在所需的數據:

if(isset($_POST['Email'], $_POST['Password']))
{
    // something posted
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM