Jag har ett script som låter mig registrera en ny användare i databasen. Vad jag vill göra är att modifiera detta script så att det dels hämtar data för inloggad användare och visar denna data i textfält i formuläret och även uppdaterar datan i databas med den data användaren ändrar till i textfälten. Jag vill alltså använda mig av UPDATE. Jag vill även kunna ange WHERE så att data ändras för rätt användare. Jag har en session satt från loginscriptet som jag vill använda för WHERE. Hur kan jag modifiera scriptet?
Scriptet ser ut såhär:
<?php
session_start();
// Check if user is logged in = session set
if (!isset($_SESSION['sess_user'])){
header("Location: index.php");
exit;
}
if (isset($_POST['submit'])){
$_POST = db_escape($_POST);
// Delete any spaces at begining or end of user input
foreach($_POST as $key => $val){
$_POST[$key] = trim($val);
}
//Check for empty controls
if (empty($_POST['user']) || empty($_POST['passwd']) ||
empty($_POST['name']) || empty($_POST['email'])) {
$reg_error[] = 0;
}
// Check if user name is already taken
$sql = "SELECT COUNT(*) FROM tbl_users WHERE user='{$_POST['user']}'";
$result = mysql_query($sql);
if (mysql_result($result, 0) > 0) {
$reg_error[] = 1;
}
// Validate e-mailaddress
if (!preg_match('/^[-A-Za-z0-9_.]+[@][A-Za-z0-9_-]+([.][A-Za-z0-9_-]+)*[.][A-Za-z]{2,6}$/', $_POST['email'])) {
$reg_error[] = 2;
}
// Check if password entries match up
if ($_POST['passwd'] != $_POST['passwd2']) {
$reg_error[] = 3;
}
// If no errors. Save, log in and send user to mainpage
if (!isset($reg_error)) {
$sql = "INSERT INTO tbl_users(user, pass, name, email, id_user_type)
VALUES('{$_POST['user']}', '{$_POST['passwd']}', '{$_POST['name']}', '{$_POST['email']}', '{$_POST['usertypeID']}')";
mysql_query($sql);
$_SESSION['sess_id'] = mysql_insert_id();
$_SESSION['sess_user'] = $_POST['user'];
$_SESSION['sess_user_name'] = $_POST['name'];
$_SESSION['sess_user_type'] = $_POST['usertypeID'];
header("Location: user_edit.php");
exit;
}
} else {
// Set variables for empty form
for ($i=0; $i<4; $i++) {
$back[$i] = "";
}
}
$error_list[0] = "Not all fields are filled in.";
$error_list[1] = "This user name is occupied.";
$error_list[2] = "The e-mailaddress is not entered correctly.";
$error_list[3] = "The passwords does not match up.";
Varför vill du ha det på samma ställe?
Använd förresten aldrig POST/GET i SQL frågor, eller nån annanstans heller för den delen. Bättre att skicka det till en variabel och kolla så det inte innehåller nåt konstigt, för att sedan använda den nya variabeln.
Nåt sånt här?
# Hämta användarinfo
$sql = "SELECT user_name, something_else FROM tbl_users WHERE user='".$user."'";
$result = mysql_query($sql);
echo "User name: <input type='text' name='user_name' value ='".$result['user_name']."'/><br />
echo "Something else: <input type='text' name='something_else' value ='".$result['something_else']."'/><br />
# Uppdatera användarinfo
$sql = "UPDATE tbl_users SET something_else = 'something' WHERE user='".$user."'";
mysql_query($sql);
262 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849