• 締切済み

携帯でのheader Locationについて

携帯を対象としたHPをphpで作成しています。 ファイルから$urlを取得して、 header("Location: $url"); にて、ジャンプさせるのですが、iモードだとうまく$urlのHPにジャンプするのですが、Vodafoneではうまくジャンプできず、エラー画面が表示されてしまいます。 auではまだ試していないので分かりませんが、機種や会社によって上記のようなLocationは使えないのでしょうか? なぜ、うまくジャンプしないのか分かりません。 なんか良い方法・理由を教えてください。よろしくお願い致します。

  • PHP
  • 回答数3
  • ありがとう数5

みんなの回答

  • kuny2005
  • ベストアンサー率67% (21/31)
回答No.3

パラメータ付でのヘッダーロケーションはできたと思いますよ。 (そういうシステム作った経験があります。) 以下のスクリプトでもダメですか? ----- a.php ----- <?php header("Location: http://hogehoge.com/b.php?a=1"); ?> ----- ----- b.php ----- <html> <body> a=<?=$_GET['a']?> </body> </html> -----

回答No.2

そうですか、ではリダイレクト先を直接リクエストさせた時は表示されますか? vodafoneはその機種によってHTMLなどの規約の解釈が厳密な部分があって、「このページは表示できません」のようなエラーが出る事はよくあります。が、リダイレクトそのものが原因だった事は経験ないですね。リダイレクトに伴う変数の受け渡しなどが原因の場合がほとんどでした。vodafoneの場合セッションIDがうまく渡せない場合もあります。 念のためですが、vodafoneのgatewayから送られる情報などをリダイレクト先で利用していたりしますか?例えば位置情報や端末IDなど。リダイレクトされた場合、これらの情報は取得できません、御存知かと思いますが、念のためお知らせしておきます。

HAYATE-chi
質問者

補足

ご回答ありがとうございます。 urlはhttp://xxx.com/axxx.php?id=xxx という形式となっています。 $url先を別の方法でリンク <a href="http://xxx.com/xxx.php?id=xxx">リンク</a>問う形では、正常にリンク先を表示させることができます。 色々と試してみると、どうやら、 header("Location: $url"); を使用することによって、$urlの$idがうまく受け渡されていないようです。 vodafoneの機種にもよるのでしょうか? vodafoneでもうまく表示させる良い方法は何かないでしょうか?

回答No.1

$urlはhttp:から始まる絶対URLになっていますか? 元々リダイレクトの仕様としては絶対URLでなければならないと記憶していますが、ほとんどのブラウザ(IEやドコモなど)は相対URLでもリダイレクトをしてくれます。ですが、vodafoneはこのあたり厳密な仕様になっているようですよ。

HAYATE-chi
質問者

お礼

ご回答ありがとうございます。 $urlは絶対パスです。したがって、URLの記述方式や、URL先が間違っているわけではないと思います。 他の色々なスクリプトを試してみましたが、 header("Location: $url");の記述に問題があるような気がしてなりません; 原因がわからないので困っています;

関連するQ&A

  • header Locationに関するエラー

    こんにちわ。質問があります。 以下のコードに問題はありますか? "http://xxx.xxx.xxx.html"(仮名)というURLからアクセスした場合は リンク元を表示し、その他からのアクセスの場合は、google.co.jpに飛ぶというプログラムです。 header:Locationの使い方がおかしいらしく、エラーとなってしまいます。 どこに問題がありますでしょうか?ご教示いただけますと大変助かります。 どうぞよろしくお願い申し上げます。 ------------------------------------------------------------- <?php $referer=$_SERVER['HTTP_REFERER']; echo 'referer = '; echo $referer; echo '<br>'; if($referer == "http://xxx.xxx.xxx.html") { echo 'from '; echo $referer; } else { $url="http://www.google.co.jp/"; header("Location: $url"); exit; } ?>

    • ベストアンサー
    • PHP
  • header("Locationとリロードについて

    Chromeでリロードしても、header("Location がうまくいきません。 リロードした際も、URLを遷移させるにはどうすればいいでしょうか? ▼index.php <?php  header("Location: http://yahoo.co.jp/");  exit; ?> ・URL入力後、右クリック&再読み込み → 遷移しない ・URL入力後、F5 → 遷移しない ・URL入力後、URL入力欄左にある「このページを再読み込みします」のマーク → 遷移しない(遷移するときもある?) ・URL入力後、Enter → 遷移する ・URLを「貼り付けて検索」 → 遷移する 後、Chromeで、以下の3つに何か違いはあるのでしょうか? ・右クリック&再読み込み ・F5 ・URL入力欄左にある「このページを再読み込みします」のマーク

    • ベストアンサー
    • PHP
  • header("Location: ")でページ移動しない;

    <?php $image_no = $_GET['image_no']; if($image_no == ""){ $image_no = 0; } if($image_no == 10){ header("Location: http://www.test/i/"); } ?> <img src="../img/test<?php echo $image_no;?>.jpg"> <?php echo $image_no;?> <br/> <a href="test.php?image_no=<?php echo $image_no + 1;?>">次へ</a> こんなカンジで、『次へ』のリンクをクリックすると、画像が切り替わるものを書いたんですが、$image_no == 10になったら、別のページへジャンプしたいんですが、うまくいきません。 10回目でエラーになってしまいます。 どうやったらうまく違うページへジャンプできるのでしょうか?

    • ベストアンサー
    • PHP
  • header("location~")をPOSTで渡す方法を探しています

    phpでの質問です。 header("location~")をPOSTで渡す方法を探しています。 携帯サイトなのでJavascriptは使えません。 shift-jisのサイトからutf-8のサイトへ渡します。 (1)307でリダイレクト header('Location: '.$url, true, 307); =>POSTの文字コードを変換できないのでダメでした。 (2)POSTで送信してからリダイレクト http://questionbox.jp.msn.com/qa3554188.html?StatusCheck=ON =>うまくいきません。やり方が悪いのかもしれません…。 送り元のサイトの文字コードをutf-8にしてしまえば解決するのですが、携帯サイトなのでshift-jisにするしかありません。 (最近ではほとんどの機種がutf-8対応になっていますが、社長の機種が対応していなくて…) よろしくお願いします。

    • ベストアンサー
    • PHP
  • header("Location: mailto:

    header("Location: mailto: でメーラを開く時、本文を改行させたらエラーになるのですが、回避する方法はありませんか? <?php // 送信ボタンが押されたら if (isset($_POST["submit"])) { $wk_adrs = "web@test.sakura.ne.jp"; $wk_subject = "サブジェクト"; // これはOK $wk_body = "ボディー"; // これはNG $wk_body = "1行目ボディー".PHP_EOL."2行目ボディー"; // これもG $wk_body = <<< EOM 1行目ボディー 2行目ボディー EOM; // 画面遷移させる $wk_Location="Location: mailto:".$wk_adrs."?subject=".$wk_subject."&body=".$wk_body; header($wk_Location); exit; } ?> 下記のメッセージが出る Warning: Header may not contain more than a single header, new line detected in

    • ベストアンサー
    • PHP
  • locationでジャンプした場合GETパラメータは認識されるの?(携帯編)

    (携帯サイトの場合です) I.まず下記のようにlocationヘッダでジャンプさせます。 header("Location: http://hoge.com/test.php?id=ok"); II.ジャンプ先で $id = $_GET["ok"]; とした場合GETパラメータは正常に取得できるのでしょうか。 お分かりになる方よろしくお願い致します。

    • 締切済み
    • PHP
  • LocationにてHeader送信時にURLの#以降が消える

    初めて質問させて頂きます。よろしくお願いいたします。 LAMP構成にてWEBデータベースを作成しています。 Locationを使用したHeader送信の際、指定URLの特定の位置にリンク させるため、URLの最後に #を指定してリンク先を指定して いるのですが、実際にHeader送信されると、 目的のページはちゃんと開けますが URLの#以降が消えて指定の位置にリンクできません。 header("Location: {$_SERVER["PHP_SELF"]}?{$mySID}#{$myID}"); exit; もちろん、HTML側には、リンク先である、 <A name={$myID}></A> が指定されています。 ですので、ページが開いた後に、URLの最後に手で#999 などと 入れて再読込すると正しくリンクできます。 Apacheのアクセスログを見ると、#以降が無いURLがGET送信されていることが確認できました。 2つのサイトを作成しており、同じようなLocationを使用した Header送信を行っている箇所がいくつかありますが、 このような現象に遭遇した経験が無いもので、 どうしたらよいか途方にくれています。 何か、特定の条件にマッチした場合に、#以降の値が消えて WEBサーバーに送信される などということがあるのでしょうか? どんな小さいことでも、構いませんので、 どなたか、レスを頂けないでしょうか? どうぞ、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • headerについて

    <?php header("Location:x.php?y=1"); exit; ?> はOKですが <?php $_GET['xx']; header("Location:x.php?y=1"); exit; ?> はだめです エラーメッセージは Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/z.php:2) in /var/www/html/z.php on line 3 $_GET['xx']や$_POST['xx']などをheaderの前に置けないと非常に困ります (上はテスト用PHPです) どうしたらいいでしょうか?

    • ベストアンサー
    • PHP
  • 【PHP?】header("location : ・・・")が作動しな

    【PHP?】header("location : ・・・")が作動しない PHPに関して質問させていただきます。 -------------------------------------------- <html> <head> <title></title> </head> <body> <?php if($_POST['pay'] == credit) { header("Location : creditinfo.php"); } else { print("ただいま制作中です\n"); } ?> </body> </html> -------------------------------------------- というコーディングを行い、 ・前ページでのpostで[credit]というデータが返ってくると別ページへ移動 ・それ以外のデータが帰ってきたら「ただいま制作中です」というテキストを表示 ということを行いたいのですが、 それを実行すると Warning: Cannot modify header information - headers already sent by (output started at C:・・・.php:6) in C:・・・.php on line 8 というエラーが返ってきてしまい、そのページから先に進めなくなってしまいます。 様々なページで解決方法を探りましたが、解決できずにいます。 ちなみに、elseの方の「ただいま制作中です」は表示できます。 どなたかご教授をお願いします。

    • ベストアンサー
    • PHP
  • php header

    <?php header("Location: http://www.example.com/"); exit; ?> 上記のheaderですと該当ページに飛んでしまいます。 直接飛んでしまうのではなく直接CGIにURLを送りたいのですが 関数等ありますか?わかりやすく言うとURLだけ送信したい。 clickした事にしたいです。

専門家に質問してみよう