2015-04-08 78 views
-3

這是我在網站上的第一篇文章,所以讓我知道如果我做錯了什麼。反正我的問題。變量與價值評估爲false

我一直在爲我正在處理的應用程序開發登錄/註冊腳本。當他們的電子郵件被提供給腳本時,註冊過程將被觸發。但我似乎遇到了一個我不明白的問題。

$Username = $_REQUEST['Username']; 
    $EnteredPassword = $_REQUEST['Password']; 
    $Email = $_REQUEST['Email']; 

    if (!empty($Email))//Checks for email necessary for sign up 
    { 
    //Preform Sign Up Stuff 
    } 
    else 
    { 
    //Preform Login Stuff 
    } 

由於某種原因,if語句的計算結果爲false,即使我POST了Email的值。爲什麼會發生?有沒有更好的方法來檢查價值是否提供?

+0

怎麼樣'如果(isset($電子郵件) )'。這將檢查是否設置了該值,主要是爲了檢查您是否有一定的價值。請出示表格。 – UserProg

+2

請向我們顯示您的html表格 – Rizier123

+0

在@ Rizier123說的基礎上,您不應該使用'$ _REQUEST'。你應該使用什麼形式的方法,即'$ _POST'或'$ _GET' – Darren

回答

3

既然您還沒有提供您的HTML表單來與您的PHP,我提交以下。

如果您的HTML表單不包含以下內容或類似內容,包括每個表單都帶有名稱屬性且沒有拼寫錯誤的表單元素,則不應有任何失敗原因。

諾塔:name="Username"name="username"是兩種不同的動物完全。

<form action="handler.php" method="post"> 
Username: 
<input type="text" name="Username"><br> 
Password: 
<input type="password" name="Password"><br> 
Email: 
<input type="text" name="Email"><br> 
<input type="submit" name="submit" value="Submit"> 
</form> 

此外,在註釋中規定,你最好使用表單的實際方法。如果省略,表單默認爲GET,因此當使用POST方法時,它應該明確包含在其中。

重要旁註:

使用GET通過互聯網發送的信息,是不是安全的;特別是對於密碼。


要進行調試,請使用錯誤報告。

error reporting添加到您的文件的頂部,這將有助於發現錯誤。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

旁註:錯誤報告只應在分期完成,並且從不生產。


參考文獻:


「有沒有更好的方法檢查值是否提供?「

  • 使用條件empty()是好的,這是你現在正在做什麼

  • 可以釘在有條件isset()還可以,但不是必需的。請參閱下面的鏈接這件事。



$Username = $_POST['Username']; 
$EnteredPassword = $_POST['Password']; 
$Email = $_POST['Email']; 

if (!empty($Email)) //Checks for email necessary for sign up 
{ 
// Perform Sign Up Stuff 
} 
else 
{ 
// Perform Login Stuff 
} 

或:

if (!empty($_POST['Email'])) 
{ 
// Perform Sign Up Stuff 
} 
else 
{ 
// Perform Login Stuff 
} 
+0

出於某種原因,我沒有檢查名稱的大小寫。我現在感到很蠢。但是,無論如何,我不知道'error_reporting()'函數是一件事情。謝謝 – PeasB

+0

@PeasB啊,就是這樣。我很高興知道我能夠爲您提供解決方案,*歡呼聲* –