3

I have several Index.php files, such as (index.php, index2.php, index3.php etc.), I also have a database with different ID URL's. when some one enters a index file, the landing pages the see are dynamic and only the specified parameters in the database changes some of the parameters on display, lets say i enter domain.com/index.php?id=2 - this is for X city and the domain domain.com/index2.php?id=112 will display a page for Y city.

So far so Good..

now i am trying to insert a Iphone detection code, that will redirect users that are entering the urls from iphone to an iphone friendly design. so i created an i-index.php inserted the following code into the index.php page:

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

and now when i enter the url mydomain.com/index.php?id=1 from my iphone i am redirected to the i-index.php file but not to the specified ID (?id=1).

i hope my explanation is not to confusing. can anyone suggest a way for it to redirect to the specified ID (both original index and the mobile index are connected to the database correctly)

Thank you

4

6 に答える 6

2
<?
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();
}
?>
于 2012-05-17T08:48:13.270 に答える
0

だから私は挿入されたi-index.phpを作成しました

..。

header('場所:http ://www.mydomain.com/mobile/i-index.php ');

したがって、iPhoneがi-index.phpを要求すると、そのスクリプトはリダイレクトをi-index.phpに送信します。

指定されたIDではありません(?id = 1)。

コードのどこに「?id = 1」と書かれていますか?

于 2012-05-17T08:48:36.650 に答える
0
header('Location: http://www.mydomain.com/mobile/i-index.php?id='.$_GET['id']);
于 2012-05-17T08:48:43.690 に答える
0

ウェブで検索し続ける

<?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

?>

そしてJavaScriptであなたは言う

var agent = navigator.userAgent;
var isIphone = ((agent.indexOf('iPhone') != -1) || (agent.userAgent.indexOf('iPod') != -1)) ;
if (isIphone) {
    window.location.href = 'http://www.yourwebsite.com/phone';
}

iPhone ブラウザの検出

于 2012-05-17T08:52:48.263 に答える
0

これにより、クエリ文字列全体がi-index.php. したがって、受け取ったクエリ文字列はすべて iPhone バージョンにも渡されます。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();
}
?>
于 2012-05-17T08:53:44.487 に答える
0

PHP でこれを行うのではなく、.htaccess ファイルで RewriteEngine を使用することをお勧めします。これは次のようになります。

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} iPhone
RewriteCond %{REQUEST_URI} !^/mobile/i-index.php
RewriteRule .* /mobile/i-index.php [R,QSA]

QSAクエリ文字列を処理し、元のパラメータを新しい URL に追加するため、柔軟性が向上します。

別のスレッドで利用可能な、より洗練されたバージョンもあります。

于 2012-05-17T08:58:15.507 に答える