2013-04-07 148 views
0

我已經創建了一個使用PHP的註冊頁面。控制總是進入其他部分('錯誤')。我已經定義了數據庫,使用了與表單域中使用的相同的id,但仍然是相同的。我無法弄清楚這一點。我非常感謝任何幫助。註冊頁面 - PHP錯誤

這裏是我的代碼:

<?php 
require_once 'connectdb.php'; 

$dbc = mysqli_connect($mysql_host, $mysql_user , $mysql_pass , $mysql_db) or die('Error Connecting to database'); 
if (isset($_POST['submit'])) 
{ 

$first_name = mysqli_real_escape_string($dbc, trim($_POST['first_name'])); 
$last_name = mysqli_real_escape_string($dbc, trim($_POST['last_name'])); 
$password1 = mysqli_real_escape_string($dbc, trim($_POST['password1'])); 
$password2 = mysqli_real_escape_string($dbc, trim($_POST['password2'])); 
$email = mysqli_real_escape_string($dbc, trim($_POST['email'])); 

if (!empty($first_name) && !empty($last_name) && !empty($password1) && !empty($password2) && ($password1==$password2)) 
{ 
    $query = "SELECT * FROM user_db WHERE email='$email'"; 
    $data = mysqli_query($dbc, $query); 
    if(mysqli_num_rows($data) == 0) 
    { 
     $password2 = md5($password1); 
     $query = "INSERT INTO user_db(fname, lname, email, password) VALUES('$first_name','$last_name','$email','$password2')"; 
     $data = mysqli_query($dbc, $query) or die('Error Querying database-Adding info'); 
     echo '<strong>Registration Successful</strong>'; 

     mysqli_close($dbc); 
     exit(); 
    } 
    else 
    { 
     echo 'An account already exists for with this email id. Kindly use a different one<br /> '; 
     $email = ""; 
    } 
} 

else 
{ 
    echo 'Please enter all the fields correctly, including the desired password correctly <br/>'; 
} 

} 
// The control goes everytime into this else part 
else 
{ 
    echo 'Error'; 
} 

mysqli_close($dbc); 

?> 
+0

var_dump($ _POST ['submit]);說? – 2013-04-07 11:47:46

+0

你的提交按鈕有name ='submit'? – Svetoslav 2013-04-07 11:48:38

+0

提交按鈕的名稱是真的提交嗎?並有你的表格actio method =「post」? – Nickool 2013-04-07 11:48:46

回答

1

$_POST['submit']未設置。這就是爲什麼你的代碼進入「錯誤」部分。

您必須設置html元素的名稱,以便PHP知道要查找什麼。

事情是這樣的:

<form action="index.php" method="POST" > 
First Name : <input type="text" id="first_name" name="first_name" /><br/> 
Last Name : <input type="text" id="last_name" name="last_name" /><br/> 
Email : <input type="text" id="email" name="email" /><br/> 
Password : <input type="password" id="password1" name="password1" /><br/> 
Repeat Password:<input type="password" id="password2" name="password2" /><br/> 
<input type="submit" id="submit" value="submit" name="submit" /> </form> 

還要考慮不要混用類型的HTML元素和那些ID /名稱。提交不是HTML元素的最終名稱,因爲它可能會帶來很多混淆。相反命名提交按鈕喜歡的東西:

<input type="submit" id="submit-registration" value="submit" name="submit-registration" /> </form> 
+0

我已經使用isset($ _ POST ['first_name'] && ...) 也。但它並沒有起作用。 – wdphd 2013-04-07 11:52:52

+0

您必須將name屬性設置爲您的html元素。 (不只是身份證) – bestprogrammerintheworld 2013-04-07 11:53:42

+0

謝謝。它的工作:) – wdphd 2013-04-07 12:00:18

0

顯示HTML請。 我的猜測是,你沒有一個<input>標籤與name="submit"和您的形式value="something" :-)

+0

<形式行動= 「的index.php」 方法= 「POST」> \t名字:\t
\t姓:\t
\t電子郵件\t:
\t密碼:\t
\t重複密碼:
\t \t – wdphd 2013-04-07 11:51:58

+0

您必須設置元素的名稱,而不僅僅是ID。 – bestprogrammerintheworld 2013-04-07 11:52:40

+0

你的php正在尋找名字屬性 – 2013-04-07 11:52:50

0

,告訴你一件事.. submit沒有在你的論壇通過。這裏有一個簡單的測試。在你的表單中添加一個像這樣的輸入<input type="text" name="submit" />,然後再試一次