Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Seite soll sich selber neu aufrufen

Einklappen

Neue Werbung 2019

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

  • PHP Seite soll sich selber neu aufrufen

    Hallo zusammen,

    ich programmiere gerade eine Seite für OCI-Shop Anbindungen (falls jemandem das etwas sagt).

    Nun habe ich mit einem Shop ein Problem.

    Es wird dort eine HOOK_URL aufgerufen. Dies Passiert allerdings in einem Frame (was zu klein ist) Nun möchte ich diese Seite (selber gemacht) in einem neuem Frame öffnen (mit Parameter)
    Per POST oder GET bekomme ich die Daten aus den Shop's, diese müssen natürlich auch mit

    index.php?newframe=yes -> dann in neuem Fenster bzw Tab.

    PHP-Code:
      if(isset($_GET["newframe"]))
      {      
        echo 
    "NEW frame";
        echo 
    "<script LANGUAGE=JavaScript>\n";
        echo 
    "self.location.href = \"index.php".$_POST."\";"
        echo 
    "window.open(\"index.php.$_POST.\",\"_self \");\n"
        echo 
    "</SCRIPT>\n";
      }
      else
        echo 
    "No new frame"
    Die Seite wird so neu geladen, aber nicht im neuen Fenster/Tab

    Geht sowas?

    Gruß Simon


  • #2
    Zitat von Bizkit83 Beitrag anzeigen
    Es wird dort eine HOOK_URL aufgerufen.
    Was unterscheidet ein HOOK_URL von einer normalen URL?

    Zitat von Bizkit83 Beitrag anzeigen
    Dies Passiert allerdings in einem Frame (was zu klein ist) Nun möchte ich diese Seite (selber gemacht) in einem neuem Frame öffnen (mit Parameter)
    Per POST oder GET bekomme ich die Daten aus den Shop's, diese müssen natürlich auch mit
    Also must Du Dir diese (POST|GET) merken. Am einfachsten per SESSION. Aber Prüfen vorher nicht vergessen!

    Zitat von Bizkit83 Beitrag anzeigen
    PHP-Code:
      if(isset($_GET["newframe"]))
      { 
    Hier must Du dir jetzt die Requestdaten (GET|POST) in der Session merken.
    Aber schön vorsichtig damit. In die Session sollten nur geprüfte Daten geschrieben werden!

    Soll heissen, nicht einfach die Keys und Values aus GET|POST blind übernehmen sondern einzeln prüfen und erst dann übernehmen.

    Prinzipiell in etwa so:

    PHP-Code:
          // Zuerst Key festl. unter dem die Daten in Session gespeichert werden
          // $_SESSION[ 'PostDaten' ] als leeres Array initialisieren
          
    $_SESSION'PostDaten' ] = [];
          
    // $_SESSION[ 'PostDaten' ] = array(); // Falls du ältere PHP Versionen nutzt

          
    if ( filter_has_varINPUT_POST'IntegerValue' ) )
          {
             
             
    // Nur als Beispiel: Optionen zur Filterung von integer Werten
             
    $options = array(
                
    'options' => array(
                   
    'default'     => 0// Dieser Wert wird genutzt wenn Validierung fehlschlägt
                   
    'min_range' => 0// Wenn z.B. der Wert nur 0 - 10 sein darf
                   
    'max_range' => 10
                
    )
             );

             
    // Wert prüfen und zuweisen
             
    $_SESSION'PostDaten' ][ 'IntegerValue' ] = filter_var(
                
    INPUT_POST,
                
    'IntegerValue',
                
    FILTER_VALIDATE_INT,
                
    $options
             
    );

          }

          
    // usw. hier die einzelnen anderen Daten prüfen + übernehmen 
    Zitat von Bizkit83 Beitrag anzeigen
    PHP-Code:
        echo "NEW frame";
        echo 
    "<script LANGUAGE=JavaScript>\n"
    ist zwar nicht wirklich verkehrt aber es empfiehlt sich:

    PHP-Code:
    ?>
    <script type="text/javascript">
    <?php
    Das language attribut ist nicht wirklich kompatibel, abhängig vom DocType
    allerdings ist das schon weit weg von PHP

    Zitat von Bizkit83 Beitrag anzeigen
    PHP-Code:
        echo "self.location.href = \"index.php".$_POST."\";"
    Zuerst mal kannst Du Daten aus $_POST @ $_GET nicht einfach so weiterreichen.
    Das must Du mache wie oben beschrieben (oder ähnlich)

    Zweitens hast Du hier auch nen Fehler in Deiner "JavaScript" Logik
    Du möchtest ja nicht die location von self ändern. Du willst ja raus aus dem Frame und noch dazu als neues Fenster/Tab. Diese Zeile ist auch bereits das Scriptende. alles was dannach an JS kommt wird nicht mehr ausgeführt.

    Zitat von Bizkit83 Beitrag anzeigen
    PHP-Code:
        echo "window.open(\"index.php.$_POST.\",\"_self \");\n"
    Autsch! Das $_POST da nicht so reingesetzt werden kann hatte ich ja bereits gesagt.
    Auch hier liegt aber Dein Problem aber auch wieder beim JavaScript.

    PHP-Code:
    ?>
    window.open( 'index.php', 'NeuerFensterName' );
    <?php
    Dein "__self" als Target ist ja letzlich auch wieder nur das was im Frame liegt.
    Eindeutigen Namen vergeben!

    in der aufzurufenden index.php must Du dann halt auch mit abprüfen ob
    $_SESSION[ 'PostDaten' ] (siehe oben) gesetzt ist und darauf entsprechend reagieren.

    Gruß, Ulf
    PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

    Kommentar

    Lädt...
    X