2012-11-20 153 views
-1

可能重複:
PHP: 「Notice: Undefined variable」 and 「Notice: Undefined index」PHP登錄連接錯誤

我想使用的mysqli連接到MySQL服務器和PHP.Here是我的代碼1的index.html 2- db.php中和3- logedin.php

enter code here 
<form id="myForm" action="PHP/logedin.php" method="POST"> 
<div class="single-field"> 
<label for="eMail">Email:<span class="Star"> *</span></label> 
<input name="eMail" type="text"></input> 
</div> 
<div class="single-field"> 
<label for="psword">Password:</label> 
<input name="psword" type="text"></input> 
</div> 
<button type="button" name="" value="" class="css3button">Login</button> 
</form> 

和db.php中

<?php 
$DB_NAME = 'tblTest'; 
$DB_HOST = 'localhost'; 
$DB_USER = 'root'; 
$DB_PASS = ''; 
$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); 
if ($mysqli->connect_errno) 
{ 
echo "Failed to connect to MySQL:" . $mysqli->connect_error; 
exit(); 
} 
?> 

終於logedin.php是:

<?php 
include_once('db.php'); 
$eMail = mysql_real_escape_string($_POST["eMail"]); 
$passWord = mysql_real_escape_string(md5($_POST["psword"])); 
$query = "SELECT count(*) FROM users WHERE (email ='$eMail' AND pass ='$passWord')"; 
if($query>0) { 
echo "Yes Your Area Welcome."; 
} 
else{ 
echo "No Your Area Not Welcome!."; 
} 
$mysqli->close(); 
?> 

我有表叫用戶,我有兩列電子郵件,並通過有,但我得到這個消息在運行代碼之後: 注意:未定義的索引:第3行的C:\ wamp \ www \ tt \ PHP \ logedin.php中的電子郵件 注意:第4行的C:\ wamp \ www \ tt \ PHP \ logedin.php中的未定義索引:psword 你請讓我知道我在做什麼錯了?

回答

1

他們是隻是注意到這些變量沒有被發現將這些函數應用於它們,這是因爲請求是alr伊迪空的,應該去當你的要求,但是你可以通過變量

<?php 
include_once('db.php'); 
$eMail = mysql_real_escape_string(@$_POST["eMail"]); 
$passWord = mysql_real_escape_string(md5(@$_POST["psword"])); 
$query = "SELECT count(*) FROM users WHERE (email ='$eMail' AND pass ='$passWord')"; 
if($query>0) { 
echo "Yes Your Area Welcome."; 
} 
else{ 
echo "No Your Area Not Welcome!."; 
} 
$mysqli->close(); 
?> 

或通過添加這種頂部

ini_set('display_errors', 'Off'); 
隱藏所有通知/錯誤之前增加一個 @隱藏這些通知
+1

這並不真正解決缺少表單變量的實際問題,它只是隱藏了事實。 )錯誤;它應該覆蓋/包裝消息生成表達式,而不是目標變量 – mario

+0

由於Mario的說法,抑制應該在'mysql_real_escape'上,而不是在變量上 – Ohgodwhy

+0

謝謝Osa我真的很感謝你的時間和完美暗示 – user1760110

1

使用三元的嘗試:

$eMail = (!empty($_POST['eMail'])) ? mysql_real_escape_string($_POST['eMail']) : null; 
$passWord = (!empty($_POST['psword'])) ? mysql_real_escape_string(md5($_POST['psword'])): null; 

警告都不見了,應該在條件語句使用像

if(NULL !== $eMail) // eMail present 

您還可以調試您的帖子變量:

echo '<pre>', print_r($_POST, TRUE), '</pre>'; exit(); 
+0

現在他只是空的變量,沒有任何關於它的說明。 – mario

+0

@mario相反,如果變量爲空,那麼該變量設置爲null,這就是爲什麼我們檢查'if(NULL)...'我錯過了什麼嗎? – Ohgodwhy

+0

當然,您可以通過這種方式輸出自定義錯誤消息。但這並不能真正解釋表單輸入的缺失。 – mario