Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Script Interpretaion läuft falsch im Firefox

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Script Interpretaion läuft falsch im Firefox

    Hallo Leute,

    ich habe ein Problem, was schwer zu erklären ist, aber ich versuche es mal trotzdem. Ich habe keinerlei Anhaltpunkte zu diesem Thema im Forum finden können.

    Konfiguration:
    Server: Linux (Suse)
    Apache/2.0.50
    PHP 5.x

    Der Fehler tritt nur im Firefox bzw. Mozilla auf.
    Da PHP ja Serverbasiert läuft, kann es eigentlich garnicht sein das die Browser unterschiede aufweisen, aber irgendwas muss ja anders sein.

    Codeauszug:
    Code:
    		if(!empty($addrow['picids'])) {
    			$split=explode(",",$addrow['picids']);
    			if(in_array($img,$split)) {
    				$newpicids=$addrow['picids']; $error_msg2=true;
    			}
    			else {
    				$newpicids=$img.','.$addrow['picids']; $info_msg1=true;
    				$query_final_add="UPDATE $db_user_table SET picids='$newpicids' WHERE id='$_SESSION[userid]'";
    				$result_final_add=mysql_query($query_final_add,$link);
    			}
    		}
    Das Script geht im IE wie gewollt in die "else"-Anweisung und führt das SQL-Update aus und setzt die Variable "$info_msg1".

    Im Firefox gibt es das Problem, das die SQL-Anweisung ausgeführt, aber irgendwie die "if"-Anweisung ausgibt. Das heisst, das die Variable "$error_msg2" gesetzt wird, obwohl es keinen Grund gibt die "if"-Anweisung zu durchlaufen. Ebenfalls sind auch keine Schleifen oder ähnliches vorhanden.

    Was ich mir noch nicht erklären kann, ist das sobald ich diese Funktion einmal ausgeführt habe, danach richtig funktioniert. Wenn ich das Script in einem neuen Firefox-Fenster öffne, dann tritt wieder der Fehler auf.

    Ich hatte irgendwann mal was mit Cache gelesen, aber ein deaktivieren vom Cache im Firefox hat auch nichts gebracht.

    Ich hoffe mir kann endlich mal jemand helfen.
    Danke für eure Antworten!

  • #2
    zeig mal den html-code vom formular her.
    da ich das heute schonmal hatte, gleich vorneweg:
    html-attribute werden grundsätzlich in der form
    Code:
    attributname="attributWert"
    geschrieben, also
    Code:
    <input type="text" name="hello" value="world">
    und auf KEINEN FALL
    <input type=text name=hello value=1,2,3 >
    .

    falls es nicht daran liegt, den erzeugten html-code her

    Kommentar


    • #3
      also entweder wird if ODER else ausgeführt das liegt nicht am browser! also ich glaub irgendwie machst du was falsch oder so ... das liegt sicher am skript ... bzw. versuch mal in firefox und im ie f5 zu drücken damit aktualisierst du und erhälst die neuste version! bei einem normalen neuaufruf wird nicht unbedingt die neuste version angezegit!°

      Kommentar


      • #4
        @axo
        Das ist klar, die Formulardaten sind so wie du schreibst, mit anführungszeichen. Ich glaube das kann damit auch nichts zu tun haben, da die Formulare ja keine Probleme machen.

        @RaZoR
        Das ist es ja eben, endweder sollte if ODER else ausgeführt werden. wenn ich ein alert in beiden teilen (if, else) einfüge dann wird immer das in der if-Deklaration ausgegeben, aber irgendwie wird auch das update der datenbank ausgeführt obwohl nichts aus der else-Dalaration ausgegeben wrid. aktualisieren hatte ich natürlich schon probiert.

        Ebenfall funktioniert das ja alles im Internet Exlplorer, nur im Firefox oder Moziller läufts falsch!
        Ich arbeite zusammen mit Sessions, kann es daran vieleicht liegen?

        Andere Lösungen?

        Kommentar


        • #5
          das einizige was mir dazu grad einfallen wuerde sind deine cookie einstellungen...

          hast schon mal probiert die php session id per get zu uebergeben?

          Kommentar


          • #6
            Wenn sich das Verhalten bei zwei verschiedenen Browser unterscheiden, hast Du bereits mal versucht Dir anzuschauen welche Daten übermittelt werden bzw. ob es Unterschiede gibt?

            Code:
            print_r($_REQUEST); die();
            In welcher Form ist
            Code:
            $addrow['picids']
            von den übermittelten Formulardaten abhängig?

            Kommentar


            • #7
              Zitat von tsorki
              Andere Lösungen?
              Die einzige echte Lösung ist, wenn Du genau nachvollziehst, was passiert, dann wird auch klar, woher der Browser-Einfluss kommt.
              Und dabei kann Dir hier keiner helfen.
              mod = master of disaster

              Kommentar


              • #8
                @CJunky
                ist der selbe effekt.

                @carrib
                die Daten im REQUEST-Array sind 100% identisch.

                Code:
                $addrow['picids']
                wird aus der Datenbank gelesen, es ist entweder leer oder eine kombination aus zahlen und "," (Bsp: 34,152,87).
                Die Daten übergebe ich per Link, nicht per Formular.

                @Waq
                ich habe den verlauf genau nachvollzogen und ich weiss was passiert. Und wenn das dann so klar wäre, dann würde ich hier nicht posten!
                Vieleicht haben hier einige Leute schon einmal ähnliche Erfahrungen mit solchen Problemen gemacht und solche können mir wenigsten Hinweise geben, wo ich ansetzen kann.

                Kommentar


                • #9
                  Zitat von tsorki
                  Die Daten übergebe ich per Link, nicht per Formular.
                  http://www.php.net/urlencode .

                  PHP-Code:
                  <?php
                  $test 
                  '1,2,3';
                  echo 
                  urlencode($test) . "\n";
                  echo 
                  $test "\n";
                  assert(urlencode($test) == $test);
                  ?>

                  Kommentar


                  • #10
                    ...immer das in der if-Deklaration ausgegeben, aber irgendwie wird auch das update der datenbank ausgeführt...
                    Dann wird sich das Update wohl außerhalb deiner Bedingung befinden, oder du hast eine sehr sehr sehr seltsame PHP-Version an Laufen...

                    @axo: Zu deiner Signatur (Stand bei phpfriend.de nicht etwas von 5 € die Stunde???): LOOOL!

                    Kommentar


                    • #11
                      @axo
                      urlencode benötige ich in diesem Fall nicht, da ich nur eine ganze Zahl ($img) per Link übergebe.

                      @Thice
                      das ist es ja eben, das update steht nur in der "else"-Anweisung und nirgens anders.
                      Warum glaubst du das es dann an der PHP-Version install. liegt? Im IE funktionierts ja komischerweise richtig. Es ist eigentlich total unlogisch, aber der Fehler tritt auf.

                      Kommentar


                      • #12
                        das kann nicht sein. du mit an sicherheit grenzender wahrscheinlichkeit einen fehler im html-code.

                        deswegen: hier den code posten.

                        Kommentar


                        • #13
                          ok, hier mal ne kleine Beschreibung und den kompletten code:

                          hier der link der die Sachen übergibt:
                          Code:
                          http://###/index.php?url=script&func=add&img=MTAx
                          PHP-Code:
                          <?php
                          //            check if all images exists            \\
                          include("include/dbconnect.inc.php");
                          $img=base64_decode($img);

                          //            add image to highlightbox            \\
                          if($func=='add' && $img!='') {
                              
                          $allquery="SELECT * FROM $db_images_table WHERE id='$img'";
                              
                          $allresult=mysql_query($allquery,$link);
                              
                          $allrow=mysql_fetch_array($allresult);
                              
                          $allnumrows=mysql_num_rows($allresult);
                              
                              if(
                          $allnumrows>0) {
                                  
                          $addquery="SELECT picids FROM $db_user_table WHERE id='$_SESSION[userid]'";
                                  
                          $addresult=mysql_query($addquery,$link);
                                  
                          $addrow=mysql_fetch_array($addresult);
                                  
                          $newpicids=$addrow['picids'];
                                  
                                  if(!empty(
                          $addrow['picids'])) {
                                      
                          $split=explode(",",$addrow['picids']);
                                      if(
                          in_array($img,$split)) {
                                          
                          $newpicids=$addrow['picids']; $error_msg2=true;
                                      }
                                      else {
                                          
                          $newpicids=$img.','.$addrow['picids']; $info_msg1=true;
                                          
                          $query_final_add="UPDATE $db_user_table SET picids='$newpicids' WHERE id='$_SESSION[userid]'";
                                          
                          $result_final_add=mysql_query($query_final_add,$link);
                                          
                          dolog("add image to highlightbox",$allrow['name'].' (ID:'.$allrow['id'].')');
                                      }
                                  }
                                  else {
                                      
                          $newpicids=$img$info_msg1=true;
                                      
                          $query_final_add="UPDATE $db_user_table SET picids='$newpicids' WHERE id='$_SESSION[userid]'";
                                      
                          $result_final_add=mysql_query($query_final_add,$link);
                                      
                          dolog("add image to highlightbox",$allrow['name'].' (ID:'.$allrow['id'].')');
                                  }
                              }
                              else {
                          $error_msg3=true;}
                          }

                          //            delete image of highlightbox            \\
                          if($func=='del' && $img!='') {
                              
                          $squery="SELECT * FROM $db_images_table WHERE id='$img'";
                              
                          $sresult=mysql_query($squery,$link);
                              
                          $srow=mysql_fetch_array($sresult);
                              
                              
                          $delquery="SELECT picids FROM $db_user_table WHERE id='$_SESSION[userid]'";
                              
                          $delresult=mysql_query($delquery,$link);
                              
                          $delrow=mysql_fetch_array($delresult);
                              
                              
                          $tmp=strrchr($delrow['picids'],",");
                              
                          $curid=','.$img;
                              if(
                          $tmp==$curid) {$delid=$curid;}else{$delid=$img.',';}
                              if(!
                          eregi(",",$delrow['picids'])){$delid=$img;}
                                  
                              
                          $newids=str_replace("$delid","","$delrow[picids]");
                              
                              
                          $delquery="UPDATE $db_user_table SET picids='$newids' WHERE id='$_SESSION[userid]'";
                              
                          $delresult=mysql_query($delquery,$link);
                              
                          $info_msg2=true;
                              
                          dolog("delete image form highlightbox",$srow['name'].' (ID:'.$srow['id'].')');
                          }

                          //            normal programm            \\
                          $query="SELECT picids FROM $db_user_table WHERE id='$_SESSION[userid]'";
                          $result=mysql_query($query,$link);
                          $row=mysql_fetch_array($result);

                          $picid=explode(",",$row['picids']);
                          $all=count($picid);

                          $picquery="SELECT * FROM $db_images_table WHERE ";
                          for(
                          $i=0;$i<$all;$i++) {
                              
                          $picquery.="id='$picid[$i]' ";
                              if(!empty(
                          $picid[$i+1])) $picquery.=" || ";
                          }
                          #$picquery.="ORDER BY id ASC";
                          $picresult=mysql_query($picquery,$link);
                          $picnum_rows=mysql_num_rows($picresult);?>

                          <table cellspacing="0" cellpadding="0" width="100%" border="0">
                          <tr><td class="topic" colspan="3">Highlightbox</td></tr>
                          <tr><td colspan="3">[img]images/blind.gif[/img]</td></tr>
                          <tr>
                              <td class="small">In Ihrer Highlightbox können Sie Bilder speichern, die Sie während der Bildersuche finden.
                          Die gespeicherten Bilder bleiben solange in Ihrer Highlightbox bis Sie sie löschen, auch wenn Sie die Seite verlassen.</td>
                          <tr>
                          <tr><td>[img]images/blind.gif[/img]</td></tr>
                          </table>
                          <?
                          if($error_msg1) {?><table cellpadding="0" cellspacing="0" class="msgtxt"><tr><td>Einige Bilder sind nicht mehr im Bestand und wurden deshalb aus Ihrer Highlightbox entfernt.</td></tr></table>
                          <?}
                          if($error_msg2) {?><table cellpadding="0" cellspacing="0" class="msgtxt"><tr><td>Das Bild [i]"<?=$allrow['title']?>"[/i] ist in Ihrer Highlightbox schon vorhanden.</td></tr></table>
                          <?}
                          if($error_msg3) {?><table cellpadding="0" cellspacing="0" class="msgtxt"><tr><td>Das von Ihnen ausgewählte Bild existiert nicht in unserer Datenbank.</td></tr></table>
                          <?}
                          if($info_msg1) {?><table cellpadding="0" cellspacing="0" class="msginfo"><tr><td>Das Bild wurde erfolgreich zu Ihrer Highlightbox hinzugefügt.</td></tr></table>
                          <?}
                          if($info_msg2) {?><table cellpadding="0" cellspacing="0" class="msginfo"><tr><td>Das Bild [i]"<?=$srow['title']?>"[/i] wurde erfolgreich aus Ihrer Highlightbox entfernt.</td></tr></table>
                          <?}


                          if($picnum_rows>0) {
                              while ($picrow=mysql_fetch_array($picresult)) {
                                  
                                  $imgsize=getimagesize($picrow['path'].$picrow['name']);
                                  $datetime=explode(" ",$picrow['added']);
                                  $date=explode("-",$datetime[0]); $date_added=$date[2].'.'.$date[1].'.'.$date[0]; unset($date);
                                  $time=explode(":",$datetime[1]); $time_added=$time[0].':'.$time[1].':'.$time[2]; unset($time);?>
                                  <table cellspacing="0" cellpadding="0" width="100%" border="0" class="bordercontent">
                                  <tr>
                                      <td width="160" align="center" <?if($imgsize[0]>$imgsize[1]){echo 'height="120"';}else{echo 'height="160"';}?>>[url="index.php?url=viewimginfo&img=<?=base64_encode($picrow['id'])?>&imgpath=<?=base64_encode($picrow['path'])?>"][img]get.php?obj=<?=rawurlencodeFolder($picrow['path'].$picrow['name'])?>[/img]$imgsize[1]){echo 'width="160"';}else{echo 'height="160"';}?> border="0" />[/url]</td>
                                      <td width="20">[img]images/blind.gif[/img]</td>
                                      <td valign="top">
                                          <table cellpadding="0" cellspacing="2" width="100%" border="0">
                                          <tr><td width="105">Titel:</td><td><?=$picrow['title']?></td><tr>
                                          <tr><td>Autor:</td><td><?=$picrow['autor']?></td><tr>
                                          <tr><td>Keywords:</td><td><?=$picrow['keywords']?></td><tr>
                                          <tr><td>Eingestellt:</td><td><?=$date_added?></td><tr>
                                          <tr><td>Beschreibung:</td><td><?=$picrow['description']?></td><tr>
                                          </table>
                                      </td>
                                      <td width="120" valign="top" style="border-left:1px solid <?=$color1?>;">
                                          <table cellpadding="2" cellspacing="0" width="100%" border="0">
                                          <tr><td align="right">[url="index.php?url=basket&img=<?=base64_encode($picrow['id'])?>&imgpath=<?=base64_encode($picrow['path'])?>&func=add"][img]images/basket_border.gif[/img][/url][url="index.php?url=viewimginfo&img=<?=base64_encode($picrow['id'])?>&imgpath=<?=base64_encode($picrow['path'])?>"][img]images/info.gif[/img][/url][url="<?=$_SERVER['PHP_SELF']?>?url=<?=$url?>&func=del&img=<?=base64_encode($picrow['id'])?>"][img]images/delete.gif[/img][/url]

                          </td></tr>
                                          <tr><td align="right">[url="<?=$_SERVER['PHP_SELF']?>?url=<?=$url?>&func=del&img=<?=base64_encode($picrow['id'])?>"]aus Box entfernen[/url]</td></tr>
                                          <tr><td align="right">[url="index.php?url=basket&img=<?=base64_encode($picrow['id'])?>&imgpath=<?=base64_encode($picrow['path'])?>&func=add"]in den Warenkorb[/url]</td></tr>
                                          <tr><td align="right">[url="index.php?url=viewimginfo&img=<?=base64_encode($picrow['id'])?>&imgpath=<?=base64_encode($picrow['path'])?>"]Details anschauen[/url]</td></tr>
                                          </table>
                                      </td>
                                  <tr>
                                  </table>
                                  [img]images/blind.gif[/img]<?
                              }
                          }
                          else {?>
                          <table cellspacing="0" cellpadding="3" width="100%" border="0" class="bordercontent2">
                          <tr>
                              <td>Sie haben keine Bilder in Ihrer Highlightbox.</td>
                          </tr>
                          </table>
                          <?}?>
                          is nen bissel viel code, aber damit ist es besser zu verstehen.
                          vieleicht hilft das ja weiter.

                          Kommentar


                          • #14
                            Zitat von tsorki
                            ok, hier mal ne kleine Beschreibung und den kompletten code:
                            Dem ist in erster Linie zu entnehmen, daß er nur mit register_globals funktioniert.

                            Es fehlt:
                            - Link auf Dein phpinfo
                            - Link auf den URL, bei dem die Antwort fehlerhaft ist.

                            Hausaufgabe
                            das durchlesen, weil sie so schon zur Überschrift paßt:

                            27.6. Mein Script funktioniert nicht mit Browser XY!
                            http://www.php-faq.de/q/q-html-validieren.html

                            Kommentar


                            • #15
                              register_global funzen.

                              Links kann ich leider nich einstellen, da es sich um einen internen Entwicklungsserver handelt, der von "außen" nicht erreichbar ist.

                              PHP5 läuft unter den Standarteinstellungen.

                              Kommentar

                              Lädt...
                              X