• 締切済み

phpのユーザーエージェント取得方法

プログラマーに作ってもらったphp(プログラマーに連絡取れず)なんですが、新しく借りたサーバーのphpのバージョンが一つだか新しいらしくユーザーエージェント取得方法が違うらしく動作しません。。。 どなたか教えてください・・・・ if (!isset($_SESSION[user])){ global $HTTP_USER_AGENT; $ua=$HTTP_USER_AGENT; $lines2=@file("./rendou/rendou.dat"); $date_file2="./rendou/rendou.dat"; $fp2=@fopen($date_file2, "w") or die("File open error."); stream_set_write_buffer($fp2, 0); flock($fp2, LOCK_EX); for($i=1; $i<=count($lines2); $i++){ list($tmp_ua[$i-1], $tmp_time[$i-1])=explode(':',$lines2[$i-1]); if($tmp_ua[$i-1]==$ua){ $_SESSION[user]=$ua; }else{ fwrite($fp2, $lines2[$i-1]); } } flock($fp2, LOCK_UN); fclose($fp2); } if(!$click_flag){ }elseif($click_flag){ if(!isset($_SESSION[user])){ 参考にしろ言われたURLです。 http://oku.edu.mie-u.ac.jp/~okumura/php/registerglobals.html

みんなの回答

  • la_pure
  • ベストアンサー率72% (18/25)
回答No.2

こんにちわ。 とりあえず var_dump($_SERVER); で環境変数をdumpさせてみましょう。 この中にHTTP_USER_AGENTが入っているなら取得できます。 nullのようなら var_dump($HTTP_SERVER_VARS); で取得できるかもしれません。(PHP4.1以前らしいです) まず、その新しくなったというPHPのバージョンを調べましょう。 <?PHP php_info(); ?> でPHPに色々な設定が見れます。(外部からアクセスできないところでやるように)

参考URL:
http://search.net-newbie.com/php/reserved.variables.html#reserved.variables.server
全文を見る
すると、全ての回答が全文表示されます。
回答No.1

$ua = $_SERVER["HTTP_USER_AGENT"]; これで取得出来ると思います。

ha-kichi
質問者

お礼

有難うございます。教えの通りやってみたんですが、解決しませんでした・・・

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • phpである処理をすると数を1足して、ある処理をするとその数字から1引

    phpである処理をすると数を1足して、ある処理をするとその数字から1引くような事をしたいのですが、上手くいきません。(まれに数字にずれが生じてしまいます。) 1足していくもの $fp = fopen("./data/registry/buy.dat","r+"); $registry_count = fgets($fp,1024); if($registry_count == ""){ $registry_count = 0; } $registry_count++; flock($fp,LOCK_EX); fseek($fp,0); fputs($fp,$registry_count); flock($fp,LOCK_UN); fclose($fp); 1引いていくもの $fp = fopen("./data/registry/buy.dat","r+"); $registry_count = fgets($fp,1024); if($registry_count != "0"){ $registry_count--; } flock($fp,LOCK_EX); fseek($fp,0); ftruncate($fp,0); fputs($fp,$registry_count); flock($fp,LOCK_UN); fclose($fp); どなたかご教授ください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • phpで引き算が上手くいかない

    データの引き算で書き出す際に予期しない数字になってしまって 困っております。 data.datに10となっていた際に、下記のコードを実行すると90になってします。本当は9にしたいのですが、どこに原因があるのかわからずにおります。 どなたかご教授ください。 宜しくお願いいたします。 $fp = fopen("data.dat","r+"); $registry_count = fgets($fp,1024); if($registry_count != "0"){ $registry_count--; } flock($fp,LOCK_EX); fseek($fp,0); fputs($fp,$registry_count); flock($fp,LOCK_UN); fclose($fp);

    • ベストアンサー
    • PHP
  • PHP ファイル操作について

    PHPのファイル操作についてご教授ください 同じサーバー内に置いている同じ環境の別ドメインに設置した 同じPHPの挙動が異なる為、その原因を教えて頂きたいです。 ファイルへ保存した場合の改行の有無についてです。 以下一部を抜粋しています。 初期状態(abc.txtの中身) -----ここから----- すもも<>あんず<>すいか<> -----ここまで----- ▼以下を実行 [入力内容] data01:すもも data02:あんず data03すいか $log_file = 'abc.txt'; $lines = ""; $fp = fopen($log_file, "rb+"); set_file_buffer($fp, 0); flock($fp, LOCK_EX); $freadsize = @fread($fp,filesize($log_file)); $freadsize = chop($freadsize); $lines = explode("\n",$freadsize); $lnum = count($lines); for($i=0;$i<$lnum;$i++){ $lines[$i] = "$lines[$i]\n"; } array_unshift ($lines, "$data01<>$data02<>$data03<>$blank"); rewind($fp); $lnum = count($lines); for($i=0;$i<$lnum;$i++){ if(preg_match("/^[0-9]{10}<>+/",$lines[$i])){$check = 1;}else{$check = 0;} if($check == 1){ fputs($fp,$lines[$i]); } } ftruncate($fp, ftell($fp)); flock($fp, LOCK_UN); fclose ($fp); ▼実行後(abc.txtの中身) りんご<>ばなな<>ぶどう<> すもも<>あんず<>すいか<> 別のドメイン下では、改行されません。 りんご<>ばなな<>ぶどう<>すもも<>あんず<>すいか<> この同じPHPを同じサーバー内の別ドメインで 実行した場合、改行される場合と改行されない場合があるのです。 ドメインが異なる以外は同じ環境のはずなのですが、挙動が異なります。 改行をして保存したいのですが、改行されないドメイン下のPHPは array_unshift ($lines, "$data01<>$data02<>$data03<>$blank"); ↓ array_unshift ($lines, "$data01<>$data02<>$data03<>$blank\n"); としています。 何故挙動が異なるのでしょうか? 文字コード、改行コードは同じです。

    • ベストアンサー
    • PHP
  • phpのユーザーエージェントでの振り分け方法

    phpのユーザーエージェントでの振り分け方法 質問お願いします。 phpのユーザーエージェントでの振り分け方法を調べまして $ua = $_SERVER['HTTP_USER_AGENT']; if ((strpos($ua, 'Android') !== false) && (strpos($ua, 'Mobile') !== false) || (strpos($ua, 'iPhone') !== false) || (strpos($ua, 'Windows Phone') !== false)) { // スマートフォンからアクセスされた場合 header("Location: smartphone/index.html"); exit(); } elseif ((strpos($ua, 'Android') !== false) || (strpos($ua, 'iPad') !== false)) { // タブレットからアクセスされた場合 header("Location: tablet/index.html"); exit(); } elseif ((strpos($ua, 'DoCoMo') !== false) || (strpos($ua, 'KDDI') !== false) || (strpos($ua, 'SoftBank') !== false) || (strpos($ua, 'Vodafone') !== false) || (strpos($ua, 'J-PHONE') !== false)) { // 携帯からアクセスされた場合 header("Location: mobile/index.html"); exit(); } else { // その他(PC)からアクセスされた場合 header("Location: pc/index.html"); exit(); } とコピペで記入してスマホなどを振り分けています。 safari6とsafari7で見た時だけ header("Location: tablet/index.html"); に振り分けたいのですが、どうしたらよいでしょうか? 素人ですいません。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • a.phpにあるアクセスカウンターの数値を取得する

    質問を出すのは初めてでプログラム1年生です。 質問内容は a.phpにあるアクセスカウンターの数値をb.phpに呼び出したいのですが、可能なのでしょうか?? ちなみにb.phpではアクセスカウントを増やしたくありません。 <form>で括り$_GETで呼び出すなどしましたが、1度a.phpから飛ばないと表示されませんでした。 いろいろ類似する質問や記事を見て試行錯誤しましたが、どうしても表示されません。 どなたか教えていただけたら幸いです。 a.phpで記載している内容です。 <?php $counter_file = 'counter.txt'; $counter_lenght = 8; $fp = fopen($counter_file, 'r+'); if ($fp){ if (flock($fp, LOCK_EX)){ $counter = fgets($fp, $counter_lenght); $counter++; rewind($fp); if (fwrite($fp, $counter) === FALSE){ print('ファイル書き込みに失敗しました'); } flock($fp, LOCK_UN); } } fclose($fp); print('COUNT:'.$counter); ?> b.phpで記載している内容です。 <?php ob_start(); include("a.php"); ob_clean(); print $counter; ?> 私の取って付けたような知識では太刀打ちできませんでした。 どうかお助け願います。

    • ベストアンサー
    • PHP
  • LOCK_EXはifの条件になり得るのか?

    $fp = fopen("/tmp/lock.txt", "r+"); if (flock($fp, LOCK_EX)) { // 排他ロックを確保します ftruncate($fp, 0); // ファイルを切り詰めます fwrite($fp, "ここで何かを書きます\n"); fflush($fp); // 出力をフラッシュしてからロックを解放します flock($fp, LOCK_UN); // ロックを解放します } else { echo "ファイルを取得できません!"; } fclose($fp); PHPのマニュアルサイトに書いてあった例文なのですが、たぶんロックできなかった場合は「ファイルを取得できません!」に出るようにするというものだと思います。 ただ、LOCK_EXはロックできない場合は、ロックできるようになるまで待ちますよね? だとすると、このif文ってelseは機能しないと思うんですが、どうなんでしょうか? もしかしてLOCK_EXは時間制限があって、待ち状態が何分も続くとタイムアウトとしてFalseを返す? そのときにelseが動くということでしょうか? この例文の下にLOCK_NBを使ったものもあるので、LOCK_EXの動作を勘違いしてるとは思えません。 この例文はどのタイミングの時にFalseを返して、elseが動くのでしょうか? http://php.net/manual/ja/function.flock.php

    • 締切済み
    • PHP
  • phpでエージェントの振り分けがうまくいかない

    phpでエージェントの振り分けがうまくいかない 以下のようにmフォルダの中にindex.phpを以下の内容で設置し、同列でi,a,sフォルダを設け それぞれindex.htmlを設けました。しかし携帯でhttp://hoge.com/m で打つとサイトがみつかりませんになります。<?phpより上は空白、改行はありません。 振り分けがうまく機能しないのはなぜでしょうか? <?php $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ header("Location: http://hoge.com/m/i/index.html"); exit; }else if(preg_match("/^(J?-PHONE|Vodafone|MOT?-[CV]|SoftBank)/i", $agent)){ header("Location: http://hoge.com/m/s/index.html"); exit; }else if(preg_match("/^KDDI?-/i", $agent) || preg_match("/UP?.Browser/i", $agent)){ header("Location: http://hoge.com/m/a/index.html"); exit; }else{ header("Location: http://hoge.com/index.php"); exit; } ?>

    • ベストアンサー
    • PHP
  • phpのlock処理について

    phpのlock処理について 頻繁に書き込みされるファイルが飛ばないようにロックをしているのですが、 (アクセスログを保存) phpのロック処理を調べていると 一方ではこれでよい、もう一方ではこれでは意味がないなど 色々な事が書かれており、いまいち理解できません。 wモードで開くと強固なロックは不可能なのでしょうか。 以下のようにしているのですが ロックの意味はないでしょうか。 //ロック専用ファイルを開く $flock=fopen("lock.txt","w"); //ロック専用ファイルをロック flock($flock,LOCK_EX); //書き込むファイルを連結して代入 $lineall = implode('', $lines); //書き込み用のファイルを開く $fp=fopen($log_file,"w"); fwrite($fp, $lineall); fclose($fp); //ロック用ファイルのロック解除 flock($flock, LOCK_UN); fclose($flock); プログラムが1から私が作成したものではなく、 ちょくちょく消えてしまうことからロック処理をしたいのと 処理の問題でwモードでの書き込みでないとどうもゴミが入ってしまうようですので (r+でやってみましたが空行などのゴミが沢山入ってしまいました) wモードでの強固なロック方法があればと思うのですが・・・。 お手数をおかけしますがご教授いただけますと幸いです。

    • ベストアンサー
    • PHP
  • ユーザーエージェント(ソフトバンク)

    初めて投稿いたします。 現在PHPで携帯とPCの振り分けのプログラムを 作っていますが、ソフトバンクのエミュレーターで 試したところ、どうしてもPCの方のサイトへ飛んでいってしまい ます。ユーザーエージェントは "SoftBank"を返すはずなので 問題ないはずなんですが、どなたか原因が分かりましたら ご教授いただけると大変幸いです。 ----------------------------------------------------------- $user_agent= explode( "/", $_SERVER['HTTP_USER_AGENT']); $GB['user_agent0']=$user_agent[0]; if(preg_match("/^KDDI/",$user_agent[0])) $GB['env'] = "i"; switch( $user_agent[0] ){ case "DoCoMo" : case "L-mode" : case "ASTEL" : case "UP.Browser" : case "PDXGW" : case "SoftBank" : case "Vodafone" : case "J-PHONE" : $GB['env'] = "i";

    • 締切済み
    • PHP
  • PHPによる行データのアップダウン

    PHPによる行データのアップダウン フォームからデータ行をGETした内容をアップダウンさせたいのですが、どうにも入れ替えができません。 プログラムコードのアドバイスをください。 *ログファイルの中(data.dat) ゴリラ チューリップ ばなな ストロベリー ペンギン <?php $data = "data.dat"; function row_up() { $lines = @file($data); $lines[$ont] = $lines[$_GET[row]]; //自分 $lines[$_GET[row]] = $lines[$_GET[row]-1]; //前の人 $fp = fopen($data,"w"); rewind($fp); for($i=0;$i<count($lines);$i++) { if($lines[$i] == $lines[$_GET[row]]){ fputs($fp,$lines[$_GET[row]]); } elseif($lines[$i] == $lines[$ont]){ fputs($fp,$lines[$ont]); } fputs($fp,$lines[$i]); } fclose($fp); } function row_down() { $lines = @file($data); $lines[$ont] = $lines[$_GET[row]]; //自分 $lines[$_GET[row]] = $lines[$_GET[row]+1]; //次の人 $fp = fopen($data,"w"); rewind($fp); for($i=0;$i<count($lines);$i++) { if($lines[$i] == $lines[$ont]){ fputs($fp,$lines[$ont]); } elseif($lines[$i] == $lines[$_GET[row]]){ fputs($fp,$lines[$_GET[row]]); } fputs($fp,$lines[$i]); } fclose($fp); } switch($_GET[mode]) { case up: row_up(); break; case down: row_down(); break; default: break; } ?>

    • ベストアンサー
    • PHP