php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.06.2007, 12:57  
Benutzer
 
Registriert seit: 17.05.2006
Beiträge: 86
simsalabim
Standard Vergleichsoperatoren in einer Variablen ?

Hallo,

kann man Vergleichsoperatoren in einer Variablen übergeben ?
Wenn ja, wie ?

So geht's schonmal nicht:

PHP-Code:
$a 'test';
$b 'test';
$c '==';
if (
$a $c $b) {
    echo 
'jou, gleich';
  } else {
    echo 
'neeeh';
    } 
__________________
Jeder Mensch ist klug !
Der eine vorher, der andere nachher ...
simsalabim ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 20.06.2007, 14:33  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

mit eval(), kann man das machen.
if(eval("return $a $c $b;")){...

aber ich finde das nicht besonders schön.
Edit: und es kann sogar gefährlich sein, wenn die Variablen aus Request kommen.
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 20.06.2007, 15:03  
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

für eine überschaubare Anzahl von möglichen Parametern kann man ja auch switch cases erwenden:

PHP-Code:
switch ($sOperator) {
  case 
'==':
    return (
$mVar1 == $mVar2);

  case 
'===':
    return (
$mVar1 === $mVar2);

  case 
'!=':
    return (
$mVar1 != $mVar2);
  } 
nikosch ist gerade online  
Alt 21.06.2007, 11:00  
Benutzer
 
Registriert seit: 17.05.2006
Beiträge: 86
simsalabim
Standard

Hallo,

erstmal besten Dank.

@Slava:
Mit [eval] funktioniert es wunderbar. Warum kann das gefährlich sein ?
Kannst du das etwas erläutern ?
__________________
Jeder Mensch ist klug !
Der eine vorher, der andere nachher ...
simsalabim ist offline  
Alt 21.06.2007, 12:40  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Weil eval einfach alles parst Wenn die Eingabe dann ungeprüft ist, wirds witzig:

PHP-Code:
        $adminPass "ganz geheimes Passwort";
        
// Eingabe
$_POST['var1'] = 1;
$_POST['var2'] = 1;
$_POST['operator'] = '===';

echo eval(
$_POST['var1'] . $_POST['operator'] . $_POST['var2'] . ';'); // Ausgabe true;

// Eingabe
$_POST['var1'] = 1;
$_POST['var2'] = 1;
$_POST['operator'] = '; echo $adminPass;';

echo eval(
$_POST['var1'] . $_POST['operator'] . $_POST['var2'] . ';');
// Ausgabe: "ganz geheimes Passwort" 
Darüber lässt sich sehr schnell beliebiger Code einfügen. Die Variante über Switch is wirklich die Bessere.
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 21.06.2007, 13:54  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

kommt darauf an wie gut man die parameter überprüft.
wenn man so überprüft
PHP-Code:
$operator=array('<','<=','>','>=','==','===','!=','!==');
if(
is_numeric($a) &&  is_numeric($b) &&  in_array($c $operator))
{
   if(eval(
"return $a $c $b;")){.....}else{....}
}
else die(
'hau ab'); 
dann ist es eigentlich übersichtlich und nicht mehr gefährlich.
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 21.06.2007, 15:00  
Benutzer
 
Registriert seit: 17.05.2006
Beiträge: 86
simsalabim
Standard

Hallo,

OK, Problem erkannt ...

Besten Dank euch beiden !

[edit]
äääähh, ich mein euch Drei ...
... nichtmal zählen kann er ...
[/edit]
__________________
Jeder Mensch ist klug !
Der eine vorher, der andere nachher ...
simsalabim 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
Klasse statt globaler Variablen ecomeback PHP-Fortgeschrittene 6 15.07.2008 16:30
Übergeben von Variablen an in PHP eingebundenes Perl-Script shredder01 PHP Tipps 2008 3 04.04.2008 09:25
Datei mit Variablen so includen, dass Variablen nutzbar? BartTheDevil89 PHP Tipps 2008 6 22.01.2008 20:57
unerklärliches Leeren von Variablen KuShi PHP Tipps 2007 2 08.07.2007 15:19
Teil einer Variablen mit einer Variablen ersetzen ? simsalabim PHP Tipps 2007 11 20.03.2007 20:36
variablen aus textfile erzeugen (shellscript) noskule Server, Hosting und Workstations 2 19.07.2006 15:42
Variable aus Variablen zusammensetzen juhuwoorps PHP Tipps 2007 1 28.11.2005 21:50
variablen in url automatisch hinzufügen Promaetheus PHP Tipps 2007 2 26.11.2005 12:52
In Fuktionen alle Variablen Global stellen ? atom-dragon PHP Tipps 2005-2 5 22.07.2005 04:30
$_GET Variablen weitergeben PHP Tipps 2005 3 01.03.2005 15:36
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
2 variablen in einem Value tag PHP Tipps 2005 17 26.01.2005 20:32
[Erledigt] register globals off bei variablen Variablen... PHP Tipps 2005 4 25.01.2005 17:50
Dynamisch erstellte Variablen ansprechen PHP Tipps 2004 2 08.08.2004 20:15
Variablen per adresse übergeben rocco PHP Tipps 2004 7 24.07.2004 12:03

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php vergleichsoperatoren in variable, php vergleichsoperator als variable, vergleichsoperatoren variablen php, php case return variabel, php variableninhalt als vergleichsoperator, php vergleichsoperator in variable, php vergleichsoperatoren als variable, php vergleichsoperator wird nicht richtig erkannt, vergleichsoperatoren in variablen php

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