Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果第一次重定向失败,则执行第二次重定向_Php_Jsp_Redirect - Fatal编程技术网

Php 如果第一次重定向失败,则执行第二次重定向

Php 如果第一次重定向失败,则执行第二次重定向,php,jsp,redirect,Php,Jsp,Redirect,我写这段代码是为了将访问者重定向到我的笔记本电脑中托管的服务器(动态ip) 我使用第二个php脚本来更新数据库中的ip <?php //redirect.php $con = mysql_connect($db_hostname,$db_admin,$db_password); if (!$con){ echo "Couldn connect to server !!"; } $sql ="select ip from $db

我写这段代码是为了将访问者重定向到我的笔记本电脑中托管的服务器(动态ip)

我使用第二个php脚本来更新数据库中的ip

    <?php
    //redirect.php
    $con = mysql_connect($db_hostname,$db_admin,$db_password);
    if (!$con){
        echo "Couldn connect to server !!";
    }
    $sql ="select ip from $db_name.redirect WHERE id=0";
    $result = mysql_query($sql,$con);
    $ip = "error.php";
    while($row = mysql_fetch_array($result)){
    $ip=$row[0];
    }
    //Header( "HTTP/1.1 301 Moved Permanently" ); 
    $forward = "Location: http://$ip";
    header( $forward ) ;
    //Header(  "Location: errorMsg.php"); 
    ?>

但我的笔记本电脑服务器很少开机, 我想知道如果第一次重定向失败,是否可以重定向到errorMsg.php


使用jsp也可以实现同样的效果???

我想您可以ping IP,如果它没有响应,那么使用errorMsg.php。试试这个:

$dsn = 'mysql:dbname='.$db_name.';host='.$db_hostname;

try
{
        $dbh = new PDO($dsn,$db_admin,$db_password);
} catch(PDOEXception $e) {
        echo 'Couldn connect to server !!';
}

$sql = 'SELECT ip FROM redirect';
$sth = $dbh->prepare($sql);
$sth->execute();
$ip = $sth->fetchColumn();
$location = 'errorMsg.php';
if($ip && $fp=fsockopen($ip,80,$en,$es,1)) {
        fclose($fp);
        $location = 'http://'.$ip;
}

header('Location: '.$location);
这假设您有某种方法用所需的IP更新数据库


PS-如果不明显,我建议使用PDO。

我想您可以ping IP,如果没有响应,则使用errorMsg.php。试试这个:

$dsn = 'mysql:dbname='.$db_name.';host='.$db_hostname;

try
{
        $dbh = new PDO($dsn,$db_admin,$db_password);
} catch(PDOEXception $e) {
        echo 'Couldn connect to server !!';
}

$sql = 'SELECT ip FROM redirect';
$sth = $dbh->prepare($sql);
$sth->execute();
$ip = $sth->fetchColumn();
$location = 'errorMsg.php';
if($ip && $fp=fsockopen($ip,80,$en,$es,1)) {
        fclose($fp);
        $location = 'http://'.$ip;
}

header('Location: '.$location);
这假设您有某种方法用所需的IP更新数据库


PS-如果PDO不明显,我建议使用它。

总之,不。一旦发送了重定向,您与客户端的连接(可能)就会断开,您当然无法控制其未来行为。这是HTTP协议本身的一个限制,与服务器端语言无关。您需要一个反向代理来执行类似的操作。或者,我想,如果页面在n秒后仍然加载到浏览器中,则可以通过提供一个带有Javascript的HTML文档,并立即重定向到URL 1,以及一个重定向到URL 2的计时器来完成,但这在任何方面都不可靠。总之,不。一旦发送重定向,您与客户端的连接(可能)是你当然无法控制它未来的行为。这是HTTP协议本身的一个限制,与服务器端语言无关。您需要一个反向代理来执行类似的操作。或者,我想,如果页面在n秒后仍然加载到浏览器中,则可以通过提供一个带有Javascript的HTML文档,并立即重定向到URL 1和一个重定向到URL 2的计时器来实现,但这无论如何都不可靠。谢谢,ping工作得非常好。但我不明白你为什么建议PDO。你能详细说明一下吗?谢谢,ping工作得很好。但我不明白你为什么建议PDO。你能详细说明一下吗?