sql >> Database teknologi >  >> RDS >> Mysql

Får en fejl ved at bruge mysqli_escape_string-funktionen

Der er alt for mange ting galt med din kode, og det vil være ekstremt svært at give en løsning ved at rette det, du har nu.

For det første anses MD5 ikke længere for at være sikker at bruge til lagring af adgangskoder.

Rådfør dig:

Derudover bruger du ikke forberedte udsagn korrekt.

Som jeg sagde, mysqli_escape_string() funktion kræver, at en databaseforbindelse sendes som den første parameter:

Gør dig selv en tjeneste og brug dette, et af ircmaxells svar https://stackoverflow.com/a/29778421/

Fra hans svar:

Bare brug et bibliotek. Helt seriøst. De eksisterer af en grund.

Gør det ikke selv. Hvis du laver dit eget salt, GØR DU DET FORKERT . Du bør bruge et bibliotek, der håndterer det for dig.

$dbh = new PDO(...);

$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$hash = password_hash($password, PASSWORD_DEFAULT);

$stmt = $dbh->prepare("insert into users set username=?, email=?, password=?");
$stmt->execute([$username, $email, $hash]);

Og ved login:

$sql = "SELECT * FROM users WHERE username = ?";
$stmt = $dbh->prepare($sql);
$result = $stmt->execute([$_POST['username']]);
$users = $result->fetchAll();
if (isset($users[0]) {
    if (password_verify($_POST['password'], $users[0]->password) {
        // valid login
    } else {
        // invalid password
    }
} else {
    // invalid username
}


  1. LOAD DATA LOKAL INFIL forbudt i... PHP

  2. Opretter forbindelse til Informix (IDS12 DB) i IRI Workbench

  3. Hvordan ændrer man en kolonne og ændrer standardværdien?

  4. Forklaring af JSONB introduceret af PostgreSQL