php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.12.2004, 09:24  
Gast
 
Beiträge: n/a
Standard [Erledigt] Formular optimierung und Email check

So ich hab ein anmelde formular geschrieben

register.php
die daten werde dann natürlich auch wieder an die register.php geschickt.

so jetzt hab ich dann eine IF abfrage drinnen, wo alle situtaionen gecheckt werden passwort 2mal gleich, nick nicht vergeben, email drinnen, und es müssen natürlich alle felder ausgefüllt sein.

diese sieht dann so aus:
PHP-Code:
 if($nick_uebergeben != '')
 {
 
$sql_user_doppelt "SELECT * FROM taa_1on1_ladder_piloten WHERE User_nick Like '".$nick_uebergeben."'";
 
$result_user_doppelt mysql_query($sql_user_doppelt);
 
$row_user_doppelt mysql_fetch_object($result_user_doppelt);
 }
 if(
$action=='submit' AND $_POST['nick'] != '' AND $_POST['email'] != '' AND $_POST['passw1'] == $_POST['passw2'] AND $_POST['passw1'] != '' AND $row_user_doppelt->User_nick == '')
 {
  
$query "Select Max(User_rank) from taa_1on1_ladder_piloten";
  
$result2 mysql_query($query);
  
$max mysql_result($result2,0);
  
$max $max+1;
  
$regday date("d");
  
$regmonat date("m");
  
$regjahr date("Y");

  
mysql_query("INSERT INTO taa_1on1_ladder_piloten(User_nick,User_email,User_passw, User_rank, User_reg_day, User_reg_monat, User_reg_jahr) VALUES('".$_POST['nick']."','".$_POST['email']."','".$_POST['passw1']."',$max,$regday,$regmonat,$regjahr)",$link);
//html code 
so jetzt stell ich mir die frage
wie kann ich die vergleich option besser gestallten
eine IF abfrage mit 10optionen ist kagge!
und leider hasse ich funktionen, hab die schon in TP(turbo pascal) und C++ net gemocht und immer fehler gemacht.
wie checke ich ob die email addy richtig ist.
functionen dafür gibbet ja ohne ende zum beispiel diese:
PHP-Code:
   function check_mail($mail){ 
      if(!
eregi("^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,3}\$"$mail)) { 
         echo 
"Fehler ! E-Mail Adresse ist ungültig"
      } 
wie bau ich sie dort am geschicktesten ein?

und noch eine fragen
wenn sich eine user mit dem nick DEI#8 registriert gibt es ja beim auslesen später problem wegen dem #
gibbet schon eine function wo ich testen kann oder der user sonderzeichen benutzt? und dann verhindere das er sie benutz?


Greetz Nana23
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.12.2004, 10:43  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.234
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Das Testen auf Sonderzeichen kannst du ebenfalls per eregi oder ähnliches machen. IMHO müssten dort im PHP- Manual sogar Beispiele zu genau diesem Zweck sein.

Zur anderen Frage: Wenn du Funktionen nicht magst, gebe dich mit deinem Code zufrieden...
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist gerade online  
Alt 29.12.2004, 10:43  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi "Nana23".

Ein paar Anmerkungen, die dir vielleicht weiterhelfen:

1. Auf alle externen Vars via $_POST etc. zugreifen

Ich vermute $nick_uebergeben und $action kommen auch aus dem Formular, oder? In jedem Fall zum Entwickeln register_globals auf off setzen und ggf. dennoch auch für Systeme programmieren, bei denen register_globals an ist. Wenn du das error_reporting-Level (auch in der php.ini) hochsetzt, ist das schon fast die ganze Miete.

2. if ($foo != '')

-> if (!empty($foo))
Gerade bei externen Vars bekommst du sonst eine Meldung, dass auf den Wert eines nicht existierenden Arrayfeldes zugegriffen wird, wenn die entsprechende Variable nicht übergeben wurde. Natürlich nur, wenn du die Meldungen nicht unterdrückst (siehe eben error_reporting in der php.ini)

3. SELECT * FROM

Immer nur die Felder auslesen, die du auch wirklich brauchst. Siehe http://php-faq.de/.

4. $nick_uebergeben, $sql_user_doppelt etc.

Leg dich doch mal auf EINE Sprache fest *g

5. Abfrage auf Dubletten

Erstmal schau dir mal die Funktion mysql_num_rows() an. Dann hast du so natürlich eine Race Condition. D.h., es kann sein, dass Benutzer A in seinem Skriptaufruf prüft, ob der Nick "Paul" noch zu haben ist und dort ein okay bekommt, sich dann Benutzer B als "Paul" registriert und dann Benutzer A sein "Paul" in die Datenbank klopfen will. Du musst also in jedem Fall den Benutzernamen in der Datenbank einmalig machen (...hat ja wahrscheinlich eh den primary_key, ansonsten Attribut UNIQUE setzen).

6. Reihenfolge der Queries

Du musst natürlich erst den Benutzer in die DB bringen und dann erst kannst du die Benutzerzahl updaten. Ich würde hier auch direkt auf die Benutzertabelle zugreifen und alle Benutzer zählen und den Wert nehmen - das ist weniger fehleranfällig und bei einer Neuregistrierung (bzw. auch Löschung eines Benutzerkontos) kann man ja ruhig diese paar Zehntel länger warten...

7. Injections

Bevor du externe Vars in deine Datenbank-Queries aufnimmst, musst du sicherstellen, dass diese "sauber" sind! Also entweder legst du als Systemanforderung fest, dass PHP mit magic_quotes_gpc = on konfiguriert ist, oder (was die flexiblere Variante ist) du prüfst diesen Wert im Skript und reagierst entsprechend. Siehe auch in der dclp-faq (http://php-faq.de/ ). Die Doppelkreuze (#) sind kein Problem -> siehe SQL (z.B. MySQL-Doku).

8. Passwörter verschlüsseln

In die Datenbank kommen Prüfsummen, nicht die Passwörter im Klartext - es sei denn, du kannst das für dein spezielles Projekt irgendwie rechtfertigen. md5() ist dein Freund *g

9. E-Mail-Validierung

Gääähn! Vergiss deine Abfrage und blätter auch hier in der dclp-faq. Und, BTW verwende, wenn es keinen speziellen Grund gibt, nicht die POSIX-Regexs (ereg etc.), sondern die PCREs (preg etc.).

10. Formularfehler abfangen

Mach ich meistens etwa so:

PHP-Code:
$errors = array();

if (empty(
$_POST['user']))    $errors[] = 'user empty';
if (empty(
$_POST['passwd1'])) $errors[] = 'password empty';
if (
$_POST['passwd1'] !== $_POST['passwd2']) $errors[] = 'passwords neq';
if (!
preg_match($config['password_regexp'], $_POST['passwd1'])) $errors[] = 'password invalid';

if (!empty(
$errors)) {

    switch (
true) {

        case (...):
        
$msg 'Das Passwort enthält ungültige Zeichen, bitte so und so...';
    }
    
print_register_form($msg); // oder so halt *g

}

$user   $_POST['user'];
$passwd $_POST['passwd1'];
... 
Basti
Basti ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Formular schickt keine Email alfonsodiecko PHP Tipps 2008 2 10.05.2008 20:19
Email aus Formular kontrollieren will nicht so recht... PHP Tipps 2006 7 24.05.2006 15:57
Email Formular funzt net thomson PHP Tipps 2006 25 03.04.2006 12:59
Formular an 2 Email adressen senden PHP Tipps 2006 7 07.01.2006 17:54
Subject in Email Formular PHP Tipps 2005-2 1 10.09.2005 12:58
Bild per email über Formular versenden PHP Tipps 2005-2 8 30.07.2005 14:46
Email Formular Beitragsarchiv 11 14.04.2005 08:41
Html Formular per email PHP Tipps 2005 1 30.03.2005 17:17
Formular an meine Email adresse senden 'progman' PHP Tipps 2005 1 01.03.2005 19:43
PHP Email Formular mit einem bzw. mehreren Anähngen PHP-Fortgeschrittene 1 11.12.2004 22:34
Wie implementiere ich mein Email Formular? PHP Tipps 2004-2 2 14.11.2004 17:02
GB Email check PHP Tipps 2004 53 27.10.2004 16:55
Suche eMail Formular in PHP Beitragsarchiv 2 12.10.2004 16:24
email formular: Name wird nicht übergeben PHP Tipps 2004 3 19.06.2004 13:36
formular und email PHP Tipps 2004 5 18.06.2004 21:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
email check php, formular email check, php formular email check, email check formular, php email check, kontaktformular email check, php mail check, http://www.php.de/php-tipps-2004-2/14950-erledigt-formular-optimierung-und-email-check.html, function emailcheck php, php valid email check 2010, eregi direkter skriptaufruf, check ob mail versendet php, php check email, email check php function, e-mailprüfung php, email checken formular, php check email adresse, php form mail check, php formularfelder check, abfrageformular e-mail fehler

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:07 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.