Select mit MYSQLI Lösen
Track
- php
Hallo,
wenn ich richtig gelesen habe, ist mysqli als Abfrage bei einem Post/Get parammeterübergaben die Sicherer als der übliche Select befehl.
Leider habe ich keinen Hinweis gefunden wie ich aus einer üblichen Select Abfrage eine Mysqli Abfrage basteln kann.
Original:~~~php
$trackid = $_GET['ort'];
$abfrage = "
SELECT *
FROM daten
WHERE
id = $trackid
";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$id = $row->id;
$firma = $row->name;
$strasse = $row->strasse;
$ort = $row->ort;
$plz = $row->plz;
$p1 = $row->p1;
$p2 = $row->p2;
$tel = $row->tel;
$fax = $row->fax;
$oeffnung_mo = $row->mo;
$oeffnung_di = $row->di;
$oeffnung_mi = $row->mi;
$oeffnung_do = $row->do;
$oeffnung_fr = $row->fr;
$oeffnung_sa = $row->sa;
$oeffnung_so = $row->so;
$bundesland = $row->bundesland;
}
hallo
$trackid = $_GET['ort'];
erstmal würd ich diese Variable prüfen, denn so ungesichert sollte keine in eine MySQL-Abfrage gelangen.
cu
Hallo Henman,
erstmal würd ich diese Variable prüfen, denn so ungesichert sollte keine in eine MySQL-Abfrage gelangen.
Da hast du natürlich recht, die
if (!isset($_GET...
habe ich heraus gelassen, Die Frage ist wirklich wie ich die MYSQLi Abfrage aufbaue
Hi,
erstmal würd ich diese Variable prüfen, denn so ungesichert sollte keine in eine MySQL-Abfrage gelangen.
Da hast du natürlich recht, die
if (!isset($_GET...
habe ich heraus gelassen,
Was hast du noch herausgelassen? Wenn du die kontextgerechte Behandlung dieses Wertes vergessen hast, dann ist MySQLi höchstens in der Hinsicht "sicherer", was die Übergabe externer Werte angeht, als das eben die kontextgerechte Behandlung entfällt, wenn man Prepared Statements benutzt.
Die Frage ist wirklich wie ich die MYSQLi Abfrage aufbaue
Wenn du wirklich Prepared Statements meintest - dann erstellst du ein Statement, bindest über prepare die Parameter daran, führst es mittels execute aus - und schaust dann an, was du zurückbekommst.
MfG ChrisB
Wenn du wirklich Prepared Statements meintest - dann erstellst du ein Statement, bindest über prepare die Parameter daran, führst es mittels execute aus - und schaust dann an, was du zurückbekommst.
Ich habe hiervon leider nichts verstanden...
Zur ersten Frage hier die erste Sicherheitsstufe.
if ('POST' == $_SERVER['REQUEST_METHOD']) {
if (!isset($_GET['ort'])) {
die ('Benutzen sie nur Formulare von der Homepage.');
}
Aber zurück zur MYSQLi Abfrage das obere habe ich nicht verstanden...
Hi,
Wenn du wirklich Prepared Statements meintest - dann erstellst du ein Statement, bindest über prepare die Parameter daran, führst es mittels execute aus - und schaust dann an, was du zurückbekommst.
Ich habe hiervon leider nichts verstanden...
Dann lass dir weiterhelfen - in dem du beschreibst, was "nichts verstanden" bedeutet. Wo hakt es?
Zur ersten Frage hier die erste Sicherheitsstufe.
if ('POST' == $_SERVER['REQUEST_METHOD']) {
if (!isset($_GET['ort'])) {
die ('Benutzen sie nur Formulare von der Homepage.');
}
Das hat mit Sicherheit nichts zu tun.
> Aber zurück zur MYSQLi Abfrage das obere habe ich nicht verstanden...
Nicht doppelt, sondern dafür ein mal verständlich beschreiben, Danke.
MfG ChrisB
--
Light travels faster than sound - that's why most people appear bright until you hear them speak.
Hallo ChrisB,
also "dann erstellst du ein Statement" meinst du damit das ich den Selectbefehl in einem Statement einbaue:
$sql = Select...
"prepare die Parameter daran, führst es mittels execute"
Das habe ich garnicht verstanden
Hi,
also "dann erstellst du ein Statement" meinst du damit das ich den Selectbefehl in einem Statement einbaue:
$sql = Select...
Nein, sondern dass du ein neues Objekt der Klasse MySQLi_STMT erstellst.
"prepare die Parameter daran, führst es mittels execute"
Das habe ich garnicht verstanden
Sollte klarer werden, wenn du dich mit der angegebenen Klasse beschäftigst.
MfG ChrisB