2014-04-16 36 views
1

我有一個PHP變量$ admin對應於一個複選框。當提交表單時勾選了該複選框,該值被傳遞(設置爲1)並且一切都很好,但是如果未勾選,該變量會導致未定義的索引錯誤:複選框變量導致錯誤,當未提交表單PHP MYSQL

注意:未定義索引:admin in C: ... \ admin.php的

這是查詢數據庫形式的PHP部分:

if($row == 1) 
    { 
     echo '<div id="errormsg">This username is already taken</div>'; 
    } 
    else 

    { 
    $add = mysqli_query($dbcon, "INSERT INTO users (id, firstname, lastname, username, password, admin) VALUES 
    (null, '$fname', '$lname', '$user', '$pass', '$admin') ") or die ("Can't insert data"); 
    echo '<div id="create-success">Successfully added user!</div>'; 
    } 

和HTML表單:

<form action="admin.php" method="post" onSubmit="return validate(this)"> 
<fieldset> 
    <label class="reg">Username *</label> <input type="text" name="user" /><br /> 
    <label class="reg">Password *</label> <input type="password" name="pass" /><br /> 
    <label class="reg">Repeat Password *</label> <input type="password" name="rpass" /><br /> 
    <label class="reg">First name:</label> <input type="text" name="fname" /><br /> 
    <label class="reg">Last name:</label> <input type="text" name="lname" /><br /> 
    <label class="reg">Admin?:</label> <input type="checkbox" value="1" name="admin" /><br/> 
</fieldset> 
    <input type="submit" name="submit" value="Create User" /> 
</form> 

哈任何人任何想法爲什麼不選中複選框會導致特定於$ admin變量的錯誤?

+0

我猜測,當沒有檢查框時,它發送no或NULL值。您應該首先攔截POST,然後自己手動設置變量。這樣你就知道它有一個有效的價值。 – durbnpoisn

+0

您應該顯示腳本中處理'$ _POST'中的值的部分。很可能,這是你的問題所在。您也可以考慮不告訴用戶用戶名是否已被佔用。從安全的角度來看,這被認爲是不好的做法。 –

+0

POST的簡單設置爲$ admin = $ _POST ['admin']; etc – ajm

回答

4

複選框僅在實際檢查時纔會傳遞給腳本。

所以你需要檢查有實存於你的PHP代碼,像這樣:

if ($_POST && isset($_POST['admin']) { 
    $admin = $_POST['admin']; 
} else { 
    $admin = 0; 
} 

編輯:

在你的劇本我會做這個

if($row == 1) { 
    echo '<div id="errormsg">This username is already taken</div>'; 
} else { 
    $admin = ($_POST && isset($_POST['admin']) ? $_POST['admin'] : 0; 
    $add = mysqli_query($dbcon, "INSERT INTO users 
       (id, firstname, lastname, username, password, admin) 
     VALUES(null, '$fname', '$lname', '$user', '$pass', '$admin') ") or die ("Can't insert data"); 
    echo '<div id="create-success">Successfully added user!</div>'; 
} 
+0

我認爲這可能與此有關。該代碼在哪裏適合我的腳本? – ajm

+0

在嘗試使用'$ admin'變量之前的任何地方 – msanteler

+0

我之前是這樣的,但它不是很好地停止了這個錯誤 – ajm

1

首先,你必須檢查Post Array中的admin變量。請檢查代碼。

<?php 
if($row == 1) 
{ 
echo '<div id="errormsg">This username is already taken</div>'; 
} 
else 
{ 
// check is exist in post array 
$isAdminCheck = (isset($_POST['admin']) && $_POST['admin'] == 1)? $_POST['admin']:0; 

$add = mysqli_query($dbcon, "INSERT INTO users (id, firstname, lastname, username, password, admin) VALUES (null, '$fname', '$lname', '$user', '$pass', '$isAdminCheck') ") or die ("Can't insert data"); 
echo '<div id="create-success">Successfully added user!</div>'; 
} 
?>