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 08-09-2006, 16:04
Sandmancw
 Junior Member
Links : Onlinestatus : Sandmancw ist offline
Registriert seit: Apr 2003
Beiträge: 75
Sandmancw ist zur Zeit noch ein unbeschriebenes Blatt
Standard Fehler in meinem Registrationsscript.. aber wo?!

Hihiho,
schreib grad an nem registration script, den fehler erläuter ich gleich, such jetzt schon seit stunden nach dem fehler und hab probiert und probiert, aber immer wieder der gleiche fehler...

prüfen ob nicht-optionale felder ausgefüllt sind: geht
prüfen ob email addys übereinstimmen: geht
prüfen ob passwörter übereinstimmen: geht
prüfen ob username schon in der db ist: geht ab und zu
prüfen ob email schon in der db ist: geht ab und zu

aaalso, vorher hab ich das strtoupper noch ned drinne gehabt, da konnt ich nüscht eintragen, also hab ich inna phpmyadmin nen datensatz eingetragen, dann konnt ich den gleichen datensatz nochmal eintragen bloß klein geschrieben, dann ging alles wunderbar... wenn ich dann versuche nen neuen datensatz einzutragen, dann wird plötzlich alles abgehackt (die stelle ab nem bestimmten teil vom code... )

also die frage lautet, wie muss ich den quelltext genau schreiben um zu prüfen ob email oder username schon in der datenbank vorhanden sind, egal ob groß oder klein geschrieben z.b. Sandman oder sandman oder SaNdMaN

PHP-Code:
<?php

        
if($send == "Registrieren")
    {
        
        if(
filled($username) && filled($email1) && filled($email2) && filled($pass1) && filled($pass2) == true)
        {

            if(
agree($email1$email2) == true)
            {

                if(
agree($pass1$pass2) == true)
                {
// problemteil
                    
connect();

                    
$query mysql_query("SELECT * FROM `ct_userdetails` WHERE `username` = '".$_POST['username']."'");
                    
$result mysql_fetch_array($query) OR DIE( mysql_error() );    

                    
$qry mysql_query("SELECT * FROM `ct_userdetails` WHERE `email` = '".$email1."'");
                    
$rslt mysql_fetch_array($qry) OR DIE( mysql_error() );    

                    echo 
strtolower($_POST['username']);
                    echo 
strtolower($result['username']);
                    echo 
strtolower($email1);
                    echo 
strtolower($rslt['email']);

                    if(
strtolower(($_POST['username']) == strtolower($result['username'])) OR (strtolower($email1) == strtolower($rslt['email'])))
                    {
                        
$Srv_msg "Benutzer oder Email-Adresse existiert schon.";
                    }

                    elseif(
$result['username'] == "" AND $rslt['email'] == "")
                    {

                        if(
filled($day) && filled($month) && filled($year))
                        {
                            
$birthday $day "." $month "." $year;    
                        }     
    
                        
connect();
                               
mysql_query("INSERT INTO `ct_userdetails` (`id`,
                                                 `username`,
                                                 `email`,
                                                 `passwort`,
                                                 `name`,
                                                 `beruf`,
                                                 `geburtstag`,
                                                 `wohnort`,
                                                 `bezirk`,
                                                 `plz`,
                                                 `msn`,
                                                 `icq`,
                                                 `aim`,
                                                 `yim`,
                                                 `skype`,
                                                 `beschreibung`,
                                                 `signatur`,
                                                 `reg_datum`) 
                                      VALUES ('',
                                         '"
.$username."',
                                           '"
.$email1."',
                                           '"
.$pass1."',
                                           '"
.$name."',
                                           '"
.$beruf."',
                                           '"
.$birthday."',
                                           'Berlin',
                                           '"
.$bezirk."',
                                           '"
.$plz."',
                                           '"
.$messenger_msn."',
                                           '"
.$messenger_icq."',
                                           '"
.$messenger_aim."',
                                           '"
.$messenger_yim."',
                                           '"
.$messenger_skype."',
                                           '"
.$beschreibung."',
                                           '"
.$signatur."',
                                           '"
.timestamp()."')")
        
                                             OR DIE ( 
mysql_error() );
    
                        
$Srv_msg "Die Registrierung war erfolgreich.";
                    }             
                        

                }
    
                elseif(
agree($pass1$pass2) == false)
                {
                    
$Srv_msg "Passw&ouml;rter stimmen nicht &uuml;berein.";
                }

            } 

            elseif(
agree($email1$email2) == false)
            {
                
$Srv_msg "Email-Adressen stimmen nicht &uuml;berein.";
            }

        } 

        elseif(
filled($username) OR filled($email1) OR filled($email2) OR filled($pass1) OR filled($pass2) == false)
        { 
            
$Srv_msg "Bitte f&uuml;lle alle Felder aus die mit einem Stern gekennzeichnet sind."
        }

    }
