View Single Post
Sitat av Nikon01 Vis innlegg
Hei folkens. Takk for gode svar. Skal sjekke ut litt mer.

Her er da både html, ajax og PHP:

Kode

<form action="" method="post" id="delete-user">
    <label for="delete">Delete my user from the records</label> <br>
    <input type="email" name="delete" placeholder="Your email"><br>

    <label for="skey">SecretKey:</label>
    <input type="text" name="skey" placeholder="Your secret key">


    <button type="submit">Delete me!</button>
    <p id="delete-message"></p>
</form>

Kode

$("#delete-user").submit(function(e) {
    e.preventDefault();

    $.ajax({
        url: "****/delete_form_data.php",
        method: "post",
        data: $("form").serialize(),
        dataType: "text",
        success: function(strMessage) {
            $("#delete-message").text(strMessage);
            $("#delete-user")[0].reset();
        }
    });
});

Kode

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}


$delete = $_POST['delete'];
$skey = $_POST['skey'];

$query = mysqli_query($conn, "SELECT * FROM form WHERE email='$delete'");

$sql = "DELETE FROM form WHERE secretKey='$skey' AND email='$delete'";

if(mysqli_num_rows($query) < 0) {
	echo "The email: " . $_POST['delete'] . " does not exist in our records";
}
elseif(!mysqli_query($conn, $sql)) {
	echo "Could not delete data!";
}
else {
	echo "You have deleted your information from our site. We hope you will come back!";
}


mysqli_close($conn);
Vis hele sitatet...
Tar jeg feil når jeg mener at du faktisk ikke sjekker om secret key matcher databasen?
For dersom du ikke skriver inn noe i skjemaet vil den variabelen være tom og spørringen ser etter secret key ' ' (ingenting).

Det første du må gjøre er jo å kreve at secret key blir tastet inn i skjemaet.

Så må du sjekke at post variablene inneholder riktig data, sjekk at epost har riktig format og at secret key ikke er tom.
Så må du escape SQL som nevnt over.

Deretter bør du ha en spørring etter som returnerer row id som matcher epost og secret key, dersom den returnerer 0 treff vet du at at brukeren ikke eksisterer eller at secret key er feil (da røper du ikke om eposten eksisterer i databasen).
Så kan du da velge å slette den id-en fra databasen.

Har ikke pc tilgjengelig så får ikke skrevet om koden din.