2014-09-29 65 views
-1

嗨,我正在一個簡單的PHP註冊。但每次我提交註冊頁面時,我都會看到一個空白屏幕,沒有錯誤,沒有顯示。執行php代碼後變白屏幕

的代碼在我的PHP文件是:

<?php 

if($_SERVER['REQUEST_METHOD']=="POST"){ 
$IP = //my hostname 
$dbuser = "my user id"; 

$conn = new mysqli_connect($IP, $dbuser, "","my databse name"); 
if(! $conn) 
{ 
    die('Could not connect: ' . mysqli_error()); 
} 

$name = $_POST['name']; 
$phone = $_POST['phone']; 
$email = $_POST['email']; 
$pass1 = $_POST['pass1']; 
$pass2 = $_POST['pass2']; 
$address = $_POST['address']; 


$query = "SELECT email FROM user where email='".$email."'"; 
$result = mysqli_query($conn,$query); 
$numResults = mysqli_num_rows($result); 

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) // Validate email address 
     { 
      $message = "Invalid email address please type a valid email!!"; 
     } 


     elseif($numResults>=1) 
     { 
      $message = $email." Email already exist!!"; 
     } 


else 
     { 
      mysqli_query("(insert into user(name,phone_number, email,pass1, pass2, address) values 
      ('".$name."','".$phone."', '".$email."', '".$pass1."','".$pass2."','".$address."')"); 


      echo $message = "Signup Sucessfully!!"; 
     } 


mysqli_close($conn); 

} 

print_r(error_get_last()); 

?> 

存在,因爲我使用其他頁面這種連接方法,他們都工作正常建立連接沒有問題。另外我應該指定目前我正在使用雲9,而我的mysql數據庫是在雲9本身。

請幫我明白這個麻煩。然後

+1

使用錯誤報告, 的error_reporting(E_ALL); ini_set('display_errors',1); – Prasad 2014-09-29 08:39:51

+0

使用在代碼的頂部來查看錯誤 <?php error_reporting(E_ALL); ?> – 2014-09-29 08:39:56

+0

如果您的網頁存在語法錯誤,則上述提示將無法使用。 – 2014-09-29 08:42:23

回答

0

把這個在你的腳本

ini_set('display_errors', '1'); 

這的第一行會在頁面上顯示的錯誤,你將能夠看到什麼錯誤。

而且而非IP地址嘗試「localhost」的

$conn = new mysqli_connect("localhost", $dbuser, "","my databse name"); 

如果數據庫是在同一臺機器,這可能解決你的問題上。

0

此外,你的代碼是令人難以置信的不安全和遭受SQL注入。請考慮以下幾行:

$email = $_POST['email']; 

$query = "SELECT email FROM user where email='".$email."'"; 

基本上你把任何用戶傳入你的SQL語句。如果他輸入「'OR 1; DROP TABLE user」,該怎麼辦?你會失去所有的數據。

請閱讀有關SQL注入和使用PDO:

+0

因爲你在查詢的開始和結束時使用了雙引號'''',所以不需要轉義'$ email' ,也不是OP的問題的一個awnser – Azrael 2014-09-29 08:48:42

+0

謝謝你的建議,我一定會實現它,但現在我只是想學習一些東西,這個空白的屏幕根本沒有幫助我......( – ritika 2014-09-29 08:52:47

+0

你做的需要轉義'$ email',這是維基百科頁面上解釋的情況之一,你可以使用'mysqli :: real_escape_string',或者更好的語句:http://php.net/manual/en/mysqli.quickstart .prepared-statements.php – olvlvl 2014-09-29 08:54:19

1

你說你的線42具有插入查詢。我想你的意思是這個查詢:

mysqli_query("(insert into user(name,phone_number, email,pass1, pass2, address) values 
     ('".$name."','".$phone."', '".$email."', '".$pass1."','".$pass2."','".$address."')"); 

由於你的錯誤說「2參數預期」,你在這裏丟失你的連接參數。你應該有這樣的:

mysqli_query($conn, "(insert into user(name,phone_number, email,pass1, pass2, address) values 
     ('".$name."','".$phone."', '".$email."', '".$pass1."','".$pass2."','".$address."')"); 
+0

是的,我得到了那個......我應得的積極報價 – ritika 2014-09-29 09:05:18