?>
danke schonmal im vorraus, hoffe der code ist euch ned zu lang, aber ich hielt es für besser ihn "komplett" (htmlteil, funktionen nicht inbegriffen) rein zu posten...

funktionen:
filled();
connect();
agree();

Geändert von Sandmancw (08-09-2006 um 16:06 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 08-09-2006, 16:21
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Fehler in meinem Registrationsscript.. aber wo?!

Zitat:
Original geschrieben von Sandmancw
danke schonmal im vorraus, hoffe der code ist euch ned zu lang
vor allen dingen ist er zu breit - forenregeln beachten.

strtolower brauchst du nicht, dass macht mysql schon. du machst eine abfrage auf user oder email, wenn dir einer oder mehrere datensätze (dürften ja maximal zwei sein) zurückgeliefert werden, weißt du, ob etwas schon in der db vorhanden ist.

dann solltest du dein if - elseif überdenken, du fragst ja alles doppelt ab.
Mit Zitat antworten
  #3 (permalink)  
Alt 08-09-2006, 16:25
Sandmancw
 Junior Member
Links : Onlinestatus : Sandmancw ist offline
Registriert seit: Apr 2003
Beiträge: 75
Sandmancw ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ne, mysql macht das ned... frag mich nich warum... machts einfach ned...
deswegenbrauch ich strtolower... meine eingabe war klein, die von der datenbank war groß... trotzdem nen eintrag erfolgt... hatte ich 2 mal sandman drinne stehen...

das mit den if/else is mir klar, kann die auch zusammenfassen, aber erstmal möcht ich ne lösung für mein prob finden, weil ich find einfach end heraus, worans liegen könnte... (was auchd arann liegen kann, dass ich seit 22 stunden wach bin, aber naja...)
Mit Zitat antworten
  #4 (permalink)  
Alt 08-09-2006, 16:37
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Sandmancw
ne, mysql macht das ned... frag mich nich warum... machts einfach ned...
deswegenbrauch ich strtolower... meine eingabe war klein, die von der datenbank war groß... trotzdem nen eintrag erfolgt...
Ob case-sensitive verglichen wird, hängt bei MySQL vom Feldtyp ab.

Für die TEXT-Datentypen erfolgt der Vergleich per Default case-insensitive,
für die BLOB-Typen case-sensitive.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #5 (permalink)  
Alt 08-09-2006, 16:44
Sandmancw
 Junior Member
Links : Onlinestatus : Sandmancw ist offline
Registriert seit: Apr 2003
Beiträge: 75
Sandmancw ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sind VARCHAR felder utf8_blabla_ci dingsbums hab irgendwo gelesen, dass das dann geht, aber geht trotzdem ned ^^
Mit Zitat antworten
  #6 (permalink)  
Alt 08-09-2006, 16:45
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

dann kannst du mal die klammern beim strtolower-if überprüfen, der erste ausdruck dürfte immer wahr sein.

aber wie wahsaga schon geschrieben hat, würde ich die feldtypen ändern.
Mit Zitat antworten
  #7 (permalink)  
Alt 08-09-2006, 16:56
Sandmancw
 Junior Member
Links : Onlinestatus : Sandmancw ist offline
Registriert seit: Apr 2003
Beiträge: 75
Sandmancw ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das problem liegt viel mehr darin, dass der etxt abgehackt wird ... aber bisher danke für die hilfe ^^
Mit Zitat antworten
  #8 (permalink)  
Alt 09-09-2006, 07:41
Sandmancw
 Junior Member
Links : Onlinestatus : Sandmancw ist offline
Registriert seit: Apr 2003
Beiträge: 75
Sandmancw ist zur Zeit noch ein unbeschriebenes Blatt
Standard

weiss jetzt worans lag... wegen dem or dir wurde alles abgehackt, denn die anweisung sucht nen usernamen, wenn er vorhanden ist lebt se weiter und wenn der username nicht in der db ist stirbt se,,, aber wie kann ich das umgehen?! weil ich den error befehl schon gern drinne hätte ^^

$query = mysql_query("SELECT * FROM `ct_userdetails` WHERE `username` = '".$username."' OR `email` = '".$email1."'");
$result = mysql_fetch_array($query);
Mit Zitat antworten
  #9 (permalink)  
Alt 09-09-2006, 08:07
ZombieChe
 Member
Links : Onlinestatus : ZombieChe ist offline
Registriert seit: Apr 2004
Ort: Hannover
Beiträge: 225
ZombieChe ist zur Zeit noch ein unbeschriebenes Blatt
ZombieChe eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von Sandmancw
denn die anweisung sucht nen usernamen, wenn er vorhanden ist lebt se weiter und wenn der username nicht in der db ist stirbt se,,,
das denke ich stimmt nicht. Die Abfrage 'stirbt' nur dann, wenn sie einen Fehler enthält. Der Tatbestand, dass kein passender Datensatz gefunden wurde, heißt nicht, dass sie fehlerhaft ist also stirbt. In diesem Fall gibt die Funktion mysql_fetch_array() den Wert FALSE zurück (s. php-man). Also solltest du auch das hier
Zitat:
PHP-Code:
elseif($result['username'] == "" AND $rslt['email'] == ""
besser auf TRUE/FALSE testen als auf einen leeren string.

MySQL ist wahrscheinlich gar nicht der Grund bzgl. der Groß-/Kleinschreibung, sondern php, da du - zusätzlich zu der sql abfrage, ob ein user oder eine email schon existiert - auch nochmal eine php abfrage machst, die die schreibung nicht ignoriert. Wie gesagt besser auf TRUE testen...Sie dazu auch strcasecmp

Geändert von ZombieChe (09-09-2006 um 09:05 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 09-09-2006, 12:22
Sandmancw
 Junior Member
Links : Onlinestatus : Sandmancw ist offline
Registriert seit: Apr 2003
Beiträge: 75
Sandmancw ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sieht jetzt eh ganz anders aus... dumm, dass OR und AND aus der digitaltechnik übernommen sind... dachte nen OR heisst dann auch "entweder das oder das muss stimmen/ nicht stimmen" aber vorhin hab ich festgestellt, dass das nich so is...

script funktioniert, sieht nich mehr so aus wie vorher... sind keine fehler mehr drinne... wollte nur sagen was ich beim fehlersuchen festgestellt habe... wegen dem or die wurde der code abgehackt und als ichs raus genommen habw ar alles ok... der mysql_error() wurde ned mal angezeigt, wenn ich aber ne fehlermeldung eingegeben habe, dann wurde diese auch angezeigt...
Mit Zitat antworten
  #11 (permalink)  
Alt 09-09-2006, 13:10
ZombieChe
 Member
Links : Onlinestatus : ZombieChe ist offline
Registriert seit: Apr 2004
Ort: Hannover
Beiträge: 225
ZombieChe ist zur Zeit noch ein unbeschriebenes Blatt
ZombieChe eine Nachricht über ICQ schicken
Standard

wofür gibts XOR?
Mit Zitat antworten
  #12 (permalink)  
Alt 09-09-2006, 13:26
closure
 Master
Links : Onlinestatus : closure ist offline
Registriert seit: Mar 2006
Beiträge: 796
closure ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Sandmancw
dumm, dass OR und AND aus der digitaltechnik übernommen sind... dachte nen OR heisst dann auch "entweder das oder das muss stimmen/ nicht stimmen" aber vorhin hab ich festgestellt, dass das nich so is...
Na da hat aber einer nicht richtig aufgepasst, denn auch
in der "digitaltechnik" bedeutet "A oder B" dass entweder A wahr ist
oder B wahr ist oder A und B wahr sind.

Wie vom vorposter bereits gesagt gibt es xor für exclusives
oder. Das "normale" oder ist inklusiv.

greets
__________________
(((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")
Mit Zitat antworten
  #13 (permalink)  
Alt 09-09-2006, 13:32
Lennie
 PHP Senior
Links : Onlinestatus : Lennie ist offline
Registriert seit: May 2006
Beiträge: 1.013
Lennie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ist hier denn keiner Mehr in der Lage Quelltext umzubrechen?
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

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

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:04 Uhr.