mikrocontroller.net

Forum: PC-Programmierung Fehler in php skript


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: test (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe in meinem php skript einen Fehler aber finde ihn nicht...

hier das Skript
function check_recordExists($string_table, &$stringarray_rowvalue) {

 $string_where = "";
        

  foreach ($stringarray_rowvalue as $nr => $rowvalue)
  {
    
if (strlen($string_where) > 0)
     {
       $string_where = + 'AND' + $rowvalue["row"] + "=" + $rowvalue["value"];
  }
    else
{

 $string_where = $rowvalue["row"] + "=" + $rowvalue["value"];
echo $string_where;
}


$string_table="tet";
$stringarray_rowvalue[0][row]   = "Axel";
$string_rowvalue[0][value]  = "Pratzner";
echo check_recordExists($string_table,$string_rowvalue);


ausgabe ist
0

wo ist der Fehler??

Autor: DPA (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oje, da weiss man ja garnicht wo anfangen... Der falsche operator ist 
noch dein kleinstes Problem... SQL Injection hast du auch noch...

Autor: Sven C. (sven_c)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Fehler ist schonmal das der Code unvollständig ist.
Es fehlen auf jeden Fall die schließenden Klammern für das foreach und 
für die Funktion.

Ansonsten gibst du keinen Wert zurück.
Wenn deine Funktion keinen Wert zurück gibt, ist der Wert null bzw. als 
Ausgabe dann eben 0 - das ist für PHP mehr oder weniger das gleiche.

Autor: DPA (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven C. schrieb:
> Wenn deine Funktion keinen Wert zurück gibt, ist der Wert null bzw. als
> Ausgabe dann eben 0

Nö, "echo NULL;" ergibt keine Ausgabe. Aber strings werden mit . und 
nicht mit + verknüpft. "12" + "34" ergibt nicht "1234", sondern 46. "12" 
. "34" gäbe "1234". Und "keine 123 nummer" + "keine 123 nummer" ergibt 
nunmal 0. Wenn du Warnungen einschaltest, bekommst du da auch eine.

Aber wie hier das SQL Statement zusammengesetzt werden soll, ist grob 
fahrlässig. Schau dir mal prepared statements an, oder stelle zumindest 
anderweitig sicher, dass deine SQL Statements richtig escaped sind.

Autor: Sven C. (sven_c)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mea culpa.

Hab's gerade ausprobiert, stimmt null gibt keine Ausgabe.
Der falsche Operator ist mir im Halbschlaf gar nicht bewusst geworden.

Ob der Code allerdings für SQL Injections anfällig ist, ist doch stark 
davon abhängig woher die Variablen kommen und wie die Funktion genutzt 
wird.

Wenn der Code keinerlei Nutzer- bzw. Formulareingaben bearbeitet, 
sondern rein intern Daten verarbeitet, dann besteht auch wenig Chance 
auf eine SQL-Injection.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.