Ankündigung

Einklappen
Keine Ankündigung bisher.

Überprüfung einer Var beim Laden... keine Lust mehr HILFE

Einklappen

Neue Werbung 2019

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

  • Überprüfung einer Var beim Laden... keine Lust mehr HILFE

    Tach auch!

    Sorry erst mal das ich wegen so etwas störe....ABER ES KOTZT MICH LANGSAM ECHT AN!!!!!
    Also folgendes:

    Habe ein kleines Script geschrieben das ein Bild (mit dem Titel der Seite) austauscht, passiert über ganz normalen link


    Code:
    href="index2.php?titel=home"
    Klappt auch, jetzt möchte ich aber vermeiden das wenn die Seite ohne die Variable geladen anstatt der Grafik ein Loch klafft.

    Folgende Lösung habe ich mir erdacht (zusammengetüfftelt) *g*

    Code:
    $pre = '"images/';
    	$dev = '.jpg"';
    	$da = 'home';
    		
    	if(isset($titel)) {	
    	$bild = $pre.$titel.$dev; 
    	} else {
    	$titel = $pre.$da.$dev;
    	}
    
    	echo $bild; // nur Kontrolle
    Problem ist nur das es nicht funzt... wenn die seite also so geladen wird: Http://server/index2.php
    wird eben genau nicht das gemacht was ich will (--> $titel = '..home..'

    Vielen Dank für eure Hilfe

    euer Chill

  • #2
    Nur wenn titel gesetzt ist und auf ein vorhandenes Bild verweist, soll der Parameter benutzt werden.
    In so einem Fall setze ich meistens die Variable erstmal auf den default Wert und nur wenn die Test positiv durchlaufen werden, wird die Variable umgesetzt.
    PHP-Code:
    <?php
    $basepath 
    '"images/';
    $fn_extension '.jpg"';
    $fn_default 'home';

    $bild $basepath.$fn_default.$fn_extension;
    if (isset(
    $_GET['titel'])) {
        
    $tmp_bild $basepath.basename($_GET['titel']).$fn_extension;
        if (
    is_file($tmp_bild)) {
            
    $bild $tmp_bild;
        }
    }

    echo 
    $bild// nur Kontrolle 
    ?>
    register_globals ON unterstütze ich nicht, deshalb $_GET['title'] statt $title.

    Kommentar


    • #3
      Zitat von Bruchpilot
      Nur wenn titel gesetzt ist und auf ein vorhandenes Bild verweist, soll der Parameter benutzt werden.
      In so einem Fall setze ich meistens die Variable erstmal auf den default Wert und nur wenn die Test positiv durchlaufen werden, wird die Variable umgesetzt.
      PHP-Code:
      <?php
      $basepath 
      '"images/';
      $fn_extension '.jpg"';
      $fn_default 'home';

      $bild $basepath.$fn_default.$fn_extension;
      if (isset(
      $_GET['titel'])) {
          
      $tmp_bild $basepath.basename($_GET['titel']).$fn_extension;
          if (
      is_file($tmp_bild)) {
              
      $bild $tmp_bild;
          }
      }

      echo 
      $bild// nur Kontrolle 
      ?>
      register_globals ON unterstütze ich nicht, deshalb $_GET['title'] statt $title.
      Hallo Bruchpilot!

      Danke für deinen Vorschlag!!! Jetzt funzt es.... hatte in meinem Code auch nen Fehler den ich jetzt erst bemerkt habe.. (war spät gestern *g*)

      Abgesehen von $_GET und meinem Fehler (falsche Variable im else zweig), müsste mein Code doch eigentlich funzen, oder?

      Vielen Danke

      der Chill

      Kommentar


      • #4
        wenn du isset nimmst, wirst du nicht weit kommen. empty() hilft dir eher.
        Ach noch was: So wies aussieht, benutzt du register_globals: Pöhse! echt Phöse! immer $_POST[] bzw. $_GET[] benutzen...

        Kommentar


        • #5
          href="index2.php?titel=home"
          Ich weis ja nicht, ob es hier noch andere Varianten gibt oder noch werden könnte.
          Vieleicht wäre dann eine Abfrage mit switch() besser dran, und dann auch einen default-Wert einstellen.

          Kommentar


          • #6
            Definitv, das kann man nämlich ganz leich missbrauchen: [..]title=../../geheime datei.txt

            Kommentar


            • #7
              Deshalb wird in meinem Beispiel basename() verwendet, die Dateiendung ist fix und mit is_file() wird die Existenz der Datei geprüft.

              Kommentar


              • #8
                hmm....
                *unzufriedenguck*
                egal, dein Bier, ich würds mit switch() machen, zur Sicherheit......
                ischa egal!

                Gruß,
                Jojo

                edit: der Vorteil bei switch is außerdem, dass du flexibler bist.

                Kommentar


                • #9
                  und so ?

                  if(isset($home)){
                  if($titel = "home"){
                  lade home.jpg;
                  }else{
                  lade sonstwas.jpg;
                  }
                  } else {
                  lade sonstwas.jpg;
                  }
                  keine

                  Kommentar


                  • #10

                    mach das mal mit 100 Seiten
                    nimm dann wenigstens "elseif"

                    man kann sichs auch absichtlich schwer machen.

                    edit: falsch gelesen, trotzdem umständlich.
                    man kann auch mehrere Bedingungen in eine if-Abfrage packen
                    da muss man nicht in den true-Teil noch ne if-Abfrage machen, wenn bei false-Teile sowieso gleich sind

                    Kommentar


                    • #11
                      Reicht die Existenz der Bilddatei an einer bestimmten/festengelegten Stelle als Kriterium nicht aus?
                      Sicherheit ist gut. Aber nicht alles unnötig verkomplizieren.

                      Kommentar


                      • #12
                        Hallo!

                        Also bin jetzt endlich fertig und es funzt so wie ich es mir vorstelle...

                        hier der Code... Verbesserungsvorschläge nehme ich natürlich gerne entgegen.

                        Code:
                        <?php 
                        $basepath = 'images/'; 
                        $fn_ext = '.jpg'; 
                        $fn_def = 'home';
                        
                        $fn_load = $_GET[titel];
                        
                        $tmp_bild = $basepath.$fn_load.$fn_ext;
                        
                        if (is_file($tmp_bild)) {
                        	$bild = '"'.$basepath.$fn_load.$fn_ext.'"';
                        } else {
                        	$bild = '"'.$basepath.$fn_def.$fn_ext.'"';
                        }
                        ?>
                        Viele Grüße


                        Der Chill

                        Kommentar

                        Lädt...
                        X