Redirecting a page automatically in PHP

2019-02-12 13:58发布

问题:

I want to redirect a page automatically in PHP

Logout.php:

<?php 
  include "base.php"; 
  $_SESSION = array(); session_destroy();
?>
<meta http-equiv="refresh" content="=0;URL=index.php" />

Where base.php calls the database and starts the session:

<?php
  session_start();  
  $dbhost = "localhost";
  $dbname = "login";
  $dbuser = "root";
  $dbpass = "";
  mysql_connect($dbhost, $dbuser, $dbpass) or die("MySQL Error: " . mysql_error());  
  mysql_select_db($dbname) or die("MySQL Error: " . mysql_error());  
?>  

When pressing logout, I am not getting back to index.php.

回答1:

This should work, you had an extra = before 0:

<meta http-equiv="refresh" content="0;URL=index.php" />

Linky https://en.wikipedia.org/wiki/Meta_refresh



回答2:

As far as I know, HTML, JavaScript and PHP provide their own way of page / header redirection. Here are three examples, showing how to redirect to http://google.com

# JavaScript:

<script type="text/javascript">
    window.location = "http://google.com";
</script>

# HTML:

<meta http-equiv="refresh" content="0; URL='http://google.com'"/> 

Note The 0 in content="0;, is a value for seconds. It tells the browser how many seconds it should wait before starting the redirect.

# PHP:

<?php

header('Location: http://www.google.com');

Note A PHP header() must be Always be placed before outputting anything to the browser; even a single empty space. Otherwise, it will cause the infamous "header already sent" errors.



回答3:

you can put this on your PHP code:

header('Location:index.php');

Note that as per all headers, this must be placed before any output (even whitespace).



回答4:

Meta refresh syntax is slightly wrong

<meta http-equiv="refresh" content="0;URL='<?php echo $_SERVER['HTTP_HOST']; ?>/index.php'">

More details here http://en.wikipedia.org/wiki/Meta_refresh

The cleaner way is to send a http redirect header

More details here http://en.wikipedia.org/wiki/HTTP_301

logout.php

<?php
..
session_destroy();
header( 'HTTP/1.1 301 Moved Permanently');
header( 'Location: ' . $_SERVER['HTTP_HOST']  . '/index.php' );
exit(0);

Concerning absolute URIs in redirects W3C says

14.30 Location

The Location response-header field is used to redirect the recipient to a location other than the Request-URI for completion of the request or identification of a new resource. For 201 (Created) responses, the Location is that of the new resource which was created by the request. For 3xx responses, the location SHOULD indicate the server's preferred URI for automatic redirection to the resource. The field value consists of a single absolute URI.

   Location       = "Location" ":" absoluteURI

An example is:

   Location: http://www.w3.org/pub/WWW/People.html

Source: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html



标签: php html http