Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Anfänger Problem mit PHP-Injections“

Alucard89

Noch nicht viel geschrieben

Habe folgendes Problem: Hab da ein News Skript für die News eintragung in meine MYSQL Datenbank. ABer jedesmal wenn die Daten eingetragen werden sollen, ünernimmt nur den Text, Datum und Titel lässt auf standard.

Bei der überprüfung auf der nachfolge Seite ist dann aber zu sehen das da alles Funzte.

Der Code der mysql.php
PHP:
<?php
echo "Das Erstellungsdatum der News:   ".$_POST['dttxt']."<br>";
echo "Der Titel der News:    ".$_POST['tttxt']."<br>";
echo "Ihre news:   ".$_POST['newstxt']."<br>";

include 'config.php';    // Konfigurationsdatei laden

 @mysql_connect('MYSQL_HOST', 'MYSQL_USER', 'MYSQL_PASS') OR die(mysql_error());
 mysql_select_db('MYSQL_DATABASE') OR die(mysql_error());


         $sql = "INSERT INTO news(Datum)
         		   VALUES('".$_POST['dttxt']."')";
				   
         $sql = "INSERT INTO news(Titel)
         		   VALUES('".$_POST['tttxt']."')";
				   
         $sql = "INSERT INTO news(Inhalt)
                   VALUES('".$_POST['newstxt']."')";

         $result = mysql_query($sql) OR die(mysql_error(E_ALL));

?>


Der Code der objekte.php
PHP:
<?php
echo "Bitte geben Sie in die Folgenden Felder Ihre daten ein!!!";

?>
<form action="mysql.php" method="post">

<label for="datelab">Datum</label><br>
  <input name="dttxt" type="text" value="" size="14" />
  <br>
<br>
<label for="titlelab">Titel</label><br>
  <input name="tttxt" type="text" value="" size="56" />
  <br>
<br>
<label for="newslab">News</label><br>
<textarea name="newstxt" rows="10" cols="50"></textarea>

<br>
<input type="submit" value="Absenden">
<input type="reset" value="Zur&uuml;cksetzen">
</form>


Hoffe mir kann wer Helfen!

Danke im vorraus, falls mir wer hilft

nicobats: Codes in PHP-Tag gepackt, überflüssigen Code config.php gelöscht.
 
Zuletzt bearbeitet von einem Moderator:

10c

Unscharfe Maske

Hi,

PHP:
<?php
$sql = "INSERT INTO news(Datum)
VALUES('".$_POST['dttxt']."')";

$sql = "INSERT INTO news(Titel)
VALUES('".$_POST['tttxt']."')";

$sql = "INSERT INTO news(Inhalt)
VALUES('".$_POST['newstxt']."')";

$result = mysql_query($sql) OR die(mysql_error(E_ALL));
?>

das Problem ist, dass du versuchst die Variable $sql mit drei verschiedenen SQL Statements zu bestücken.

Typischerweise wird nur das letzte Statement übernommen, da du mit jeder Neuzuweisung den alten Inhalt sozusagen überschreibst.

Das erklärt auch, warum nur der News-Text übernommen wurde....


10c :)
 

NicoB

Hat es drauf

In welchem Format wird das Datum eingegeben? Welchen Typ hat die Datums-Spalte in der Datenbank?

Ich würde einfach die aktuelle Timestamp speichern.
$zeit = time(); <-- $zeit dann einfach reinschreiben

Deine SQL-Inserts sind ganz schön ressourcen-verbrauchend und umständlich aufgebaut. Du kannst auch alles in einer Abfrage zusammenfassen!

PHP:
$dat=$_POST['dttxt']; $titel=$_POST['tttxt']; $inh=$_POST['newstxt'];
$sql = "INSERT INTO news (Datum, Titel, Inhalt) VALUES ('$dat, '$titel', '$inh)";
$result = mysql_query($sql) OR die(mysql_error(E_ALL));

Packe alles in eine Abfrage und dann sollte es gehen, ansonsten wird nur die letzte Deklaration von $sql angenommen, die ersten beiden werdn vernachlässigt.
 
Zuletzt bearbeitet:

webmastersworld

Nicht mehr ganz neu hier

@nicobats: das datumformat (prinziepell kann er das auch pure php erledigen lassen und varchar speichern) düfte da weniger das probl. sein, eher die geschichte mit 3x $sql, einfach durchnummerieren die sql-statements fertig :)
 
Zuletzt bearbeitet:

saila

Moderatorle

PHP:
<?php
if(isset($_POST['tttxt']) AND $_POST['tttxt'] != '') { 
    // HTML komplett entfernen, falls noch spezielle Zeichen vorhanden, die auch raus.
    $tt_txt = htmlspecialchars(strip_tags($_POST['tttxt'])); 
}
else { 
    $fehlerausgabe_a = "hier fehler definieren"; 
}

if(isset($_POST['newstxt']) AND $_POST['newstxt'] != '') { 
    // HTML komplett entfernen, falls noch spezielle Zeichen vorhanden, die auch raus.
    $ne_txt = htmlspecialchars(strip_tags($_POST['newstxt']))); 
}
else { 
    $fehlerausgabe_b = "hier Fehler definieren"; 
}    

// noch mal prüfen, ob überhaupt noch Inhalte vorhanden sind....
if($tt_txt != '' AND $ne_txt != '') {
    $sql = mysql_query("INSERT INTO 
                            news 
                                (Datum,Titel,Inhalt) 
                        VALUES 
                                ('".date("Y-m-d H:i:s")."', 
                                 '".mysql_real_escape_string($_POST['tttxt'])."', 
                                 '".mysql_real_escape_string($_POST['newstxt'])."')") 
            or die ("News-Insert-Fehler: ".mysql_error());
    // Prinzipiell - keine Globalen direkt in die Querys übergeben.
    // Das Datumsformat ist am einfachsten entweder per time(); oder date("d.m.Y H:i:s");
    // für das spätere Auslesen um hier Code zu sparen, nimmt man date() und passt die 
    // DB-Spalte Datum an. Um das Passende Format auszugeben, gibst du im SELECT das 
    // Ausgabeformat direkt mit an 

    // und zurück auf die Seite, wo du es willst. In diesem Fall zur Eingabe.
    header("Location: ".$_SERVER['PHP_SELF']);
    exit();
}
else {
    // wenn keine Inhalte vorhanden sind....
    header("Location: ".$_SERVER['PHP_SELF']);
    exit();
}
?>
 
T

testeer

Guest

Dein Problem ist ja jetzt gelöst, nur ich wollte noch anmerken, dass eine MySQL Injection das Einschleusen von ungewünschten Aktionen in ein Query bedeutet (bösartiger Code) und was du meintest waren MySQL Inserts. Ist ein kleiner Unterschied:D
 

Alucard89

Noch nicht viel geschrieben

Danke!!!!

Vielmals danke, hat am ende gefunzt.
Was ich nun noch herausfinden muss ist, wie ich in das $dataset noch date() reinbekomme.

Als dann. Thx to all ^^
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.189
Beiträge
2.582.078
Mitglieder
67.258
Neuestes Mitglied
SaschMasch1312
Oben