我創建了這個函數來在點擊提交按鈕時更新數據庫。但它似乎並不奏效。該腳本旨在通過id使用用戶的登錄細節從數據庫中繪製用戶的值,並填充表單。該功能用於幫助用戶在表單文本字段中更改用戶的詳細信息時進行更新。如何創建一個php函數來更新提交數據庫?
請幫我調試它。
libraries.php
function db(){ //handles database connection
//connect to the database server or die and spit out connection error
$conn = mysql_connect('localhost','root', '') or die("Cannot connect to the database server now". mysql_error());
//select database table or die and spit out database selection error
mysql_select_db('newbishop',$conn) or die("Error in selecting database now ".mysql_errno());
return $conn;
}
personalsettings.php
<?php
include_once('libraries.php'); // contains the database function
session_checker();
db();
$categoryid = $_SESSION['id'];
$select = "SELECT * FROM users WHERE categoryid ='$categoryid' LIMIT 1";
$row1 = dbprocess ($select);
$rows = mysql_fetch_assoc($row1);
$pname1 = $rows['pname'];
$email1 = $rows['email'];
$user1 = $rows['user'];
$pass1 = $rows['pass'];
$salt1 = $rows['salt'];
$phone1 = $rows['phone'];
$accesslevel = $rows['accesslevel'];
$position = $rows['position'];
function update(){
db(); // database function
$pname = $_POST['pname'];
$categoryid = $_POST['categoryid'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$user = $_POST['users'];
$pass = $_POST['pass'];
function createSalt(){
$string = md5(uniqid(rand(), true));
return substr($string, 0, 3);
};
$salt = createSalt();
$hash = hash('sha256', $salt . $pass);
$sql = "UPDATE users SET user=?,pass=?,salt=?,pname=?,email=?,phone=? WHERE categoryid=?";
$q = $conn->prepare($sql);
$q->execute(array($user,$hash,$salt,$pname,$email,$phone,$categoryid));
}
?>
形式 編輯個人設置
<input name="users" type="text" id="users" class="users" autocomplete="off" value="<?php echo $user1; ?>" />
<input type="text" autocomplete="off" name="pass" id="pass" placeholder="Create password" class="passwd" value="<?php echo $pass; ?>"/>
<input type="hidden" name="salt" id="salt" value="<?php echo $salt1; ?>"/>
<input name="pname" type="text" id="lname" placeholder="Name of Group" class="input-block-level" value="<?php echo $pname1; ?>"/>
<input type="hidden" id="categoryselect" name="categoryselect"/>
<input name="categoryid" type="text" id="resultselect" readonly class="input-block-level" value="<?php echo $_SESSION['id']; ?>"/>
<input type="text" name="email" id="email" placeholder="Email Address" class="input-block-level" value="<?php echo $email1; ?>"/>
<input type="text" name="phone" id="phone" placeholder="Enter Phone Number" class="input-block-level" value="<?php echo $phone1; ?>"/>
<input type="text" name="accesslevel" id="accesslevel" class="input-block-level" value="<?php echo $accesslevel; ?>" readonly/>
<input type="text" name="position" id="position" class="input-block-level" value="<?php echo $position; ?>" readonly/>
<button type="submit" class="btn btn-small btn-primary" name="register" id="register" value="Register" onclick="update()">Submit</button>
</form>
哇;一個PHP的問題,不會犯任何通常的錯誤!但是,對於密碼散列,SHA *速度太快(它允許極其迅速的暴力破解)。相反,使用bcrypt或scrypt或PBKDFv2。 – SLaks 2013-04-23 16:44:39
你自己做了什麼來調試它?檢查返回值?現在你的數據庫操作似乎正在取得成功。 – 2013-04-23 16:45:08
調用此函數的部分在哪裏?另外,您確定要在更新函數中聲明createSalt函數嗎? – 2013-04-23 16:45:17