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 22-06-2007, 01:15
Truncate
 Registrierter Benutzer
Links : Onlinestatus : Truncate ist offline
Registriert seit: Nov 2005
Beiträge: 419
Truncate kann nur auf Besserung hoffen
Standard Alle Formulardaten vordefinieren

Hallo,

kann man irgendwie alle Strings aus Formulardaten irgendwie vordefinieren, damit man diese einfach auf Gültigkeit mittels RegEx abfragen kann?

Hatte mir das etwa so vorgestellt:

$strings = array(

"username"=>"[0-9a-zA-Z]{3,12]",
"plz"=>"[0-9]{5}]",
...

);

Was macht man aber wenn da auch gleich noch ein Fehlertext "ala PLZ ist ungültig" mit rein soll?
Mit Zitat antworten
  #2 (permalink)  
Alt 22-06-2007, 01:22
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wie bitte? verstehe nicht.
Mit Zitat antworten
  #3 (permalink)  
Alt 22-06-2007, 01:33
Truncate
 Registrierter Benutzer
Links : Onlinestatus : Truncate ist offline
Registriert seit: Nov 2005
Beiträge: 419
Truncate kann nur auf Besserung hoffen
Standard

Stellt Dir ein Forum vor, wo viel vom User abgeschickt wird.

Die Formularfelder werden natürlich immer überprüft, z.B. ob der Username nur Buchstaben und Zahlen enthält und die minimale bzw. maximale Länge.

Diese Überprüfung des Usernames kommt ja z.B. öfter an verschiedenen Stellen vor...

Ich wollte daher die ganzen Gültigkeitsüberprüfungen auslagern und dann an der jeweiligen Stelle nur noch so einheitlich prüfen:

if(check($_POST['username'])==true){...}
...

if(check($_POST['passwort'])==true){...}
...

if(check($_POST['plz'])==true){...}
...
Mit Zitat antworten
  #4 (permalink)  
Alt 22-06-2007, 01:36
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

die idee ist völlig richtig. wo ist das problem?
Mit Zitat antworten
  #5 (permalink)  
Alt 22-06-2007, 01:42
Truncate
 Registrierter Benutzer
Links : Onlinestatus : Truncate ist offline
Registriert seit: Nov 2005
Beiträge: 419
Truncate kann nur auf Besserung hoffen
Standard

Also so hab ich es mir vorgestellt:

PHP-Code:
function check($was)

