php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.01.2012, 14:11  
Benutzer
 
Registriert seit: 01.11.2010
Beiträge: 96
PHP-Kenntnisse:
Anfänger
Internetdepp ist in Verruf geraten
Standard [Erledigt] Bei Function doppeltes "echo"

ich frag mal ganz brav nach...

ich habe eine function geschrieben die bestimmte zeichen nicht zulassen soll...
Code:
function falscheZeichen($username){ 
    if(preg_match('/[^A-Za-z0-9 -]/',$username)){ 
       echo "Bitte keine Sonderzeichen verwenden";
	   return 0;
    } 
}
beim aufruf
Code:
$username = $_POST["username"]; 
$passwort =$_POST["password"]; 

falscheZeichen($username); 

IF(falscheZeichen($username)!== 0){
echo "alles ok!!";
}
mit einem erlaubten zeichen kommt:"alles ok!!", so wie es haben will....

aber beim aufruf mit einem nicht erlaubten zeichen kommt "Bitte keine Sonderzeichen verwendenBitte keine Sonderzeichen verwenden"....
ist nicht schön...
Internetdepp ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 31.01.2012, 14:16  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 606
Connar befindet sich auf einem aufstrebenden Ast
Standard

Wie wäre es mit Speichern des Rückgabewertes?

PHP-Code:
$username $_POST["username"]; 
$passwort =$_POST["password"]; 

$falschesZeichen falscheZeichen($username); 

