2014-09-02 143 views
0

在home.html文件中,我有一個div,當它被點擊時,它會顯示登錄表單,由要登錄的用戶填寫。填寫完表單後,表單的配置應該將其返回到home.html文件。該config.php似乎並沒有工作

我遇到的問題是,當我嘗試填充用戶名和密碼字段的形式並提交時,瀏覽器在config-haslogin.php中停止空白,而不是直接回到home.html文件。

結果是一樣的,當我試圖用錯誤的用戶名和密碼填寫它。

配置,haslogin.php

<?php @session_start(); 
$_SESSION['id']= 0; 
?> 


<?php 
error_reporting(E_ALL^E_NOTICE);  
mysql_connect("mysql.com","usename","password") or die("cannot connect"); 
mysql_select_db("mytable") or die("Fail"); 

$myemail= $_POST['email']; 
$mypassword= $_POST['password']; 

$sql= "SELECT * FROM user WHERE email='".$myemail."' and password='".$mypassword."'"; 
$result=mysql_query($sql); 
$count=mysql_num_rows($result); 
if($count==1) 
{ 
echo "Login successful"; 
echo '<script>window.location="index.html";</script>'; 
} 
?> 
+0

如果您收到空白頁面,請始終首先啓用錯誤報告。或者,查看Web服務器的錯誤日誌。 – 2014-09-02 06:31:24

+0

錯誤抑制和不推薦的擴展,哦,我的! – Phil 2014-09-02 06:32:55

+0

哦對。 'mysql_ *'函數正在被棄用,並將從PHP的未來版本中刪除。不要使用它們來編寫新代碼,而是使用'mysqli_ *'或PDO。 – 2014-09-02 06:34:09

回答

1

這是錯誤的:

echo "Login successful"; 
'<script>window.location="index.html";</script>'; 

你缺少echo語句有:

echo "Login successful"; 
echo '<script>window.location="index.html";</script>'; 

更多,但沒有嚴重,代碼中有問題的部分:

@session_start(); 

抑制錯誤消息不能解決問題,它只是創建新的。當發生錯誤時,您將不會注意到,如果您有適當的錯誤消息,只需幾分鐘,就會花費數小時尋找解決方案。

error_reporting(E_ALL^E_NOTICE); 

這只是房租的一半。它只定義顯示哪些錯誤級別,而不是它們是否顯示。如果錯誤信息被您的主機禁用,您必須執行ini_set("display_errors", true);,否則您什麼也看不到。

您的SQL代碼很容易受到SQL注入的影響。我只需在您的電子郵件字段中輸入「[email protected]」 - 並在不知道密碼的情況下登錄。您應該切換到mysqli_*或PDO並使用準備好的statemens進行查詢。

使用正確的錯誤報告。不要只使用:

or die("cannot connect"); 

代替繼電器實際的錯誤信息,所以你知道爲什麼它沒有工作:

or die("Connection error: " . mysql_error()); 

使用該查詢後,也讓你知道爲什麼一個查詢失敗:

if ($result == false) echo "Query failed: " . mysql_error(); 

PDO和MySQLi具有類似的錯誤報告功能。使用它們。

echo '<script>window.location="index.html";</script>'; 

您不應該使用JavaScript進行重定向。您永遠不知道客戶端是否啓用了JavaScript或者甚至無法啓用JavaScript。做重定向正確的方法是header()功能:

header("Location: index.html"); 
exit(); 

注意header()如果之前絕對沒有輸出纔會工作。甚至沒有空白,換行或其他空格。

+0

不錯的皮卡。用逗號代替分號也會起作用。 – Phil 2014-09-02 06:33:36

+0

它會,但對初學者來說會更難理解。 – 2014-09-02 06:34:39

+1

從根本上來說,不好的代碼應該向初學者解釋,還有很多其他原因,爲什麼不應該這樣寫代碼。 – 2014-09-02 06:35:42