B4ttl3m4st3r: Problem mit "HTTP-Status 204 No Content"

Hallo zusammen.

Ich habe ein Problem mit dem sog. HTTP-Status 204 für eine Query-Abfrage.

Ich befasse mich mit der 204-Fehlerseite mit einer Header-Angabe erst seit kurzem und habe diesbezüglich noch nicht viel Kenntnisse.
Ich erachte diese Methode allerdings jetzt schon als sehr nützlich, da man damit Querys senden kann, ohne eine Seitenaktualisierung vornehmen zu müssen.

Bei Klick auf folgenden Link sollen die Querys und die GET-Parameter an die query.php gesendet werden, ohne dass sich die Seite verändert.

<a onclick="this.href+='&jscript=1';" href="query.php?action=1234&id=241&value=5">Sende Querys</a>

Der Inhalt der query.php:

<?php  
if(isset($_GET['action'],$_GET['value'],$_GET['jscript'],$_GET['id']) AND $_GET['action'] == "1234" AND $_GET['jscript'] == "1") {  
//bedarf hier leider einer neuen mySQL-Anmeldung  
		include "../../../php/mysql.php";  
		@mysql_connect(MYSQL_HOST, MYSQL_USERNAME, MYSQL_PASSWORD) AND mysql_select_db(MYSQL_DATABASE) OR die('no database.'."\n");  
		$sql = "UPDATE  
					".MYSQL_PREFIX."table1  
				SET  
					row1 = row1 + 1  
				WHERE  
					id = '".$_GET['id']."'";  
		$result = mysql_query($sql) OR die(mysql_error());  
}  
header("HTTP/1.1 204  No Content")  
?>

Das funktioniert soweit ganz gut, doch nun versuche ich in die query.php eine Kontrollstruktur (if-else) einzubauen, die zuerst eine Variable (in meinem Falle eine $SESSION) übeprüfen soll, befor die Querys gesendet werden, etwa so:

<?php  
if(isset($_GET['action'],$_GET['value'],$_GET['jscript'],$_GET['id']) AND $_GET['action'] == "1234" AND $_GET['jscript'] == "1") {  
if(isset($_SESSION['login'])) {  
		// sende querys  
}  
}  
header("HTTP/1.1 204  No Content")  
?>

Hier werden die Querys nicht mehr gesendet, auch, wenn $_SESSION['login'] vorhanden ist.
Würde mich freue, wenn mir da jemand helfen kann oder andere Vorschläge für "Query senden ohne Seitenaktualisierung" hat.