{

$variablen = array(

"username"=>"[0-9a-zA-Z]{3,12}]",
"plz"=>"[0-9]{5}]",

);

if(
preg_match($variablen[$was],$was)){return true;}


Wenn ich jetzt auch noch individuelle Fehlermeldungen pro Variable zurückliefern lassen will, dann muss ich pro Variable nochmal ein Array ins vorhandene einbinden, richtig?

Und wie löst man es z.B., wenn bestimmte Variablen vor dem Check erstmal mit trim() und/oder strip_tags() bereinigt werden sollen? Auch mit in das untergeordnete Array den jeweiligen Befehl mit rein und dann per eval() ausführen lassen?
Mit Zitat antworten
  #6 (permalink)  
Alt 22-06-2007, 02:02
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Wenn ich jetzt auch noch individuelle Fehlermeldungen pro Variable zurückliefern lassen will, dann muss ich pro Variable nochmal ein Array ins vorhandene einbinden, richtig?
Mach ein zusätzliches Array:
PHP-Code:
$meldungen = array(

"username"=>"Benutzername ungültig",
"plz"=>"Postleizahl ungültig",

);

if(
preg_match($variablen[$was],$was)) {
   return 
true;
} else {
   return 
$meldungen[$was];

Und nicht vergessen: if( check("...") === true )
Zitat:
Und wie löst man es z.B., wenn bestimmte Variablen vor dem Check erstmal mit trim() und/oder strip_tags() bereinigt werden sollen? Auch mit in das untergeordnete Array den jeweiligen Befehl mit rein und dann per eval() ausführen lassen?
Wie meinen?
Du meinst if( check(trim($_POST["irgendwas"]))) ?
Mit Zitat antworten
  #7 (permalink)  
Alt 22-06-2007, 02:19
Truncate
 Registrierter Benutzer
Links : Onlinestatus : Truncate ist offline
Registriert seit: Nov 2005
Beiträge: 419
Truncate kann nur auf Besserung hoffen
Standard

Zitat:
Original geschrieben von kuddeldaddeldu Und nicht vergessen: if( check("...") === true )
Warum das? Muss mal wohl 3 === machen wenn der Rückgabewert von einer Funktion kommt?

Zitat:
Original geschrieben von kuddeldaddeldu
Wie meinen?
Du meinst if( check(trim($_POST["irgendwas"]))) ?
Bestimmte (nicht alle!) Variablen sollen mit z.B. strip_tags() behandelt werden. Ich hatte mir vorgestellt, dass diese Befehle auch gleich dynamisch mit im Array sind und per eval() ausgeführt werden. Wird aber glaub zu kompliziert, so geht es glaub auch:

PHP-Code:
function validator($was)

{

$variablen = array(

"userid"=>array(
"aufbau"=>"[0-9a-zA-Z]{3,12}]",
"fehler"=>"Die UserID darf nur ...",
"befehl"=>"strtolower"),

"passwort"=>array(
"aufbau"=>"[0-9a-zA-Z]{6,12}]",
"fehler"=>"Das Passwort darf nur ...",
"befehl"=>"strip_tags"),

);

if(
$variablen[$was]['befehl']=="strip_tags"){$was=strip_tags($was);}
if(
$variablen[$was]['befehl']=="strtolower"){$was=strtolower($was);}

if(
preg_match($variablen[$was]['aufbau'],$was))
{return 
true;}
else
{return 
$variablen[$was]['fehler'];}

}

if(
validator($_POST['username'])===true){...} 
Wobei man hier return $variablen[$was]['fehler']; so nicht einfach zurückgeben kann. Eine globaler String wäre wohl besser...
Mit Zitat antworten
  #8 (permalink)  
Alt 22-06-2007, 02:58
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Bestimmte (nicht alle!) Variablen sollen mit z.B. strip_tags() behandelt werden.
Und deshalb würde ich das vor Aufruf der Funktion check, validator, whatever entscheiden/machen. Aber das ist vielleicht Geschmackssache.
Zitat:
Wobei man hier return $variablen[$was]['fehler']; so nicht einfach zurückgeben kann.
Warum nicht?
Zitat:
Eine globaler String wäre wohl besser...
Warum das?
=== brauchst Du in diesem Fall, weil die Bedingung sonst immer true wäre. Schau mal hier.
Mit Zitat antworten
  #9 (permalink)  
Alt 22-06-2007, 11:10
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Übrigens:
PHP-Code:
if(check($_POST['username'],'username')) 
Zweiter Parameter ist notwendig.

geht natürlich auch als Klasse:
PHP-Code:
$C->check(*,*);
$C->check(*,*);
$C->check(*,*);
$C->check(*,*);

if(!
$C->error())
  
// eintragen
else
  die(
$C->getErrorMsg()); 
gibt natürlich diverse ansätze.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!

Geändert von TobiaZ (22-06-2007 um 11:14 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 22-06-2007, 12:12
Truncate
 Registrierter Benutzer
Links : Onlinestatus : Truncate ist offline
Registriert seit: Nov 2005
Beiträge: 419
Truncate kann nur auf Besserung hoffen
Standard

@kuddeldaddeldu:

Nun das erwartet hier nur ob es "true" ist:

if(validator($_POST['username'])===true){...}else{echo "fehler";}

Den Fehler gleich mit per return zu übergeben macht ja da keinen Sinn. Die Fehlermeldung sollte dann einfach eine globale Variable sein und mit ausgegeben werden.

Komischerweise geht es bei mir mit == problemlos, liefert also auch false zurück.

@TobiaZ:

Wie kommst Du auf einen 2. Parameter???
Mit Zitat antworten
  #11 (permalink)  
Alt 22-06-2007, 12:29
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sinn macht es natürlich nur ungefähr so:
PHP-Code:
$result validator($_POST['username'], "username");
if( 
$result === true ) {
   
// mach wat
} else {
   
fehler($result);

Zitat:
Komischerweise geht es bei mir mit == problemlos, liefert also auch false zurück.
Wenn Du eine Fehlermeldung, also einen String zurückgegeben hast?

Den zweiten Parameter brauchst Du, um zu identifizieren, welche Variable Du da übergeben hast. Hatte ich übersehen.
Mit Zitat antworten
  #12 (permalink)  
Alt 22-06-2007, 12:54
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Na, im sinne der Wiederverwendbarkeit. Nicht immer heißen Formularfelder gleich. Mal password, mal passwort. und du willst ja nicht immer die Grunddaten anpassen, nur weil sich ein Formularfeld ändert.
Zitat:
Sinn macht es natürlich nur ungefähr so: [...]
Da finde ich objektorientiert aber schöner...
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #13 (permalink)  
Alt 22-06-2007, 17:45
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Da finde ich objektorientiert aber schöner...
Da muss ich Dir recht geben.
Zitat:
Na, im sinne der Wiederverwendbarkeit. Nicht immer heißen Formularfelder gleich.
@TS: Und vor allem weisst Du in der Funktion ja nicht mehr, welches $_POST-Feld übergeben wurde (username?, passwort?,plz?). Da hast Du nur den Inhalt.

Geändert von kuddeldaddeldu (22-06-2007 um 17:48 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 22-06-2007, 17:52
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Und vor allem weisst Du in der Funktion ja nicht mehr, welches $_POST-Feld übergeben wurde (username?, passwort?,plz?). Da hast Du nur den Inhalt.
sagtest du ja bereits.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #15 (permalink)  
Alt 22-06-2007, 17:57
Truncate
 Registrierter Benutzer
Links : Onlinestatus : Truncate ist offline
Registriert seit: Nov 2005
Beiträge: 419
Truncate kann nur auf Besserung hoffen
Standard

Mit Klassen wäre es sicherlich auch schön lösbar nur leider sträube ich mich bei dem Thema immer irgendwie... das macht mir dann alles zu unübersichtlich... auch wenn es für die Freaks natürlich alles logisch und überhaupt ist :-)
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 00:45 Uhr.