zweitaccount
Threadersteller
Dabei seit: 25.01.2008
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Fr 18.07.2008 13:29
Titel [php] Richtiger Statuscode für Location-Redirect |
|
|
Hi, ich habe hier eine Seite die auf sich selbst
redirected wenn der User JavaScript an hat.
Jetzt frage ich mich gerade, welchen Statuscode
ich dem header mitgeben sollte 301 stimmt ja
irgendwie nicht, 302 schon theoretisch oder
aber 304?. Werde aus der Docu nicht schlau.
Hier zum Verständnis:
Code: | <?php
error_reporting(E_ALL);
session_start();
/* Zum Debuggen. get-Parameter 'jsoff' setzt $_SESSION['js'] zurück
* und macht einen header redirect to PHP_SELF
**/
if (isset($_GET['jsoff'])) {
unset($_SESSION['js']);
header('Location: http://' . $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
exit;
}
/* Wenn get-Parameter 'js' gesetzt setze $_SESSION['js'] auf TRUE
* und mache einen header redirect to PHP_SELF (damit der
* get-Parameter nicht gebookmarkt wird)
**/
if (isset($_GET['js'])) {
$_SESSION['js'] = TRUE;
header('Location: http://' . $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
exit;
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JS Check</title>
<script type="text/javascript">
<!--
<?php
/* Wenn $_SESSION['js'] nicht gesetzt oder FALSE ist
* schreibe einen javascript-redirect mit ?js=true.
**/
if ( (!isset($_SESSION['js']) || $_SESSION['js'] == FALSE) && !isset($_GET['js']) ) {
echo "self.location.href = self.location.href + '?js=true';\n";
}
/* Wenn $_SESSION['js'] nicht gesetzt und kein GET 'js' übergeben
* setze $_SESSION['js'] auf false -> Javascript ist aus
* Bei ersten Besuch also immer erstmal FALSE -> und dann
* nach js-redirect eventuell TRUE
**/
if (!isset($_SESSION['js']) && !isset($_GET['js'])) {
$_SESSION['js'] = FALSE;
}
?>
-->
</script>
</head>
<body>
<p><a href="index.php">Einfacher Reload</a></p>
<p><a href="index.php?jsoff=true">$_SESSION['js'] zurücksetzen</a></p>
<script type="text/javascript">
document.writeln('<p>JAVASCRIPT IST AN!</p>');
</script>
<?php
if ( isset($_SESSION['js']) && $_SESSION['js'] == TRUE ) echo '$_SESSION["js"] = TRUE';
elseif ( isset($_SESSION['js']) && $_SESSION['js'] == FALSE ) echo '$_SESSION["js"] = FALSE';
elseif ( !isset($_SESSION['js']) ) echo '$_SESSION["js"] = nicht gesetzt';
else echo 'undefined';
?>
</body>
</html>
|
|
|