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 16.04.2011, 16:08  
Neuer Benutzer
 
Registriert seit: 14.04.2008
Beiträge: 16
PHP-Kenntnisse:
Fortgeschritten
quasiman
Standard

Man man, seid ihr hier alle schnell Das ist natürlich toll. Vielen lieben Dank für die Antworten. Dann werde ich mal meine neue checkKeys() in mein Programm aufnehmen und noch ein bisschen erweitern, sodass sie z. B. ein Array von Funktionen entgegen nehmen kann, mit denen die entsprechenden Arraywerte überprüft werden sollen.

Viele Grüße und ein schönes Wochenende ...
quasiman ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 16.04.2011, 18:27  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.870
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Die Globals _REQUEST, _ENV und _SERVER sind Globals die nach dem Bootstrap des Parsers gefüllt werden.

Die Globals _COOKIE, _GET und _POST sind Globals die im Bootstrap des Parsers gefüllt werden.

Wenn du diese als konkatinierte Server-Variablen nutzen willst reagiere doch auf die aktuelle Request-Methode oder erzeuge dir ein eigenes REQUEST-Array:

PHP-Code:
<?php

    $order_core 
ini_get('request_order');
    
$order_compl ini_get('variables_order');
    
    
$order_range = array();
    
    if ( !
$order_core ) {
        
$order_range str_split($order_compl);
    }
    elseif ( 
strlen($order_core) == ) {
        
$order_range str_split($order_compl);
    }
    else {
        
$order_range str_split($order_core);
    }
    
    
$myREQUEST = array();
    global 
$myREQUEST;
    
    foreach ( 
$order_range as $value ) {
        switch(
strtoupper($value)) {
            case 
"G"$myREQUEST array_merge($myREQUEST$_GET); break;
            case 
"P"$myREQUEST array_merge($myREQUEST$_POST); break;
            case 
"C"$myREQUEST array_merge($myREQUEST$_COOKIE); break;
        }
    }
    
    
$theVar "myREQUEST";
    
    
var_dump($$theVar);
    
?>
Dieses ( grad hier im board zusammengetippte ) Snippet erzeugt ein mit _REQUEST identisches Array es hält sich dabei an die selben vorgaben die auch fürs _REQUEST-Array gelten würde.

Ich persönlich würde nie mit der MeshUp-Global _REQUEST Arbeiten sondern immer auf die _SERVER['REQUEST_METHOD'] reagieren und entsprechend auf _POST, _COOKIE oder _GET explizit zugreifen.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Alt 18.04.2011, 14:51  
Neuer Benutzer
 
Registriert seit: 14.04.2008
Beiträge: 16
PHP-Kenntnisse:
Fortgeschritten
quasiman
Standard

Diese Nachricht enthält keine Frage mehr.

@tr0y: Danke für deine Antwort und insbesondere für den Hinweis mit _SERVER['REQUEST_METHOD'].

@all: Für alle, die Interesse an der fertigen Funktion chkKeys() haben, kopiere ich sie ans Ende dieser Nachricht. Der Code enthält außerdem eine Wrapper-Funktion für empty und einige Testaufrufe für die Funktion chkKeys().

PHP-Code:
<?php

/* chkKeys() überprüft im Array $arr alle Werte
 * von den Schlüsseln $arrKeys mit der Funktion $chkFunction.
 * $chkFunction kann auch ein Array mit Funktionsnamen sein.
 * Rückgabe: true, falls alle Tests bestanden werden.
 *           false, im anderen Fall.*/
