webForumDet fria alternativet

Login-script

1 svar · 726 visningar · startad av AndreasC

AndreasCMedlem sedan mars 20011 964 inlägg
#1

Hallå.

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.";
ShakorMedlem sedan aug. 201035 inlägg
#2

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);
129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)