Danke.

  1. Hallo,

    <?php

    if(isset($_GET['action'],$_GET['value'],$_GET['jscript'],$_GET['id']) AND $_GET['action'] == "1234" AND $_GET['jscript'] == "1") {
    if(isset($_SESSION['login'])) {
    // sende querys
    }
    }
    header("HTTP/1.1 204  No Content")
    ?>

    
    >   
    > Hier werden die Querys nicht mehr gesendet, auch, wenn `$_SESSION['login']`{:.language-php} vorhanden ist.  
      
    wo ist dein session\_start()? So wird das nichts, dieses Script weiß nichts von einer Session!  
      
    So long,  
     Martin  
    
    -- 
    Finanztipp:  
    Leihen Sie sich Geld von einem Pessimisten.  
    Er rechnet sowieso nicht damit, dass er es zurückbekommt.  
    
    
    1. wo ist dein session_start()? So wird das nichts, dieses Script weiß nichts von einer Session!

      So long,
      Martin

      Hallo Martin,

      auch hier wieder Danke für deine schnelle Antwort.

      Sobald ich ein session_start(); zu dem Script hinzufüge, bekomme ich bei Klick auf den Link folgende Meldung

      Parse error: syntax error, unexpected T_IF in G:\XAMPP 1.7.2\htdocs\query.php on line 4

      1. Hallo,

        Sobald ich ein session_start(); zu dem Script hinzufüge, bekomme ich bei Klick auf den Link folgende Meldung
        Parse error: syntax error, unexpected T_IF in G:\XAMPP 1.7.2\htdocs\query.php on line 4

        dann hast du etwas falsch gemacht. Das ist ein gravierender Syntaxfehler.
        An welcher Stelle genau hast du den Aufruf eingefügt? Zeig mal! :-)

        Ciao,
         Martin

        --
        Er:  Mit wem warst du gestern abend aus?
        Sie: Du bist mal wieder eifersüchtig wie immer!
        Er:  Wer ist Immer?
        1. Hallo,

          Sobald ich ein session_start(); zu dem Script hinzufüge, bekomme ich bei Klick auf den Link folgende Meldung
          Parse error: syntax error, unexpected T_IF in G:\XAMPP 1.7.2\htdocs\query.php on line 4

          dann hast du etwas falsch gemacht. Das ist ein gravierender Syntaxfehler.
          An welcher Stelle genau hast du den Aufruf eingefügt? Zeig mal! :-)

          Ciao,
          Martin

          Hoppla!
          Hab doch glatt das ";" vergessen hinter dem session_start() >_<

          Dennoch will das ganze nicht wirklich funktionieren.
          Um nochmal genauer drauf einzugehen:
          Eigentlich wollte ich das so machen, wenn man nicht eingeloggt ist, dass
          man auf ein andere Seite verwiesen wird bzw. auf der gleichen Seite bleibt, wo der Link ist und eine Meldung ausgespuckt wird.
          Wenn man eingeloggt ist soll lediglich der Query gesendet werden (Meldung wird dann mit javascript ausgegeben).

          <?php  
          if(isset($_GET['action'],$_GET['value'],$_GET['jscript'],$_GET['id']) AND $_GET['action'] == "1234" AND $_GET['jscript'] == "1") {  
          session_start();  
          if(isset($_SESSION['username'])) {  
          //bedarf hier leider einer neuen mySQL-Anmeldung  
                          include "../../../php/mysql.php";  
                          @mysql_connect(MYSQL_HOST, MYSQL_USERNAME, MYSQL_PASSWORD) AND mysql_select_db(MYSQL_DATABASE) OR die('no database.'."\n");  
                          $sql = "UPDATE  
                                                  ".MYSQL_PREFIX."table1  
                                          SET  
                                                  row1 = row1 + 1  
                                          WHERE  
                                                  id = '".$_GET['id']."'";  
                          $result = mysql_query($sql) OR die(mysql_error());  
             } else {  
                 echo 'variable nicht vorhanden. querys nicht gesendet.'  
             }  
          }  
          header("HTTP/1.1 204  No Content")  
          ?>  
          
          
          1. Hi,

            Eigentlich wollte ich das so machen, wenn man nicht eingeloggt ist, dass
            man auf ein andere Seite verwiesen wird bzw. auf der gleichen Seite bleibt, wo der Link ist und eine Meldung ausgespuckt wird.

            Und wo hast du versucht, das umzusetzen?

            MfG ChrisB

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.
            1. Hi,

              Eigentlich wollte ich das so machen, wenn man nicht eingeloggt ist, dass
              man auf ein andere Seite verwiesen wird bzw. auf der gleichen Seite bleibt, wo der Link ist und eine Meldung ausgespuckt wird.

              Und wo hast du versucht, das umzusetzen?

              MfG ChrisB

              Eigentlich hatte ich soetwas wie das hier versucht. Leider ohne Erfolg.

                
              <?php  
              if(isset($_GET['action'],$_GET['value'],$_GET['jscript'],$_GET['id']) AND $_GET['action'] == "1234" AND $_GET['jscript'] == "1") {  
              session_start();  
              if(isset($_SESSION['username'])) {  
              //bedarf hier leider einer neuen mySQL-Anmeldung  
                              include "../../../php/mysql.php";  
                              @mysql_connect(MYSQL_HOST, MYSQL_USERNAME, MYSQL_PASSWORD) AND mysql_select_db(MYSQL_DATABASE) OR die('no database.'."\n");  
                              $sql = "UPDATE  
                                                      ".MYSQL_PREFIX."table1  
                                              SET  
                                                      row1 = row1 + 1  
                                              WHERE  
                                                      id = '".$_GET['id']."'";  
                              $result = mysql_query($sql) OR die(mysql_error());  
                              header("HTTP/1.1 204  No Content");  
                 } else {  
                     header("Location: index.php?message=needlogin");  
                 }  
              }  
              ?>
              
              1. Hi,

                Eigentlich hatte ich soetwas wie das hier versucht. Leider ohne Erfolg.

                "Leider ohne Erfolg" ist äquivalent zu "funzt nich".

                Tipps für Fragende lesen, *brauchbare* Problembeschreibung liefern.

                MfG ChrisB

                --
                Light travels faster than sound - that's why most people appear bright until you hear them speak.
                1. Hi,

                  Eigentlich hatte ich soetwas wie das hier versucht. Leider ohne Erfolg.

                  "Leider ohne Erfolg" ist äquivalent zu "funzt nich".

                  Tipps für Fragende lesen, *brauchbare* Problembeschreibung liefern.

                  MfG ChrisB

                  »»

                  Nunja was soll ich da großartig beschreiben?
                  Tut mir leid, wenn das nicht rüber gekommen ist aber es passier bei Klick auf den Link garnichts - Query wird nicht gesendent, keine Weiterleitung auf andere Seite und Fehlermeldung gibt er mir auch nicht.
                  Ob die Variable $_SESSION['login'] vorhanden ist oder nicht - garnichts passiert.

                  Zur Zeit sieht das ganze so aus und es funktioniert.

                  <?php
                  if(isset($_GET['action'],$_GET['value'],$_GET['jscript'],$_GET['id']) AND $_GET['action'] == "1234" AND $_GET['jscript'] == "1") {
                  session_start();
                  if(isset($_SESSION['login'])) {
                  // QUERYS
                  header("HTTP/1.1 204  No Content");
                  } else {
                  header("Location: index.php?section=seite_mit_link");
                  }
                  } else {
                  header("Location: index.php?message=needlogin");
                  }
                  ?>

                  An dieser Stelle danke an die, die mir geholfen bzw. versucht haben mir zu helfen.

      2. Moin!

        Sobald ich ein session_start(); zu dem Script hinzufüge, bekomme ich bei Klick auf den Link folgende Meldung

        Parse error: syntax error, unexpected T_IF in G:\XAMPP 1.7.2\htdocs\query.php on line 4

        Dann hast du einen Syntaxfehler produziert, indem du was wo reingeschrieben hast, wo es nicht hingehört.

        - Sven Rautenberg