Iphone检测php

Iphone检测php,php,iphone,redirect,detection,Php,Iphone,Redirect,Detection,我有几个Index.php文件,例如(Index.php、index2.php、index3.php等),我还有一个具有不同ID URL的数据库。当有人输入索引文件时,see的登录页是动态的,只有数据库中指定的参数会更改显示的一些参数,比如我输入domain.com/index.php?id=2-这是针对X city的,domain.com/index2.php?id=112将显示针对Y city的页面 到目前为止还不错 现在我正在尝试插入一个Iphone检测代码,它将用户从Iphone输入UR

我有几个Index.php文件,例如(Index.php、index2.php、index3.php等),我还有一个具有不同ID URL的数据库。当有人输入索引文件时,see的登录页是动态的,只有数据库中指定的参数会更改显示的一些参数,比如我输入domain.com/index.php?id=2-这是针对X city的,domain.com/index2.php?id=112将显示针对Y city的页面

到目前为止还不错

现在我正在尝试插入一个Iphone检测代码,它将用户从Iphone输入URL重定向到一个Iphone友好的设计。因此,我创建了一个i-index.php,并在index.php页面中插入了以下代码:

<?
if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPod'))
{
  header('Location: http://www.mydomain.com/mobile/i-index.php');
  exit();
}
?>

现在,当我从iphone中输入url mydomain.com/index.php?id=1时,我被重定向到i-index.php文件,而不是指定的id(?id=1)

我希望我的解释不会令人困惑。有人能为它提供一种重定向到指定ID的方法吗(原始索引和移动索引都正确连接到数据库)

谢谢


<?
if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPod'))
{
  header('Location: http://www.mydomain.com/mobile/i-index.php?id='.$_GET['id']);
  exit();
}
?>
所以我创建了一个i-index.php

标题('位置:')

因此,如果iphone请求i-index.php,该脚本将重定向到i-index.php

?

不是指定的ID(?ID=1)


你的代码中哪里写着“?id=1”?

继续在网上搜索吧

header('Location: http://www.mydomain.com/mobile/i-index.php?id='.$_GET['id']);
<?php

function isIphone($user_agent=NULL) {
    if(!isset($user_agent)) {
        $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
    }
    return (strpos($user_agent, 'iPhone') !== FALSE);
}

if(isIphone()) {
    header('Location: http://www.yourwebsite.com/phone');
    exit();
}

// ...THE REST OF YOUR CODE HERE

?>

这将把整个查询字符串添加到
i-index.php
。因此,您收到的任何查询字符串也将传递到i-Phone版本。如果您需要在
index.php
中添加更多的参数,那么这对将来的更改很有好处,您不必再次更改此代码

<?

if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPod'))
{
  header('Location: http://www.mydomain.com/mobile/i-index.php?' . $_SERVER['QUERY_STRING']);
  exit();
}
?>

我建议不要在PHP中执行此操作,而是。 这可能看起来像这样:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} iPhone
RewriteCond %{REQUEST_URI} !^/mobile/i-index.php
RewriteRule .* /mobile/i-index.php [R,QSA]
QSA
负责处理查询字符串,并将原始参数添加到新url,因此为您提供了更大的灵活性


还有一个更复杂的版本可用。

我在你的代码中没有看到任何
?id=1
。请看这篇关于PHP如何检测iPhone的文章。
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} iPhone
RewriteCond %{REQUEST_URI} !^/mobile/i-index.php
RewriteRule .* /mobile/i-index.php [R,QSA]