Redirecting a page automatically in PHP

2019-02-12 14:11发布

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.

标签: php html http
4条回答
疯言疯语
2楼-- · 2019-02-12 14:23

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楼-- · 2019-02-12 14:25

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

查看更多
再贱就再见
4楼-- · 2019-02-12 14:30

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

查看更多
乱世女痞
5楼-- · 2019-02-12 14:36

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).

查看更多
登录 后发表回答