hawkmaster: & in URL GET Parameter Problem

Hallo zusammen,
irgendwie bin ich gerade etwas verwirrt.

Auf einer Seite habe ich im PHP Code folgendes stehen:

  
if(isset($_GET['SaveJob'])){  
echo "<script type=\"text/javascript\">window.open('createjob.php?UserID=$UserID&amp;jobID=".$_SESSION['jobID']."','Absolut','scrollbars=yes,resizable=yes,width=450,height=250')</script>";  
}  

Wenn diese Seite "createjob.php" geöffnet wird, dann steht in der URL das &amp; drin und nicht &. Somit kann ich den GET Parameter "jobID" nicht auswerten.

An einer anderen Stelle auf der Seite ist fast was ähnliches:

  
onclick="window.open('info.php?USER=<?php echo $USER; ?>&amp;UserID=<?php echo $UserID; ?>','Absolut','width=670,height=820,scrollbars=yes,resizable=yes')"  

Hier wird aus dem &amp; problemlos ein & und somit kann ich die UserID verwerten.

Warum reagiert der Browser (FF) so unterschiedlich bzw. wie kann ich das Problem lösen.
Wenn ich im ersten Beispiel anstatt &amp; nur das einfach "&" nehme, klappt es, aber der Code wäre nicht valide.

vielen Dank und viele Grüße
hawk

  1. ... "<script type="text/javascript">...</script>";

    Du befindest dich in einem <script> Kontext. In diesem sollst du < > & " nicht maskieren.

    Anders bei einem Eventhandler als Html-Attribut. Dort bist du im HTML Kontext und musst HTML gerecht maskieren.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Hallo Beat,

      Du befindest dich in einem <script> Kontext. In diesem sollst du < > & " nicht maskieren.

      Anders bei einem Eventhandler als Html-Attribut. Dort bist du im HTML Kontext und musst HTML gerecht maskieren.

      Danke für die Erklärung.
      Wenn ich aber im <script> Kontext nur "&" nehme, dann meckert der Validator.

      vielen Dank und viele Grüße
      hawk

      1. Wenn ich aber im <script> Kontext nur "&" nehme, dann meckert der Validator.

        Lass mich raten. Du validierst nach XHTMl und lieferst aber Tagsoup aus?

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
  2. hi,

    Wenn diese Seite "createjob.php" geöffnet wird, dann steht in der URL das &amp; drin und nicht &. Somit kann ich den GET Parameter "jobID" nicht auswerten.

    Versuche es doch mal mit Heredoc-Syntax.

    if(isset($_GET['SaveJob']))  
    {  
      $_JobID = $_SESSION['jobID'];  // Der Nachteil an der Geschichte  
      
      echo <<<EOT  
    <script type="text/javascript">window.open('createjob.php?UserID=$UserID&amp;jobID=$_JobID'  
    ,'Absolut'  
    ,'scrollbars=yes  
    ,resizable=yes  
    ,width=450  
    ,height=250')</script>  
    EOT;  
      
    }
    

    Evtl. hast du auch ein Problem mit den Klammern „'“ im Script, da du mal welche nutzt und mal nicht.

    Wenn du zugriff auf die php.ini hast, könntest du auch den arg_separator auf „;“ kürzen.

    arg_separator.output = ";"  
    arg_separator.input = ";&"
    

    mfg

    1. hi,

      Evtl. hast du auch ein Problem mit den Klammern „'“ im Script, da du mal welche nutzt und mal nicht.

      Ah, Sorry, mit Javascript wird es ja so geschrieben.

      mfg