IF(
$falschesZeichen !== 0){
echo 
"alles ok!!";

Oder nur einmaligem Aufrufen im if()

PHP-Code:
$username $_POST["username"]; 
$passwort =$_POST["password"];

IF(
falscheZeichen($username)!== 0){
echo 
"alles ok!!";


MFG Connar
Connar ist offline   Mit Zitat antworten
Alt 31.01.2012, 14:20  
Benutzer
 
Registriert seit: 01.11.2010
Beiträge: 96
PHP-Kenntnisse:
Anfänger
Internetdepp ist in Verruf geraten
Standard

danke für den hinweis....

aber irgendwie geht das auch nicht....ich rufe das if ja nur auf, wenn keine falsche zeichen eingegeben wurden...kann doch daran nicht liegen...oder?

Geändert von Internetdepp (31.01.2012 um 14:23 Uhr).
Internetdepp ist offline   Mit Zitat antworten
Alt 31.01.2012, 14:30  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Solche verdeckten Ausgaben (echo) in functionen beeinträchtigen extrem die Übersichtlichkeit. Und functionen sollten immer eine definiertes return liefern.
PHP-Code:
function falscheZeichen($username){ 
    return 
preg_match('/[^A-Za-z0-9 -]/',$username) ? true false;

Die Ausgabe erfolgt komplett außerhalb der function:
PHP-Code:
if(falscheZeichen("name")) echo "falsche Zeichen benutzt";
else echo 
"ok"
jspit ist offline   Mit Zitat antworten
Alt 31.01.2012, 14:31  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 606
Connar befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Internetdepp Beitrag anzeigen
aber irgendwie geht das auch nicht....ich rufe das if ja nur auf, wenn keine falsche zeichen eingegeben wurden...kann doch daran nicht liegen...oder?
Wie soll das denn gehen? Mit dem if überprüfst du doch erst, ob ein falsches Zeichen eingegeben wurde.

Zusätzlich wäre es vielleicht gut, wenn du in der Funktion noch einen anderen Rückgabewert definieren würdest als 0.

PHP-Code:
function falscheZeichen($username){ 
    if(
preg_match('/[^A-Za-z0-9 -]/',$username)){ 
       echo 
"Bitte keine Sonderzeichen verwenden";
       return 
0;
    } else
    {
        return 
1;
    }


MFG Connar
Connar ist offline   Mit Zitat antworten
Alt 31.01.2012, 14:40  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Du rufst die Funktion zwei mal auf. Da ist es nicht verwunderlich, dass auch die Ausgabe 3 mal kommt.
Zitat:
ich rufe das if ja nur auf, wenn keine falsche zeichen eingegeben wurden
Nein, tust Du nicht.

Lerne Grundlagen!
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 31.01.2012, 14:53  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Man kann hier auch einfach den Rückgabewert von preg_match verwenden, da alles > 0 nach bool gecastet true ergibt.
Dann aber macht für mich die extra-Funkion keinen Sinn mehr...
PHP-Code:
if( preg_match('/[^A-Za-z0-9 -]/'$_POST['username']) ) {
  echo 
'Bitte keine Sonderzeichen';
} else {
  
// alles i.O.

um auf das Eingangsthema einzugehen:
Zitat:
PHP-Code:
$username $_POST["username"]; 
$passwort =$_POST["password"]; 

falscheZeichen($username);  // <= 1. Aufruf der Funktion = erste Ausgabe!

IF(falscheZeichen($username)!== 0){  // <= 2. Aufruf der Funktion = zweite Ausgabe!
echo "alles ok!!";

__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 31.01.2012, 15:04  
Benutzer
 
Registriert seit: 01.11.2010
Beiträge: 96
PHP-Kenntnisse:
Anfänger
Internetdepp ist in Verruf geraten
Standard

danke für den hinweis...hab es jetzt gemerkt...

diese funktion soll für verschiedene eingabefelder benutzt werden...nur wie muss ich noch rausfinden... also statt $username verschiedene eingaben...

@nikosch
du kannst es dir wohl nicht verkneifen, hier anfänger nieder zu machen..dass es auch anders geht zeigen hier ja auch andere beiträge...

ich hoffe nur, dass du in deinem leben nicht irgendwie hilfe brauchst, ausserhalb diesem gebiet...
Internetdepp ist offline   Mit Zitat antworten
Alt 31.01.2012, 15:26  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Naja, dann eben als Funktion:
PHP-Code:
function badCharacterExists$string ) {
  return 
preg_match('/[^A-Za-z0-9 -]/'$string);
}

$username badCharacterExists$_POST['username'] )? false$_POST['username'];
$password badCharacterExists$_POST['password'] )? false$_POST['password'];

if( 
$username && $password ) {
  
// alles wird gut...

das Beispiel ist nicht sehr praxisnah, soll nur als Verdeutlichung herhalten!

ps: kleiner tipp noch: lass die beschwerden in den posts bitte sein.
zum einen gehört das hier nicht rein und zum anderen steckt in den besagten posts auch immer etwas wahres, wenn du sie dir in ner ruhigen minute mal durch den kopf gehen lässt...
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 31.01.2012, 15:46  
Benutzer
 
Registriert seit: 01.11.2010
Beiträge: 96
PHP-Kenntnisse:
Anfänger
Internetdepp ist in Verruf geraten
Standard

danke...

ok ich werd mich zurückhalten
Internetdepp ist offline   Mit Zitat antworten
Antwort


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
Tabellen sortieren archer42 Software-Design 19 30.01.2012 19:23
DI-Container xm22 Software-Design 44 07.08.2011 18:03
[Erledigt] Zend_Acl etwas spezieller Enigma228 PHP-Fortgeschrittene 0 22.05.2011 11:16
[Erledigt] Observer-Pattern Kardey Software-Design 20 15.03.2010 17:16
[Erledigt] Werte aus private function werden in public function nciht übernommen litterauspirna PHP Tipps 2010 3 03.02.2010 11:31
JS-Kalender funktioniert nicht im IE8 ToxicToast JavaScript, Ajax und mehr 4 18.11.2009 16:26
variable mit onclick an php drombusch PHP Tipps 2009 8 30.08.2009 14:45
Decorator-Pattern grizu PHP Tipps 2009 15 12.08.2009 14:41
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
[Erledigt] Verliere Zuordung in einer JS Klasse tomtaz JavaScript, Ajax und mehr 2 08.12.2008 21:55
[Erledigt] Vererbung - Zugriff auf Elternmethoden nicht möglich unimow PHP Tipps 2008 5 03.11.2008 18:53
Fehlermeldung : Call to a member function foo() on a non-object Mark Taylor PHP Tipps 2008 4 14.09.2008 20:38
GD-Spezialisten gesucht....wer kann helfen? rezix PHP Tipps 2008 12 26.02.2008 17:55
Call to a member function on a non-object Riks PHP Tipps 2007 20 10.02.2007 22:59


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:46 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