2010-12-22 4 views
0

aktualisiere Ich möchte eine Zelle in mysql-Tabelle zu Null durch eine HTML/PHP-Verbindung ändern. Gibt es ein Skript, das dies in PHP tut (nicht die Post-Methode in einem Formular verwenden)?Wie man eine mysql-Zelle auf Null von Verbindung

Einige Beispiele: Facebook ermöglicht es Ihnen, eine Pinnwand mit einem Klick zu löschen. Diese Seite ermöglicht es Ihnen, Inhalte mit einem Klick zu löschen (keine Aktualisierungsseite). Ich sage ein paar Antworten voraus, die jQuery oder AJAX sind. Ich hatte gehofft, diese zu vermeiden, aber wenn es nicht geholfen werden kann, ok (weil ich sie überhaupt nicht kenne).

Antwort

1

Fügen Sie einfach eine Abfragezeichenfolge am Ende der URL ein und rufen Sie sie über $_GET auf.

... aber nicht. GET requests are defined as being safe. Alles, was man braucht, ist etwas, um die Links zu gehen (weil es weiß, dass es sicher ist, GET-Anfragen zu stellen), um den Tag zu ruinieren.

Zum Beispiel: Vor ein paar Jahren hat Google einige Software herausgebracht, die den Links auf den von Ihnen besuchten Seiten folgt, damit sie zwischengespeichert werden und auf Sie warten, wenn Sie schließlich auf den Link geklickt haben. Einige Benutzer dieser Software hatten Administratorrechte auf Websites, auf denen schlecht geschriebene Forensoftware ausgeführt wurde. Die Spinne lief mit Admin-Rechten rum und löschte jede Nachricht, die der Benutzer angeschaut hatte (weil es einen "Delete this post" Link anstelle eines Formulars hatte, das POST verwendete).

Wenn Sie möchten, dass der Löschvorgang ohne Verlassen der Seite ausgeführt wird, können Sie das Formular an einen Iframe senden (weil ich Sie davon überzeugt habe, ein Formular zu verwenden, oder?).

0

Wenn Sie Angst vor AJAX haben, können Sie Ihr Linkziel auf einen versteckten Iframe setzen. Es wird manchmal als ein schmutziger Trick angesehen, aber es ist durchaus in Ordnung, wenn man nur seine Funktion schreiben und mit seinem Leben weitermachen möchte.

Die PHP-Seite ist ziemlich einfach. Erstellen Sie einfach eine nullify.php oder ähnliche Datei:

<?php 
// mysql connection code goes here 
mysql_query(sprintf(
    "UPDATE `yourTable` SET `yourField` = NULL WHERE `key` = '%s' LIMIT 1", 
    mysql_real_escape_string($_GET['id']) 
    )); 
?> 

In Ihrem Frontend, machen einen versteckten iframe:

<iframe name="hidden1" id="hidden1" style="display:none" src="javascript:"></iframe> 

dann schließlich Ihre nullify Taste:

<a href="nullify.php?id=12345" target="hidden1">Nullify</a> 

Glückliche nulling.

PS Null in einer Datenbank bedeutet traditionell einen nicht initialisierten Wert. Vielleicht würde eine Flagge besser funktionieren?

-n.

bearbeiten Notiere die mysql_real_escape_string Funktion, die Sie von SQL-Injection schützt. Spinnen WÜRDEN ein Problem mit der Methode, die ich vorgeschlagen habe, so etwas Javascript würde sich als nützlich erweisen:

<a href="javascript:document.getElementById('hidden1').location='nullify.php?id=12345';return false">Nullify</a> 
+0

Eugh. "Ich verwende das falsche Tool für den Job, daher müssen Sie JavaScript aktivieren, um diese Website zu verwenden". Böse. – Quentin

+0

Vorbereitete Anweisungen (z. B. mit PDO) werden gegenüber "mysql_real_escape_string" bevorzugt. – Quentin

+0

Dank David. Natürlich ist es nicht die perfekte Lösung, aber wer möchte mit einem Vorschlaghammer einen Nagel einschlagen? –

Verwandte Themen