Portal > Foren > PHP > PHP-Programmierung > Variable auf verschiedene Faktoren prüfen.
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 12.12.2005, 13:36 Nach oben    #1
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

Nun hatte ich ne Frage und keiner war schnell genug
Nach einigem Hin und her hab ich es selbst herausgefunden.
Falls jemand Verbesserungsvorschläge hat, her damit.
Vielleicht interessierts ja jemanden, deshalb auch die Lösung hier.

PHP-Code:
$lengthplz =5;
$plzvon 39100;
$plzbis 39400 ;
$_POST["send"]["plz"] = (int)$_POST["send"]["plz"];
    if ((
strlen($_POST["send"]["plz"]) != $lengthplz) OR
        (!
is_int($_POST["send"]["plz"]))){
        
$fgplz "Ihre angegebene Postleitzahl ist nicht gültig!<br>"
    }
     elseif
        ((
$_POST["send"]["plz"] < $plzvon) OR
        (
$_POST["send"]["plz"] > $plzbis) )
       {
        
$fgplz "Ihre angegebene Postleitzahl liegt nicht im gültigen Postleitzahlenbereich!<br>"
                
    } else { 
$gutplz"PLZ in Ordnung." ;
      } 
__________________
Wer später bremst, fährt länger schnell...

Geändert von Doggi (12.12.2005 um 14:58 Uhr)
Doggi ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.12.2005, 15:48 Nach oben    #2
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

PHP-Code:
$plz_len 5;
$plz_min 39100;
$plz_max 39400;

if ( !
is_int($plz) || ( strlen(strval($plz)) != $plz_len ) )
{
    echo 
"ungültig";
}
elseif ( ( 
$plz $plz_min ) || ( $plz $plz_max ) )
{
    echo 
"falscher bereich";
}
else
{
    echo 
"okay";

__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.12.2005, 16:21 Nach oben    #3
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

Danke für die Antwort. Werde der Sache mal auf den Grund gehen und versuchen das zu verstehen.
__________________
Wer später bremst, fährt länger schnell...
Doggi ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.12.2005, 19:27 Nach oben    #4
Goldman.de
 
Benutzerbild von J33d3X
 
Registriert seit: 09.10.2005
Ort: Frankfurt am Main
Beiträge: 190
Standard

Code:
$out = !isset($_POST['plz']) || ereg("[^0-9]+", $_POST['plz']) ? 'ung&uuml;tig' : 5 != strlen($_POST['plz']) ? 'na na na' : $_POST['plz'];
echo $out;
"ungetestet"

die wertebereiche müssten noch mit rein sollte aber kein prob sein


mfg
__________________
Code:
eval('echo "'.gzinflate(base64_decode('8zI2TjGOAAA=')).'";'); 
J33d3X ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.12.2005, 12:02 Nach oben    #5
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

Danke, ich werd auch deinen vorschlag mal prüfen
Der von Lars funktioniert jedenfalls.
__________________
Wer später bremst, fährt länger schnell...

Geändert von Doggi (13.12.2005 um 14:08 Uhr)
Doggi ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.12.2005, 15:21 Nach oben    #6
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

woran kann es liegen, dass meine prüfroutinen lokal auf dem xampp apache funktionieren und online auf dem webserver von hosteurope nicht ?

ich dreh noch durch. erst brauche ich stunden bis es überhaupt funktioniert, dann geht es endlich und online haut der ganze kram nicht mehr hin. *frust*
__________________
Wer später bremst, fährt länger schnell...
Doggi ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.12.2005, 15:23 Nach oben    #7
Verplanter Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 239
Standard

Und was bringt er am Server für Fehler die er am localhost nicht macht ?!
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!
DasMööp ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.12.2005, 15:31 Nach oben    #8
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

er durchlief die schleifen fehlerhaft weil er die variablen nicht kannte.

das problem war, dass lokal die variablen in der schleife ohne session funktioniert haben also $plz ging lokal. auf dem server musste ich es so schreiben: $_SESSION['plz']
warum auch immer.

sessions sind für mich immernoch sehr rätselhaft. irgendwann steig ich da auch noch hinter.

für außenstehende nicht ersichtlich. dieser thread hängt mit diesem
showthread.php?t=160 zusammen, sonst würde es natürlich ohne session funktionieren. Falls jemand die gleichen Probleme mit der Formularprüfung hat, wird das sicher helfen.
__________________
Wer später bremst, fährt länger schnell...

Geändert von Doggi (13.12.2005 um 16:05 Uhr)
Doggi ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.12.2005, 16:27 Nach oben    #9
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

$plz kannst du nur benutzen, wenn in deiner PHP-Config register_globals aktiviert ist. Da das aber ein Sicherheitsrisiko ist, ist es meistens deaktiviert.
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.12.2005, 16:35 Nach oben    #10
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

Danke für die Erleuchtung
Jetzt ist es sogar logisch.
__________________
Wer später bremst, fährt länger schnell...
Doggi ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.12.2005, 16:36 Nach oben    #11
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Zitat:
Zitat von Doggi
Jetzt ist es sogar logisch.
So muss dat
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.12.2005, 19:06 Nach oben    #12
Jay
Gast
 
Beiträge: n/a
Standard

Einfach ein Regulärer Ausdruck.

PHP-Code:
$postleitzahl = isset($_POST['plz']) ? trim ($_POST['plz']) : '';

if (!empty(
$postleitzahl) && preg_match("~^\d{5}$~"))
  echo 
'PLZ korrekt';
else
  echo 
'PLZ nicht korrekt!'
In Deutschland hat eine PLZ doch Fünfstellen oder? Es kann aber auch sein, das ein Land vorne steht z.B. D-12345.
Da kannst du den Ausdruck um (\w-)? erweitern.


Uuups: Habe den Wertebereich vergessen:
PHP-Code:
$min 39100;
$max 39400;

if (
is_numeric($plz) && $plz >= $min && $plz <= $max)
  echo 
'O K A Y !'
Mfg Fat Tony

Geändert von Jay (13.12.2005 um 19:12 Uhr)
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.12.2005, 10:48 Nach oben    #13
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

Ja in D hat die PLZ 5 stellen. Deshalb hab ich sie auch auf 5 beschränkt. Der Wertebereich war entscheidend, da ich Teilnehmer ausschließen will, die nicht mehr im Einzugsgebiet wohnen.

Ich werd den Spaß mal testen. Danke für die vielen Anregungen.
__________________
Wer später bremst, fährt länger schnell...
Doggi ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.12.2005, 13:33 Nach oben    #14
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

PHP-Code:
$postleitzahl = isset($_POST['plz']) ? trim ($_POST['plz']) : ''
bin grad am testen. trim entfernt leerzeichen, soweit hab ich es. wozu aber : ' '; ? konnte in der beschreibung auf php.net nichts finden.

zudem erwartet preg_match 2 parameter

//edit: preg_match("~^\d{5}$~", $postleitzahl)

diese funktion ist zum glück sehr gut erläutert. das bringt mich auf eine idee. danke dir!
__________________
Wer später bremst, fährt länger schnell...

Geändert von Doggi (14.12.2005 um 13:41 Uhr)
Doggi ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.12.2005, 13:49 Nach oben    #15
Verplanter Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 239
Standard

PHP-Code:
$postleitzahl = isset($_POST['plz']) ? trim ($_POST['plz']) : ''
sowie ...

PHP-Code:
$var frage(isset) ? mach es mach was anderes 
vergleich mit else !
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!
DasMööp ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.12.2005, 14:07 Nach oben    #16
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

ah, das muss einem anfänger doch gesagt werden. bin jetzt grad am testen mit der blöden preg_match funktion. irgendwie will die auch nicht wie ich das gern hätte.

PHP-Code:
$zeichenkette $_POST["send"]['plz'];
$suchmuster '"~^\d{5}$~"';
preg_match($suchmuster$zeichenkette$trefferPREG_OFFSET_CAPTURE);
print_r($treffer); 
gibt bei einer Eingabe von: "39}114" folgendes aus:

plz:391}14
Array ( )

müsste er nicht nach den einzelnen Zeichen im suchmuster suchen?

im tut für preg_match steht es folgendermaßen:
$suchmuster = "/}/";

das gibt

plz:391}14
Array ( [0] => Array ( [0] => } [1] => 3 )

also einen treffer. warum [1]=> 3 ist, weiß ich zwar nicht, aber das ist mir in diesem fall auch egal

leider funktioniert folgendes auch nicht:

$suchmuster = "/}:/";

denn dann sucht er nach der gesamten Zeichenkette

angeblich soll trim auch zeichen wie \n \r etc. entfernen, leider tuts das bei mir auch nicht. stattdessen werden die zeichen escaped ausgegeben "\\n" und "\\r"
__________________
Wer später bremst, fährt länger schnell...

Geändert von Doggi (14.12.2005 um 14:19 Uhr)
Doggi ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.12.2005, 14:24 Nach oben    #17
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Mach das hier, um alle nicht-Zahlen zu filtern.
PHP-Code:
$string preg_replace('#[^\d]#'''$string); 
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.12.2005, 14:39 Nach oben    #18
Verplanter Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 239
Standard

Hmmm...

wenn Du nach } suchen möchtest dann zB. so :

PHP-Code:
$preg "/\}/"
} ist ja ein Metazeichen und gehört mittels dem \ ausgeklammert

für Deine PlzSuche würde ich das so machen:

PHP-Code:
$preg "/^[0-9]{5}$/"
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!
DasMööp ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.12.2005, 14:57 Nach oben    #19
Erfahrener Benutzer
 
Benutzerbild von Doggi
 
Registriert seit: 26.10.2005
Ort: Basel
Beiträge: 115
Standard

wo wir gerade dabei sind ist mir was aufgefallen. ich mache ja eine sql abfrage der datenbank ob ein eintrag schon existiert. leider ist diese abfrage case sensitive. wie kann ich diese kontrolle so ändern, dass es nicht mehr c-s ist? es wäre ja blöd wenn doppeleinträge möglich sind, sobald jemand einen buchstaben groß schreibt.

PHP-Code:
$mail $_POST['email'];
$suchmuster $mail;
            @
mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());    
            
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());      
                    
            
$statement "SELECT Mail FROM Gewinnspiel WHERE Mail = '$mail'"
            
$result mysql_query($statement) OR die(mysql_error());
                    
                        echo 
"statement: ".$statement."<br>";
                        
                         while(
$row mysql_fetch_assoc($result)) {
                           echo 
$row['Mail']."<br />\n";
    
                        
preg_match("/$suchmuster/i"$row['Mail'], $trefferPREG_OFFSET_CAPTURE);
                        echo 
"<br />";
                        
print_r($treffer);
                        echo 
"<br />";
                        } 
funktioniert aber leider nicht. nur wenn das formular die richtige schreibweise übergibt, liefert $treffer ein ergebnis

//EDIT liegt daran, dass $row['Mail'] im diesem Fall kein Ergebnis liefert. *grübel*

EDIT 2 : ich muss mit $treffer die datenbank durchsuchen. so müsste es gehen. *am testen*
__________________
Wer später bremst, fährt länger schnell...

Geändert von Doggi (14.12.2005 um 15:16 Uhr)
Doggi ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.12.2005, 15:23 Nach oben    #20
Verplanter Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 239
Standard

Schau mal http://dev.mysql.com/doc/refman/4.0/...nsitivity.html

---

Zitat:
nur wenn das formular die richtige schreibweise übergibt, liefert $treffer ein ergebnis
ähm frage ... ist das nicht gewollt das wenn im Formualr das richtige eingegeben wird auch das richtig gefunden werden soll ?

Würde das eher so machen:

PHP-Code:
while($itm mysql_fetch_object($result)) {
if (
strcasecmp($mail,$itm->Mail))==null)) { // inCase Sensitiv
/* oder statt null -> '0' */
    
echo $itm->Mail;


Case Sensitiv -> strnatcasecmp("zeichenkette1","zeichenkette2");
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!
DasMööp ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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 sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] FTP-Funktionen in PHP nutzen MrNiceGuy Tutorials 0 24.05.2006 14:18
[PHP] Gästebuch auf Textdatei basierend Jann Hendrik Tutorials 4 11.01.2006 07:50
Variable prüfen vor Insert doria PHP-Programmierung 3 02.12.2005 17:46
[PHP] Aktuell gespielten Titel von XMMS auf einer Webseite in einer Grafik anzeigen Corvin Tutorials 0 28.11.2005 16:26
Login auf mehreren Domains Homepagespeicher PHP-Programmierung 17 21.08.2005 16:54


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9