AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP] Vergleich von Zahlen funktioniert, Buchstaben nicht
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Vergleich von Zahlen funktioniert, Buchstaben nicht

Ein Thema von Plague · begonnen am 31. Okt 2004 · letzter Beitrag vom 31. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#1

[PHP] Vergleich von Zahlen funktioniert, Buchstaben nicht

  Alt 31. Okt 2004, 01:07
Hallo,

ich habe in einem PHP Script folgendes stehen:

Code:
<?php
$connect = mysql_connect("localhost","User","Passwort");
$db = mysql_select_db("Datenbank");
$sql = ("SELECT `Passwort`,`ID` FROM `Tabelle` WHERE `UserID`=$User");
$select = mysql_query($sql);
$row = mysql_fetch_array($select);
$ID2 = $row["ID"];
if ($Passwort2 == $row["Passwort"]) {
   header("Location: http://www.addy.de/Test/abcd.php?BID=$ID2");
   } else {
   echo("Passwort falsch");
   }
?>
Die Kontrolle ob das Passwort funktioniert geschieht vorher über die Eingabe in ein Formular, welches die Daten über POST weitergibt.

Wenn der Datenbank-Eintrag (MySQL) nun als User nur zahlen hat, funktioniert der Abgleich und man wird weitergeleitet. Ist der Username aber ein Name oder ähnliches mit Buchstaben, kommt ein PHP typischer Fehler.
Das Datenbankfeld ist als VARCHAR deklariert!

Was kann ich da tun?
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: [PHP] Vergleich von Zahlen funktioniert, Buchstaben nich

  Alt 31. Okt 2004, 01:51
Hi!

Was ist denn ein php typischer Fehler?


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#3

Re: [PHP] Vergleich von Zahlen funktioniert, Buchstaben nich

  Alt 31. Okt 2004, 02:49
Das hier:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/web257/html/Test/abfrage_script.php on line 6
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#4

Re: [PHP] Vergleich von Zahlen funktioniert, Buchstaben nich

  Alt 31. Okt 2004, 02:07
na das bedeute einfach, das bei der mySQL-Abfrage (mysql_query) was schiefgegangen ist, da ja keine "gülige" Abfragekennung zurückgegeben wurde. Und mysql_fetch_array will nun mal eine solche unbedingt haben.

Lösung: man mach 'ne Abfrage rein, ob die mySQL-Anfrage überhaupt erfolgreich war.


Und dann kann es nicht schaden, wenn du auch den wert mal in ' oder " einschließt, warum man sowas macht, sollte wohl klar sein.
Code:
$sql = ("SELECT `Passwort`,`ID` FROM `Tabelle` WHERE `UserID`=[b][color=red]'[/color][/b]$User[b][color=red]'[/color][/b]");


Ach ja: $User wird doch direkt aus dem Formular ausgelesen?
Also wenn du mir jetzt mal kurz die URL zu deinem Formular gibts, dann schrotte ich dir mal schnell deine Datenbank, oder mach schlimmeres damit
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#5

Re: [PHP] Vergleich von Zahlen funktioniert, Buchstaben nich

  Alt 31. Okt 2004, 02:11
Zitat:
Ach ja: $User wird doch direkt aus dem Formular ausgelesen?
Also wenn du mir jetzt mal kurz die URL zu deinem Formular gibts, dann schrotte ich dir mal schnell deine Datenbank, oder mach schlimmeres damit
Wie soll ich das verstehen???
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#6

Re: [PHP] Vergleich von Zahlen funktioniert, Buchstaben nich

  Alt 31. Okt 2004, 08:54
haben die ', oder " geholfen?



Ich bin jetzt zwar nicht der große Profi, bei den verschachtelten mySQL-Abfragen (müßte mich da erst nochmal informieren), aber es ist so möglich fremden Code einzuschleusen.

Im Prinzip:
Code:
"DELETE FROM tabelle WHERE name = '$name';"
Normaler Weise könnte man da ja z.B. den Namen des zu löschenden Eintags angeben,
Code:
$name = "tomas"
aber mit 'ner kleinen Veränderung wird der gesamte Tabelleninhalt gelöscht.
Code:
$name = "irgendwas' OR 1"
Raus kommt hier z.B.:
Code:
"DELETE FROM tabelle WHERE name = 'irgendwas' OR 1;"
Da, wegen der "1", die OR-Verknüpfung immer wahr ist, entschpricht es im Endeffekt diesem, was ja alles löscht.
Code:
"DELETE FROM tabelle WHERE 1;"
Auf solche Weise kann man ganz schnell 'ne Abfrage ändern und somit viel anstellen -.-''
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: [PHP] Vergleich von Zahlen funktioniert, Buchstaben nich

  Alt 31. Okt 2004, 09:52
Der Fehler hat übrigens mit den einfachen Anführungszeichen zu tun. Wenn das User-Feld einen String-Typ hat, muss auch mit einem String vergleichen werden, und der wird bei MYSQL-SQL von einfachen ANführungszeichen eingeschlossen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#8

Re: [PHP] Vergleich von Zahlen funktioniert, Buchstaben nich

  Alt 31. Okt 2004, 10:07
Da geb ich himitsu recht. Wenn du Formular-Übergaben verarbeitest, dann 1.) prüfe auf komische Zeichen wie ', ", ` oder ´ in dem Eingabefeld und 2.) verwende dafür die entsprechenden Super-Globalen Arrays wie $_POST, $_GET oder gleich $_REQUEST. Das ist erstens sicherer (Link zu einer Seite auf php.net mit Warum, Weshalb, Wieso kann ich dir raussuchen) und zweitens auch "register_globals=Off"-Safe.

Wegen deinem Fehler:
Wie die Vorredner schon sagten: Schließe die Inhalte für Feldnamen in Anführungszeichen ein:
Code:
$Query = "SELECT * FROM Table WHERE Feld='Wert'"
Dann sollte alles klappen.

Grüße,
Mario
  Mit Zitat antworten Zitat
gekmihesg
(Gast)

n/a Beiträge
 
#9

Re: [PHP] Vergleich von Zahlen funktioniert, Buchstaben nich

  Alt 31. Okt 2004, 11:16
ich würds ja so machen:
Code:
"SELECT `Passwort`,`ID` FROM `Tabelle` WHERE `UserID`='".$_POST["User"]."'"
und dann:
Code:
if ($_POST["Passwort2"] == $row["Passwort"]) {...}
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#10

Re: [PHP] Vergleich von Zahlen funktioniert, Buchstaben nich

  Alt 31. Okt 2004, 11:47
ganz vergessen, die komplettlösung su posten.

Also ' und dann unterbindet addslashes, dass es zu Problemen, bei "\", "'" und """, kommen kann, da diese geschützt werden.
Code:
"SELECT `Passwort`,`ID` FROM `Tabelle` WHERE `UserID`='" . addslashes($_POST["User"]) . "'"
PS:
addslashes sollte man immer verwenden, wenn nicht kontrollierte Strings innerhalb einer Abfrage verwendet werden, denn ein ' kann nicht nur vorkommen, wenn man es böse meint.
Selbst die DP ist dagegen geschützt, denn sonst hätte dieser Uder '][' ein ganz großes Problem.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz