php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 19-06-2008, 14:11
derspoon
 Newbie
Links : Onlinestatus : derspoon ist offline
Registriert seit: Jan 2005
Beiträge: 9
derspoon ist zur Zeit noch ein unbeschriebenes Blatt
Standard Problem mit Vergleich von GET Übergabe und SQL Übergabe

Hallo,

ich habe in folgendem Text das Problem, das die Abrage immer false ergibt obwohl durch ein "Echo" beides gleich ist.
Muss ich die Abfrage anders gestalten? Eine Abfrage via SQL wäre möglich, aber es gibt nur wenige Nutzer in der DB die ein PW haben.

// Code Anfang //
PHP-Code:
require_once('inc/functions.inc.php');
$name    =    $_GET['name'];
$pw    =    $_GET['pw'];

verbindung("av_saegekarten");
$abfrage     "SELECT * FROM usr WHERE name = '$name'";
$ergebnis     mssql_query($abfrage);
while(
$row     mssql_fetch_object($ergebnis))
    {
        if (
$pw != $row->pw)
        {
            echo 
" Hallo, dein Password ist Falsch";
            exit();
        }
        echo 
"$row->pw = $pw";
        
setcookie("name""$row->name"time()+(60*60*24*30), "/");
        
setcookie("kurz""$row->kurz"time()+(60*60*24*30), "/");
        
setcookie("av""$row->av"time()+(60*60*24*30), "/");
        
setcookie("konsi""$row->konsi"time()+(60*60*24*30), "/");

        echo 
" Hallo $row->name. Du wurdest erfolgreich eingeloggt. <br>
            Du wirst gleich weitergeleitet"
;
    } 
// Code Ende //

Geändert von derspoon (19-06-2008 um 14:30 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 19-06-2008, 14:18
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zunächst mal http://www.das-dass.de/ dann Regel lesen: http://www.php-resource.de/forum/sho...threadid=50454 dann mach dich schlau über SQL-Injection

Nun zum Problem:

1. name ist reserviertes Wort, pack den Spaltennamen in Backsticks
2. hast du eventuell Leerzeichen im Namen in der DB bzw. bei der Eingabe? Prüfe mal.
Mit Zitat antworten
  #3 (permalink)  
Alt 19-06-2008, 14:22
derspoon
 Newbie
Links : Onlinestatus : derspoon ist offline
Registriert seit: Jan 2005
Beiträge: 9
derspoon ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sei doch net so grantig

Es geht nicht um die Namen, es geht um das Passwaort (pw)

Wenn ich ein ECHO erstelle sind $pw und $row->pw gleich, aber die Abfrage gibt immer ein true aus.
Mit Zitat antworten
  #4 (permalink)  
Alt 19-06-2008, 14:34
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Der wichtige Teil des Codes in bunt:
PHP-Code:
while($row mssql_fetch_object($ergebnis)) {
    if (
$pw != $row->pw) {
        echo 
" Hallo, dein Password ist Falsch";
        exit();
    }
    echo 
"$row->pw = $pw";
    
setcookie("name""$row->name"time()+(60*60*24*30), "/");
    
// weitere setcookie() ...
    
echo " ... erfolgreich eingeloggt. Du wirst gleich weitergeleitet";

Lies mal die Stickies in diesem Board, besonders die Passagen zu error_reporting und "cannot modify header information". Dann weißt du, warum deine Debug-Ausgabe vor setcookie() gar schlecht platziert ist.

Außerdem solltest du dir mssql_error() ausgeben lassen.

Warum brauchst du eigentlich eine Schleife? Ein Benutzername ist doch hoffentlich eindeutig, d.h. es gibt genau einen oder gar keinen Treffer in der DB.

Gibt es einen Grund, dass du mit Cookies arbeitest? Was spricht gegen Sessions?

Last but not least: Passwörter sollten niemals per GET übergeben werden!
Mit Zitat antworten
  #5 (permalink)  
Alt 19-06-2008, 14:35
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ähm ... was denn nun entscheide dich, Abfrage true oder false, und wenn Abfrage dann hat sie erstmal nichts mit dem Passwort zu tun, sondern Namen (in Where-Klausel).
Mit Zitat antworten
  #6 (permalink)  
Alt 19-06-2008, 14:37
derspoon
 Newbie
Links : Onlinestatus : derspoon ist offline
Registriert seit: Jan 2005
Beiträge: 9
derspoon ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das echo vor der Cookieeingtragung ist nur derzeit vorhanden um zu prüfen ob $pw = $row->pw ist, das wird wieder gelöscht.

Es gibt nur einen Eintrag zu jeder Person das stimmt. Wie kann ich das anders lösen? Btw. welchen Code müßte ich setzten um zu prüfen, das das Passwort ($pw) = dem DB Passwort ist ?

True ^^

Es geht eigentlich nur darum, dass die Abfrage

PHP-Code:
        if ($pw != $row->pw)
        {
            echo 
" Hallo, dein Password ist Falsch";
            exit();
        } 
Immer TRUE zutrifft, auch wenn das Passwort ($pw) mit dem DB passwort übereinstimmt.

Against Sessions
Ich hab keine Ahnung von Sessions. Es handelt sich auch nur um eine kleine Intranetseite, die also nicht mit dem Internet in Verbindung gebracht wird. Daher spielt sicherheit dort ein kleine Rolle. Ist bisher auch nur in der Programmierung, aber ich werde das PW via POSt übergeben.

Geändert von derspoon (19-06-2008 um 15:50 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 19-06-2008, 15:09
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zitat:
Original geschrieben von derspoon
Es gibt nur einen Eintrag zu jeder Person das stimmt. Wie kann ich das anders lösen? Btw. welchen Code müßte ich setzten um zu prüfen, das das Passwort ($pw) = dem DB Passwort ist ?
PHP-Code:
$sql "SELECT 1 FROM usr WHERE usr.name = '".$_POST['name']."'"
       
." AND pw = MD5('".$_POST['pw']."')";
$res mssql_query($sql) or die(mssql_error());
$access = (mssql_num_rows($res) == 1); 
MD5 soll ein Wink mit dem Zaunpfahl sein.

Geändert von onemorenerd (19-06-2008 um 15:22 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 19-06-2008, 15:13
wshbg
 Registrierter Benutzer
Links : Onlinestatus : wshbg ist offline
Registriert seit: Jun 2007
Beiträge: 33
wshbg ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die while Schleife nach dem select ist überflüssig, da die Abfrage in der Regel nur einen Datensatz liefern sollte, evtl. prüfen mit mysql_num_rows().
Deine "Überprüfung"
Code:
echo "$row->pw = $pw";
ist keine, sondern eine Zuweisung. Und (wurde schon gefragt), hast du evtl. Leerzeichen in der DB oder in dem per GET übermittelten pw?
Wilfried
__________________
Die Macht der Presse spüren vor allem die Weintrauben.
Mit Zitat antworten
  #9 (permalink)  
Alt 19-06-2008, 15:19
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von asp2php
1. name ist reserviertes Wort, pack den Spaltennamen in Backsticks[/B]
Backticks in MSSQL?
__________________
Gruss
H2O
Mit Zitat antworten
  #10 (permalink)  
Alt 19-06-2008, 15:28
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von wshbg
Deine "Überprüfung"
Code:
echo "$row->pw = $pw";
ist keine, sondern eine Zuweisung.
Wo siehst du so etwas?
__________________
Gruss
H2O
Mit Zitat antworten
  #11 (permalink)  
Alt 19-06-2008, 15:32
derspoon
 Newbie
Links : Onlinestatus : derspoon ist offline
Registriert seit: Jan 2005
Beiträge: 9
derspoon ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das echo ist ja auch nicht die Abfrage, sondern die if abfrage ergibt immer true bzw. stimmt immer obwohl das PW richtig ist.

In der Datenbank ist in der PW Spalte kein Leerzeichen, ich habe nur 15 Zeichen zulässig und ein PW mit 6 Zeichen, aber das sollte ja kein Problem darstellen.

Ich habe das gleiche Problem aber auch bei anderen Vergleichen von Variablen und Datenbankausgaben. Ich verstehe den Fehler nicht, da ich über ein Echo den Wert der Variablen und der DBAusgabe immer prüfen und meine Abfrage sollte funktionieren.

Echo " $pw = $row->pw " ergibt 123456 = 123456
Mit Zitat antworten
  #12 (permalink)  
Alt 19-06-2008, 15:35
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von H2O
Backticks in MSSQL?
Habe anfangs nicht genau hin geguckt für MSSQL natürlich []
Mit Zitat antworten
  #13 (permalink)  
Alt 19-06-2008, 15:38
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von derspoon

Es geht eigentlich nur darum, dass die Abfrage

PHP-Code:
        if ($pw != $row->pw)
        {
            echo 
" Hallo, dein Password ist Falsch";
            exit();
        } 
Immer False zutrifft, auch wenn das Passwort ($pw) mit dem DB passwort übereinstimmt.
Natürlich ist sie false, wenn die Passwörter übereinstimmen, was willst du noch
Mit Zitat antworten
  #14 (permalink)  
Alt 19-06-2008, 15:48
derspoon
 Newbie
Links : Onlinestatus : derspoon ist offline
Registriert seit: Jan 2005
Beiträge: 9
derspoon ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hab doch schon geschrieben, das sie TRUE ist ^^

Also egal ob ich das Richtige PW oder das Falsche eintragen, jedesmal kommt der Satz.

Ich hab das gleiche Problem wenn ich eine Variable mit einer DBVariable vergleiche, es stimmt nie überein.

Über ein ECHO sehe ich aber das beide Variablen übereinstimmen.
Mit Zitat antworten
  #15 (permalink)  
Alt 19-06-2008, 15:50
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von derspoon
Echo " $pw = $row->pw " ergibt 123456 = 123456
Was ergibt
PHP-Code:
echo ":$pw::$row->pw:"
?
__________________
Gruss
H2O
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:55 Uhr.