Ich möchte mysqli UPDATE in meiner registerUsers-Tabelle ausführen, und sobald ich die Update-Taste gedrückt habe, aktualisiert es die Felder, die aktualisiert wurden.MySQL-Datenbank - Abfrage nur bestimmte Felder zu aktualisieren
Ich brauche es, um den Vornamen, Nachnamen und E-Mail zu aktualisieren und nichts zu tun, wenn die Passwortfelder leer sind. Wenn das Passwort ausgefüllt ist, möchte ich alle Felder aktualisieren.
Der Kommentar gesetzt Code (ist Passwörter Felder '/ leer sind', scheint nicht .. Irgendwelche Ideen
zu arbeiten, wie ich dies tun würde?
<?php
include 'dbconnect.php';
include 'dumpr.php';
session_start();
if(! $_SESSION['username']) {
header("Location: project-users-logout.php");
die();
}
$userid = mysqli_real_escape_string($db, $_GET['id']);
$sql = "SELECT * FROM registeredUsers WHERE UserID=$userid";
$query = mysqli_query($db,$sql);
$row = mysqli_fetch_assoc($query);
//Clean form values
$cleanFirstName = mysqli_real_escape_string($db, $_POST['frmName']);
$cleanSurname = mysqli_real_escape_string($db, $_POST['frmSurname']);
$cleanEmail = mysqli_real_escape_string($db, $_POST['frmEmail']);
//Clean password
$password = sha1(mysqli_real_escape_string($db, $_POST['frmPassword1']));
if (isset($_POST['Update']) && $_POST['Update'] == "Update") {
if (($_POST['frmName'] != '') &&
($_POST['frmSurname'] != '') &&
($_POST['frmEmail'] != '')
// && ($_POST['frmPassword1'] = '') && ($_POST['frmPassword2'] = '')
)
{
$sql2 = "UPDATE registeredUsers SET FirstName = '$cleanFirstName', Surname = '$cleanSurname', EmailAddress='$cleanEmail' WHERE UserID='$userid'";
$upQry = mysqli_query($db, $sql2);
if ($upQry) {
/* SUCCESS */
header ("Location: project-users-manage.php ");
exit;
} else {
/* FAIL */
}
}
}
?>
<table border='1'>
<tr>
<th>Username</th>
<th>First Name</th>
<th>Surname</th>
<th>Email Address</th>
<th>Password 1</th>
<th>Password 2</th>
<th></th>
</tr>
<?php
echo "<form action='' method=post>";
echo "<tr>";
echo "<td>" . "<input disabled='disabled' type=text name=user value=" . $row['UserName'] . " </td>";
echo "<td>" . "<input type=text name='frmName' value=" . $row['FirstName'] . " </td>";
echo "<td>" . "<input type=text name='frmSurname' value=" . $row['Surname'] . " </td>";
echo "<td>" . "<input type=text name='frmEmail' value=" . $row['EmailAddress'] . " </td>";
echo "<td>" . "<input type=text name='frmPassword1' value='' " . "</td>";
echo "<td>" . "<input type=text name='frmPassword2' value='' " . "</td>";
echo "<td><input type='submit' name='Update' value='Update'></td>";
echo "</form>";
echo "</tr>";
header("Location: project-users-manage.php");
exit;
?>
'='! = '=== '! Sie weisen '' zu $ _POST ['password'] zu, nicht vergleichen! also ändere dort '=' zu '==='! – Jeff
Sie überprüfen nicht wirklich, ob das Passwort übereinstimmt, d. Alles, was zum Ausführen der "UPDATE" -Abfrage erforderlich ist, besteht darin, eine zufällige Zeichenfolge in das Passwortfeld einzugeben. Sie müssen das Passwort des Benutzers bestätigen. – Marcus
Und tun Sie dies nicht: 'mysqli_real_escape_string ($ db, $ _POST ['frmPassword1'])' Lassen Sie das Passwort des Benutzers allein. Hash es einfach. Zitate nicht umgehen (durch Hinzufügen eines \ zu ihrem Passwort), trimmen nicht Whitespace, nicht konvertieren, um spezielle Zeichen/HTML-Entitäten, etc, etc., etc. Hash es. Vorzugsweise mit [password_hash()] (http://php.net/password) – Marcus