2017-10-08 75 views
-4

我有兩個PHP文件,我已經建立了在線虛擬主機平臺,以便將數據庫集成到我的android應用程序。每當我運行URL:https://wounding-pat.000webhostapp.com/register.php爲了測試register.php代碼是否正確運行,我在瀏覽器上收到以下消息。運行在線虛擬主機php的錯誤

連接成功

說明:未定義指數:姓名/storage/ssd2/158/3185158/public_html/register.php第5行

說明:未定義指數:在電子郵件/存儲/ SSD2 /上線三百十八萬五千一百五十八分之一百五十八/的public_html/register.php 6

說明:未定義指數:密碼/storage/ssd2/158/3185158/public_html/register.php第7行

說明:未定義指數:受試者in/storage/ssd2/158/3185158/public_html/registe r.php第8行

說明:未定義指數:輔導員在/storage/ssd2/158/3185158/public_html/register.php第9行

說明:未定義變量:連接在/存儲/ SSD2 /上線三百十八萬五千一百五十八分之一百五十八/的public_html/register.php 13

警告:mysqli_query()預計參數1是mysqli的,在/storage/ssd2/158/3185158/public_html/register.php空給出在第13行

錯誤

以下是我的init.php c頌

<?php 

$host = "localhost"; 
$database = "id3185158_csetestonlinedb"; 
$username = "id3185158_root"; 
$password = "admin"; 

//$con = mysqli_connect($host, $username, $password, $database); 

if (mysqli_connect($host, $username, $password, $database)) { 

    echo "Connection Successful"; 

} else { 

    echo "Connection Unsuccessful"; 

} 

?>

以下是我的register.php代碼

<?php 

require "init.php"; 

$name = $_POST["name"]; 
$email = $_POST["email"]; 
$password = $_POST["password"]; 
$subject = $_POST["subject"]; 
$counsellor = $_POST["counsellor"]; 

$sql_query = "insert into teachers values('$name', '$email', '$password', '$subject', '$counsellor');"; 

if (mysqli_query($connection, $sql_query)) { 

    echo " Data Inserted"; 

} else { 

    echo " Error"; 

} 

?>

+2

您應該在打開錯誤報告的本地開發環境中進行開發。 init.php不會創建你想在register.php中使用的$連接變量。你不能訪問註冊表。直接PHP沒有得到錯誤,因爲它預計發佈請求(表單數據)。你應該使用準備和參數化的查詢,atm你打開sql注入黑客。 – JimL

+3

該代碼是_wide open_到SQL注入。你需要解決這個問題!在設置sql查詢時,閱讀使用「準備好的語句」與「參數綁定」相結合的好處。 – arkascha

+1

關於手頭的問題:你確定你執行一個HTTP POST請求?如果是這樣,'$ _POST'的轉儲是作爲內容顯示的呢? – arkascha

回答

0
  1. 如果你在瀏覽器地址欄中直接擊中這個URL,這將是GET方法的代碼將無法工作。嘗試像郵遞員這樣的工具來創建POST方法請求以及所需的參數,如電子郵件,密碼,主題,顧問等。
  2. 沒有與您的register.php文件名$連接定義的變量,http://php.net/manual/en/function.mysqli-connect.php函數返回,你應該設置爲$連接變量。
0

如果運行在瀏覽器中的網址,然後它絕對顯示錯誤,因爲您是通過郵寄得到變量。它只有在你發送一個發佈請求來註冊文件時纔會有效。

也嘗試使用isset像

If (isset($_POST[`name`])) { 
$name=$_POST['name' ] ; 
} 

而且運行插入查詢時,值都來了。