isset(); Prüfen ob Variablen gesetzte sind

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • isset(); Prüfen ob Variablen gesetzte sind

    Hi@all

    gibt es eine fertige class dir mir vor aufruf der seite prüft ob die Variablen in dieser seite gesetzt sind und diese ggfl. auf NULL setzt.

    Verstanden ???

    Mit isset() am Beginn des Scripts prüfen ob alle Variablen gesetzt sind.

    Thx@all

  • #2
    ?

    PHP-Code:
    <?php if(isset($varname)) { /* Anweisung */ ?>
    "I am what I am and I do what I can..."
    Meine HP -- Mein GPG-Key
    Meine Projekte: WebStorage 2.0 -- easyAJAX-Chat 2.2.0 (beta)

    Kommentar


    • #3
      Re: isset(); Prüfen ob Variablen gesetzte sind

      Original geschrieben von Prominenter
      gibt es eine fertige class dir mir vor aufruf der seite prüft ob die Variablen in dieser seite gesetzt sind und diese ggfl. auf NULL setzt.
      Überleg doch mal: Woher sollte so eine Klasse wissen, was die "Variablen dieser Seite" sind? Man muß es ihr mitteilen.
      Das heißt, du als Programmierer mußt der Klasse eine Liste der erwarteten Variablen übergeben. Die "fertige class" würde diese Liste durchlaufen und die Variable ggf. mit NULL inititialisieren. Das kannst du auch selbst.

      Kommentar


      • #4
        Danke für die Ansätze.

        Woher sollte so eine Klasse wissen, was die "Variablen dieser Seite" sind?
        Genau das wollte ich wissen.
        Kann man das Script nicht nach Variablen durchsuchen lassen und dann mit

        <?php if(isset($varname)) { /* Anweisung */ } ?>
        die Prüfung durchführen ?

        Thx@all

        Kommentar


        • #5
          error_reprting(E_ALL); zeigt Dir wenn eine Variable nicht gesetzt ist.

          Kommentar


          • #6
            PHP-Code:
            <?php
            $errors 
            error_reporting(E_ALL);
            echo 
            $test."<br><br>";
            echo 
            $errors;
            $varname substr($errors0,28);
            if(isset(
            $varname)) { /* Anweisung */ }
            ?>
            Ausgabe:

            Notice: Undefined variable: test in E:\XAMPP\htdocs\WEBS\honda_2005\errors.php on line 3


            6135

            Ich dachte ich kann die fehlenden Variablen vorher auslesen und anschließend deklarieren.

            Thx@all

            Kommentar


            • #7
              PHP-Code:
              $varchar = array("anm_username""anm_email""anm_name");
              $integer = array("anm_userID""anm_agb");

              # Nur bestimmte Variablen holen...
              foreach ($varchar AS $varname){
                if (isset(
              $_REQUEST[$varname])){
                  
              $o     $varname;
                  $
              $o mysql_real_escape_string($_REQUEST[$varname]);
                } else {
                  
              $o     $varname;
                  $
              $o "";
                }
              }
              foreach (
              $integer AS $varname){
                if (isset(
              $_REQUEST[$varname])){
                  
              $o     $varname;
                  $
              $o intval($_REQUEST[$varname]);
                } else {
                  
              $o     $varname;
                  $
              $o 0;
                }
              }


              # Alternativ kann man alle Requestvariablen holen
              # Bekannte Strings und Integer werden entsprechend behandelt. 
              # Alle anderen auf -1 gesetzt; aber das ist ja jedem selber überlassen,
              # wie er das Regeln will...

              foreach ($_REQUEST AS $varname => $value){
                if (!
              is_int($varname)){
                  
              $o     $varname;
                  if (
              in_array($varname,$varchar)){
                    $
              $o mysql_real_escape_string($value);
                  } elseif (
              in_array($varname,$integer)){
                    $
              $o intval($value);
                  } else {
                    $
              $o = -1;
                  }
                }

              Ich denke, das ist als Anreiz ganz gut gebrauchbar. Hope it helps...

              Kommentar


              • #8
                Ich dachte ich kann die fehlenden Variablen vorher auslesen und anschließend deklarieren.
                Wenn du weisst welche Variablen fehlen könnten kannst du sie deklarieren. Sonst geht sowas nur innerhalb einer Klasse mit __get ( ).
                Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                Kommentar


                • #9
                  Original geschrieben von Prominenter
                  Kann man das Script nicht nach Variablen durchsuchen lassen ....
                  Tja man kann zum Beispiel sowas:
                  PHP-Code:
                  foreach (token_get_all(file_get_contents(__FILE__)) as $tok) {
                      if (
                  is_array($tok) && $tok[0] == T_VARIABLE) { 
                  Mit zwei weiteren Zeilen kann man sogar halbwegs sicher testen, ob das erste Vorkommen einer Variablen ein lesender Zugriff ist und dann ggf. ${$tok[1]} = null;

                  Aber wenn man ordentlich programmiert, sollte das gar nicht nötig sein.
                  Außerdem schützt die Initialisierung mit NULL nur vor der Warnung "undefined ...", die man durch geeignetes error_reporting auch abstellen kann.

                  Kommentar


                  • #10
                    Hi@all

                    hab bei meiner Recherche folgendes gefunden:
                    PHP-Code:
                    // we will do our own error handling
                    error_reporting(0);

                    // user defined error handling function
                    function userErrorHandler($errno$errmsg$filename$linenum$vars)
                    {
                     
                    // timestamp for the error entry
                     
                    $dt date("Y-m-d H:i:s (T)");
                     
                    // define an assoc array of error string
                     // in reality the only entries we should
                     // consider are E_WARNING, E_NOTICE, E_USER_ERROR,
                     // E_USER_WARNING and E_USER_NOTICE
                     
                    $errortype = array ( E_ERROR              => 'Error',
                                          
                    E_WARNING            => 'Warning',
                                          
                    E_PARSE              => 'Parsing Error',
                                          
                    E_NOTICE             => 'Notice',
                                          
                    E_CORE_ERROR         => 'Core Error',
                                          
                    E_CORE_WARNING       => 'Core Warning',
                                          
                    E_COMPILE_ERROR      => 'Compile Error',
                                          
                    E_COMPILE_WARNING    => 'Compile Warning',
                                          
                    E_USER_ERROR         => 'User Error',
                                          
                    E_USER_WARNING       => 'User Warning',
                                          
                    E_USER_NOTICE        => 'User Notice',
                                          
                    E_STRICT             => 'Runtime Notice',
                                          
                    E_RECOVERABLE_ERROR  => 'Catchable Fatal Error' );
                     
                    // set of errors for which a var trace will be saved
                     
                    $user_errors = array(E_USER_ERRORE_USER_WARNINGE_USER_NOTICE);

                     
                    $err "<errorentry>\n";
                     
                    $err .= "\t<datetime>" $dt "</datetime>\n";
                     
                    $err .= "\t<errornum>" $errno "</errornum>\n";
                     
                    $err .= "\t<errortype>" $errortype[$errno] . "</errortype>\n";
                     
                    $err .= "\t<errormsg>" $errmsg "</errormsg>\n";
                     
                    $err .= "\t<scriptname>" $filename "</scriptname>\n";
                     
                    $err .= "\t<scriptlinenum>" $linenum "</scriptlinenum>\n";
                     if (
                    in_array($errno$user_errors))
                     {
                      
                    $err .= "\t<vartrace>" wddx_serialize_value($vars"Variables") . "</vartrace>\n";
                     }
                     
                    $err .= "</errorentry>\n\n";
                     

                        if (
                    substr($errmsg,0,19) == "Undefined variable:"$empty_var substr($errmsg,20) ;
                        echo 
                    $empty_var;
                        
                    $declare_var "$".$empty_var;
                        echo 
                    $declare_var;  // Ausgabe = $beispiel
                        
                    echo $beispiel;        // Ausgabe = 


                     // for testing
                     #$err = nl2br($err);
                     #echo $err;
                     // save to the error log,
                     #error_log($err, 3, "error.log");
                     // and e-mail me if there is a critical user error
                     #if ($errno == E_USER_ERROR)
                     #{
                     # mail("phpdev@example.com", "Critical User Error", $err);
                     #}
                    }
                    $old_error_handler set_error_handler("userErrorHandler");

                    // Beispiel
                    $test $beispiel;
                    if (
                    $blablabla != 0) echo "Fehler"
                    Wie kann ich jetzt der gefundenen Variablenbezeichnung 'beispiel' einen Wert zuweisen ?

                    Thx@all
                    Zuletzt geändert von Prominenter; 06.05.2007, 14:35.

                    Kommentar


                    • #11
                      Egal wie, es ist schon zu spät. Du erkennst anhand der vom PHP-Interpreter geworfenen Fehlermeldung, dass $beispiel keinen Wert hat. Jetzt noch einen zuzuweisen ist sinnlos. Der Interpreter ist über das Statement $test = $beispiel; bereits drüber!

                      Falls du es dennoch ausprobieren möchtest, informiere dich über variable Variablen.
                      Zuletzt geändert von onemorenerd; 06.05.2007, 14:31.

                      Kommentar

                      Lädt...
                      X