Ho creato questa funzione per aggiornare un database quando si fa clic sul pulsante di invio. Ma non sembra funzionare. Lo script ha lo scopo di disegnare i valori dell'utente dal database utilizzando i dettagli di accesso dell'utente tramite id e popolare i moduli. La funzione è di aiutare ad aggiornare i dettagli dell'utente quando si tratta di una modifica nel campo di testo del modulo.Come creare una funzione php per aggiornare il database all'invio?
Per favore, ho bisogno di aiuto per il debug.
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));
}
?>
la forma Modifica impostazioni personali
<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>
Wow; una domanda PHP che non fa nessuno dei soliti errori! Tuttavia, SHA * è troppo veloce per un hash della password (consente una forzatura bruta estremamente rapida). Utilizzare invece bcrypt o scrypt o PBKDFv2. – SLaks
cosa hai fatto per eseguire il debug da solo? valori di ritorno controllati? in questo momento le tue operazioni db sembrano avere successo. –
Dov'è la parte che chiamerebbe questa funzione? Inoltre, sei sicuro di voler dichiarare la funzione createSalt all'interno della funzione di aggiornamento? –