function chkKeys($arr$chkFunction$arrKeys) {
    if (!
is_array($arr)) return false;
    
// $arrKeys kann ein Array mit zu prüfenden Schlüsseln sein oder
    // eine Zeichenkette mit dem Namen des zu prüfenden Schlüssels.
    
if (!is_array($arrKeys)) {
        
$arrKeys = array($arrKeys);
    }
    foreach (
$arrKeys as $key) {
        if (!
array_key_exists($key$arr)) {
            return 
false;
        }
        
/* $chkFunction kann ein Array sein, muss es aber nicht.
         * Falls es kein Array ist, dann in ein Array konvertieren,
         * damit folgende Behandlung einheitlich erfolgen kann.*/
        
if (!is_array($chkFunction)) {
            
$chkFunction = array($chkFunction);
        }
        
// Nun alle Checkfunktionen durchlaufen und anwenden. */
        
foreach ($chkFunction as $function) {
            
// Dem Funktionsnamen kann ein ! vorangestellt sein.
            
if (substr($function01) == '!') {
                
// Funktionsname extrahieren und Funktion anwenden
                
$fn substr($function1);
                if (
$fn($arr[$key])) {
                    
// In diesem Fall wurde diese Funktion z. B. mit
                    // if (chkKeys($_GET, '!ctype_digit', array('bla'))) {...}
                    // aufgerufen. Der von der Bedingung abhängige Block soll
                    // also ausgeführt werden, wenn der Index bla in $_GET nicht
                    // vom Typ ctype_digit ist. Wenn der Index allerdings vom
                    // Typ ctype_digit ist, dann soll der Block nicht ausgeführt
                    // werden. chkKeys() muss in dem Fall also false
                    // zurückgeben. Und das machen wir in der nächsten Zeile.
                    
return false;
                }
            } else {
                
// direkt die Funktion anwenden. Analog zur Erklärung von oben
                // ergibt sich, dass wir hier mit !$function testen müssen.
                
if (!$function($arr[$key])) {
                    return 
false;
                }
                
// Der voranstehende Code ist im Grunde äquivalent zu folgendem:
                // if ($function($arr[$key])) {
                //     return true;
                // }
                // Dennoch würde dieser nicht funktionieren, da wir ja nicht schon
                // dann true zurückgeben wollen, wenn nur ein Test erfolgreich
                // war, sondern erst am Ende, wenn alle Tests erfolgreich waren.
            
}
        }
    }
    return 
true;
}

/* chkKeys() verwendet Funktionsnamen in Variablen. Das funktioniert nicht für
 * empty, da empty keine Funktion ist. Daher ist dieser Wrapper erforderlich. */
function myEmpty($var) {
    return empty(
$var);
}

$einArray = array('einIndex' => '3');
var_dump(chkKeys($einArray'!myEmpty', array('einIndex'))); // true
var_dump(chkKeys($einArray'myEmpty''einIndex')); // false
var_dump(chkKeys($einArray'ctype_digit''einIndex')); // true

$einArray = array('einIndex' => '0');
var_dump(chkKeys($einArray'ctype_digit''einIndex')); // true
var_dump(chkKeys($einArray'myEmpty''einIndex')); // true
var_dump(chkKeys($einArray, array('!myEmpty''ctype_digit'), 'einIndex')); // false
var_dump(chkKeys('asdf''ctype_digit''einIndex')); // false

$einArray = array('einIndex' => 'miep''zweiIndex' => 'simbim''ungetestet' => '23');
var_dump(chkKeys($einArray'ctype_alpha', array('einIndex''zweiIndex'))); // true

?>
quasiman 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
Fixe Anzahl als variablen speichern wernersbacher PHP Einsteiger 7 08.03.2011 20:59
Frame drucken bei variablen Name und ID chandlerP PHP Einsteiger 5 25.01.2011 19:15
[Erledigt] E-mail Versand Fehler Chacky PHP Einsteiger 29 25.11.2010 13:31
PHP-MYSQL Funktionen: Seltsames Problem (Script mit variablen Variablen) tonaus Datenbanken 15 11.10.2010 19:51
PHP5 und Variablen initialisieren kojak2008 PHP Tipps 2010 9 17.08.2010 14:33
[jQuery] php Variablen verwenden TroTz HTML, Usability und Barrierefreiheit 1 21.03.2010 15:41
Variablen mit Formular übergeben 1988UR PHP Tipps 2010 4 23.02.2010 09:29
[Erledigt] PHP Variablen + Formulare Templerschaf PHP Tipps 2009 46 18.03.2009 23:16
Wert statt Name einer Variablen ausgeben ThinkPink PHP Tipps 2008 5 25.09.2008 11:05
E-Mail Formular: Variablen in $message einfügen? thomas108 PHP Tipps 2008 9 02.06.2008 12:33
Variable aus Variablen zusammensetzen juhuwoorps PHP Tipps 2007 1 28.11.2005 21:50
Problem mit einfachem Mail()-Skript PHP Tipps 2005-2 5 08.10.2005 17:39
Formular name bzw. Variablen in Array einlesen nieselfriem PHP Tipps 2005 1 27.05.2005 10:23
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 (ctype_digit($?)) mit switch prüfen

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