ERLEDIGT
NEIN
NEIN
ANTWORTEN
24
24
ZUGRIFFE
745
745
EMPFEHLEN
-
Der Fehler wird in der fettgedruckten Line angezeigt.PHP-Code:
<?php
$host="localhost";
$username="******";
$passwort="";
$dbname="********";
$connect = mysql_connect($host, $username, $passwort);
include("/Connections/TEST.php");
mysql_select_db($db_name);
$res = "SELECT `ID`
FROM `News`
ORDER BY `ID` DESC
";
$del = "DELETE FROM
`News` WHERE `id`='".$_POST['id']."'"
;
$delall = "
DELETE `NEWS`
FROM `NEWS`
";
$change = " UPDATE
`News`
SET
WHERE
[B]`ID` = '"$_POST['ID']'"";[/B]
$add = " INSERT INTO `News`
`News`
VALUES
'"$_POST['ID']'"";
//if bedingungen
if($_POST['delete'])
{
mysql_query($del, $connect) OR die(mysql_error())
echo "Der Datensatz mit der ID <strong>$_POST['ID']</strong> wurde gelöscht."
;}
if($_POST['deleteall'])
{
mysql_query($delall, $connect) OR die(mysql_error())
echo "Alle Datensätze wurden gelöscht!"
;}
if($_POST['change'])
{
mysql_query($change, $connect) OR die(mysql_error())
echo "Der Datensatz mit der ID $_POST['ID'] wurde geändert."
;}
if($_POST['add'])
{
mysql_query($add, $connect) OR die(mysql_error())
echo "Der Datensatz wurde hizugefügt."
?>
-
wie wäre es denn, in deinen change query nach SET anzugeben, welche spalte er mit welchem wert ändern soll?!
Code :1
$change = "UPDATE news SET spalte = 'inhalt' WHERE id = '"$_POST['ID']'"";
-
Huhu,
nur kurzer Zusatz:
Da sich das ganze um einen String handelt und man durch die anfänglichen " schon die Anführungszeichen hat, reicht ein simples $_POST[id] ohne sonderliche Anführungszeichen. Also:
schöner Code ist das natürlich nicht, weswegen ich empfehle mal in die Funktionen printf bzw. sprintf reinzuschauen, die sowas viel angenehmer machen. Da kann man dann auch gleich das obligatorische mysql_real_escape_string mit unterbringenPHP-Code:<?php
$string = "DELETE FROM tabelle WHERE id = $_POST[id]";
?>
Without deviation progress is not possible (F. Zappa)
-
22.07.06 00:50 #19
- Registriert seit
- Mar 2004
- Ort
- Tiefste Provinz
- Beiträge
- 304
Also ich komme gradewegs aus dem PHP-Sicherheits-Thread hierher und dort hab' ich gelesen, man dürfe Fragesteller nachdem man deren Frage beantwortet hat auch gerne mal auf Sicherheitslücken in ihrem Code hinweisen, selbst wenn dies etwas off-topic ist.
Nachdem die grundsätzliche Frage ja nun beantwortet ist, möchte deshalb nicht unerwähnt lassen, dass direktes Einfügen von $_POST-Variablen in SQL-Statements generell als unsicher bezeichnet werden muss.
Bevor man also weiter diskutiert, ob die Verkettung eleganter ist als das direkte Einbetten, würde ich mal folgende Version zum Besten geben:
So kann auch nix passieren, wenn der böse User zum Beispiel 0' OR `id` LIKE '%' ins Formular eintippt...PHP-Code:$sql = "
DELETE FROM `tabelle` WHERE `id` = '".mysql_real_escape_string($_POST['id'])."'
";
PS/Nachtrag:
Uuups, habe grade gelesen, dass mein Vor-Poster Sir Robin dies im Prinzip schon geschrieben hat. Erst lesen, dann posten...Geändert von ManicMarble (22.07.06 um 00:55 Uhr)
Martin
-
Danke schön. Ich wollte den "adminbereich" auch noch passwort schützen. Das soll verhindern das der böse User überhaupt was eintippt.So kann auch nix passieren, wenn der böse User zum Beispiel 0' OR `id` LIKE '%' ins Formular eintippt...PHP-Code:
$sql = "
DELETE FROM `tabelle` WHERE `id` = '".mysql_real_escape_string($_POST['id'])."'
";
PS/Nachtrag:
Uuups, habe grade gelesen, dass mein Vor-Poster Sir Robin dies im Prinzip schon geschrieben hat. Erst lesen, dann posten...
-
Ich hab ein neues Problem ich weiß nicht ob ich dafür ein neuen Thread aufmachen muss weil der hat hier indirekt was mit zutun. Ich hab das Script ausgebessert jetzt "klappt" es weil vorher wurde ein Fehler angezeigt.:
Erläuterung: hinter POST sind einfach die englischen begriffe (waren kürzerPHP-Code:<?php
$host="localhost";
$username="*****";
$passwort="";
$dbname="******";
$connect = mysql_connect($host, $username, $passwort);
include("/Connections/TEST.php");
mysql_select_db($db_name);
$res = "SELECT `ID`
FROM `News`
ORDER BY `ID` DESC
";
$del = "DELETE FROM
`News` WHERE `id`='".mysql_real_escape_string($_POST['id'])."'"
;
$delall = "
DELETE `NEWS`
FROM `NEWS`
";
$change = " UPDATE
`News`
SET
WHERE
`ID` = '".mysql_real_escape_string($_POST['ID'])."'";
$add = "INSERT INTO `News`
`News`
VALUES
'".mysql_real_escape_string($_POST['newstext'])."'";
//if bedingungen
if($_POST['delete'])
{
mysql_query($del) OR die(mysql_error())
;}
if($_POST['deleteall'])
{
mysql_query($delall) OR die(mysql_error())
;}
if($_POST['change'])
{
mysql_query($change) OR die(mysql_error())
;}
if($_POST['add'])
{
mysql_query($add) OR die(mysql_error());
}
?>
also ändern, hinzufügen, alle löschen und löschen.)
So wenn ich jetzt Was hizufügen etc. will dann passiert gar nichts alles bleibt wie vorher!
Was ist falsch?
-
Wenn es um das zufügen der Daten geht, probiere einmal folgendes:
PHP-Code:$add = 'INSERT INTO
`News`
SET
`News` = "'.mysql_real_escape_string($_POST['newstext']).'"
';
-
Es gibt noch was einfacheres:
Zitat von Andrej Dyck
PHP-Code:$sql = "SELECT * FROM table WHERE id = $_POST[id]";
Why is Ajax so smart?
-You can kill your server without a reload.
-
Jo cool es klappt. Funktioniert das bei den anderen (change, delete ...) auch so?
Zitat von phaeton
-
Prinzipiell musst du wissen, dass du nur die Abfragedeklaration als Zeichenkette in einer Variable speicherst. Daher kannst du diesen Wert auch einfach mal ausgeben und manuell prüfen.
Markus Wulftange
Ähnliche Themen
-
Problem mit _POST[] Variablen
Von Nerolein im Forum PHPAntworten: 5Letzter Beitrag: 09.02.10, 13:41 -
Lebensdauer von $_POST Variablen
Von FrankWST im Forum PHPAntworten: 3Letzter Beitrag: 05.08.09, 21:14 -
mysql_query mit $variablen
Von chuvak im Forum PHPAntworten: 3Letzter Beitrag: 14.01.09, 19:27 -
Variablen-Verweise in $_POST
Von Mike Rofon im Forum PHPAntworten: 2Letzter Beitrag: 05.08.07, 23:51 -
Problem mit Variablen und $_Post
Von Aztech im Forum PHPAntworten: 2Letzter Beitrag: 24.07.04, 11:03





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren