【PHP】下らねぇ質問はここに書き込みやがれ 21
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/05/23(火) 22:05:17ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
過去スレは>>2
0153nobodyさん
2006/05/25(木) 20:33:12ID:???ひょっとして
<html>
<title>ほげほげ</title>
<body>
<?php echo $key ?>
</html>
みたいな感じで自分自身のタイトルを取得したい、って話?
だとするとちょっと凝った手が必要になると思う。
0154nobodyさん
2006/05/25(木) 21:00:33ID:???0155nobodyさん
2006/05/25(木) 21:01:33ID:???0156nobodyさん
2006/05/25(木) 21:16:48ID:1NG09F7iそうです、タイトルさえ取得できれば私が思っていることができるのです。
>>152
ありがとうございます。以前も同じような質問をしたのですが
何故かスルーされて解決に至らなかったのです。
この件でかなりの時間悩んでいたのでこの機にどうにか解決したいです。
<?php echo $matches ?> これで一応文字は表示されたのですが
タイトル名ではなく Array と表示されます。
0158nobodyさん
2006/05/25(木) 21:42:52ID:1NG09F7iお願いします。
0159nobodyさん
2006/05/25(木) 21:47:59ID:???なんでマニュアルにあることまで・・・
Arrayって配列だよ
0160nobodyさん
2006/05/25(木) 21:49:04ID:???そういう甘えは許さないよ。
もうレスはいっぱいもらって解決法も分かったでしょ。
はい次。
0161nobodyさん
2006/05/25(木) 22:01:36ID:1NG09F7i0162nobodyさん
2006/05/25(木) 22:08:57ID:???私もよくここで質問をしていたけれど、本当に初心者な質問に関しては
ノーヒントで「マニュアル嫁」やら「死ね」と言われていたもんだ。
そのとき私は「なんでコイツラこんなに厳しいんだろう…、もし俺が回答者なら、すんなり答えを教えてやるのになあ… もしかして
コイツラはレベル低すぎて答えられないのではないか…? いやいや、そんなハズはない! 数学の授業で少し頭の良い友達に聞いてもなかなか答えを教えてくれない奴と同じか?」なんて思っていたりした。
でも、今考えてみると、当時の回答者の気持が分かったきがする。
質問者のことを考えた " やさしい意地悪 "なんだなって。
悔しくても、成長するんだなって。
で、
$basetext = 'ももも <title>hoge</title> ももも';
preg_match ('/<title>[^<>]+<\/title>/i', $basetext, $matches);
echo $matches[0];
これじゃ<title>hoge</title>しか出力されない訳だが。
正規表現に詳しい人よろ。
0164nobodyさん
2006/05/25(木) 22:14:07ID:???まぁ正規表現ならマニュアル書いて無いし別にいいよ。
欲しいトコ(この場合hogeに当たる部分)を丸カッコで囲んでみな
0166nobodyさん
2006/05/25(木) 22:31:27ID:???$basetext = 'ももも <title>hoge</title> ももも';
preg_match('/<title>([^<>]+)<\/title>/i', $basetext, $matches);
$key = $matches[1];
echo $key;
ということだな。
0167nobodyさん
2006/05/25(木) 22:40:53ID:???全くもーお前らは。
0169nobodyさん
2006/05/25(木) 22:46:57ID:???例えばだ。
弟に「カケ算の7の段を教えてー」と言われたとする。
しかも手には算数の教科書。もちろん中には九九の一覧表がある。
そんな状態でワザワザ弟に付きあってやる必要は感じないだろ?
コッチが教えた事が弟の次に繋がるのであれば話は別だが。
0170nobodyさん
2006/05/25(木) 22:50:44ID:???Cookie使えないケータイってまだ存在するの?
少なくとも、auとtu-kaの全機種はCookie対応だよ。
(ゲートウェイ側で対応しているのでどんなに古い機種でも対応している。)
たぶんDoCoMoやWILLCOMも原則Cookie対応だと思うけど。
0171170
2006/05/25(木) 22:52:57ID:???Flash未対応、JavaScript未対応の環境は数%存在するが、Cookie未対応の環境は殆ど無い。
URIにセッションIDを含めると、履歴に残ったり、URL共有サービスやブラウザツールバー作成元、
アドウェア製作元に送信されたり、Referarで残ったり、IEのバグで関係無いページにRefererとして
送信されたりと色々セキュリティ上の問題がおこる。
0173nobodyさん
2006/05/25(木) 23:04:46ID:???WILLCOMでネットしてる人はCookie対応として良いけど、
DoCoMoやVodafoneはどうなのだろう?>携帯に詳しい方
0174nobodyさん
2006/05/25(木) 23:21:18ID:???> Flash未対応、JavaScript未対応の環境は数%存在するが、Cookie未対応の環境は殆ど無い。
よくこんな大嘘を言えるものだ・・・。逆に感動したw
0175nobodyさん
2006/05/25(木) 23:29:43ID:???自分のサイトのアクセスログでもそんな感じになってるよ
JS有効が94%だけどCookie有効は97%もある
広告やポップアップがうざかったりセキュリティホールが心配だったりで
JS切る人はまだまだいるね
0179170
2006/05/25(木) 23:50:54ID:???そうなんでしたか。
Cookieが使えないとなると、個体識別番号やBASIC認証で管理するぐらいしか無いですね。
auはEZ番号(サブスクライバID)を全てのサイトに対して出力するので、
かなりのプライバシー上の問題があるのでそっちよりはましかもしれませんが・・・。
(一応、最近になって無効化する設定ができるようになったけど、無効にすると公式サイトや通信機能付きアプリや
EZチャンネルなどがつかえなくなり切り替えも面倒で現実的でない。ドメイン毎の切り替えや公式サイトのみへの送信、
DoCoMoのように毎回確認画面がでるようにできればいいんだけど。)
> たぶんDoCoMoやWILLCOMも原則Cookie対応だと思うけど。
これは違ったみたいですね
すいません
0180nobodyさん
2006/05/25(木) 23:56:35ID:i7rXqHyW----------------------------
このようにコンマで区切られたログファイルがあるとします。
fopenで開いてexplodeで配列にすることはできました。
'$filename'には ファイル名 の値が代入されています(例えば 'hoge.html')。
このログファイルからファイル名($filename)を検索して、対になっている「文書の概要」を変数に代入するにはどうしたらできるのでしょうか?
0182nobodyさん
2006/05/26(金) 00:00:00ID:???EZ番号がサイトに伝わって何かマズイ事でも?
EZ番号からプライバシーに関わる情報取得など、
一般のサイト運営者にはまず無理でしょう。
で、BASIC認証をどうやってセッション管理に利用すると?
0184nobodyさん
2006/05/26(金) 00:05:15ID:???ログファイルのサイズが小さいなら
while($line = fgets($fp)) {
list($filename, $text) = explode(",", rtrim($line));
$file[$filename] = $text;
}
とファイル名をキーにした連想配列に丸ごと格納してしまって
$text = $file[$filename];
とやって概要を取り出すのが手っ取り早い。
0185nobodyさん
2006/05/26(金) 00:13:48ID:ZiAJSuMJクエリ実行関数として、sybase_query(), sybase_unbuffered_query()の2つありますが、
(unbufferedの方はsybase-ctライブラリを使用)
この2つの違いというのは、
sybase_query()
→クエリ発行し結果セット全体をメモリ上に取得する
(大きい結果の場合リソースを大きく消費する)
sybase_unbuffered_query()
→クエリ発行した結果セットに対する最初のローのポインタを取得する
という理解であってますでしょうか。
perlのDBIなんかだと元々unbufferedな動作な用ですねん
0186nobodyさん
2006/05/26(金) 00:23:12ID:???0187nobodyさん
2006/05/26(金) 00:34:14ID:???0188nobodyさん
2006/05/26(金) 00:49:58ID:???十分問題がある。
例えば、どっかの懸賞サイトに個人情報を入れたとする
その情報がワンクリ詐欺や架空請求業者に回ると、
Eメール(Cメール)で送られてきたアドレス(?での引数は無し)にアクセスしてサイトを観覧しただけで、
EZ番号と関連付けられたDBから情報を取得し、電話や郵便での請求が来たりするよ。
あと画像広告(img要素での呼び出し)を配信している広告代理店は、ユーザがどういうサイトを観覧しているかとかを全部把握できるしな。
Cookieでさえプライバシーの問題があって、サードパティ製を拒否したりするのが普通になってきているが、
EZ番号は全てのサイトに対して同じIDが利用され、更にユーザが変更することすらできない。(機種変更しても変わらない。一回解約すれば変わるが)
0189nobodyさん
2006/05/26(金) 02:24:31ID:???なんかそれってEZ番号とか関係なしに
入力した個人情報が業者に回った時点で請求来ると思うんだけど
読み間違えてる?
漏れた情報をDBしてる業者があって
そこと提携してる業者のサイトにアクセスしたときそうなるってこと?
業者の運営方法とか詳しく知らないんだけど
提携してるんならDBまんまよこせよって感じだけど。
0190nobodyさん
2006/05/26(金) 02:35:31ID:???この手の業者は互いにメールや個人情報を売買しあってるけど
それ自体が商売だから当然内容に見合った価格設定になる。
提携といっても全情報を丸ごと交換するなんてことは普通はしない。
0191188
2006/05/26(金) 02:35:41ID:???明らかにEZ番号と関連付けられて請求が来ることがある。
例えば、3ヶ月前に懸賞サイトで個人情報を入力。
そして、ケータイのアダルトサイトを観覧(例えば、おまんこ天国というサイトだとする)
おまんこ天国のサイトを観覧しただけで、そこにメールを送ったり電話をかけたりはしてないんだから、
EZ番号以外の識別情報はおまんこ天国には伝わっていないはず。(IPアドレスやUserAgentなどの端末を識別できない情報は伝わっているが)
そして、その翌日ぐらいに、おまんこ天国というサイト名と使用日時などが明記されたメールや請求電話が来る。
つまり、EZ番号と個人情報を関連付けたDBがそういった業界で売買されてたりする。
DBそのまんま貰ってその住所に請求送ったって「身に覚えの無い請求」と扱われて放置される可能性が高いから、
ユーザがアクセスしたサイトと関連付けることは戦略として有効。
ちなみに、固定IPアドレスのプロバイダでも同じことが言える。
例えばどっかの会員サイトから登録時のログが漏洩して、Winnyに流れたとする。
そしたら、掲示板とかで第三者がIPアドレスを取得(ソースに表示される掲示板とかfusianasanとか)すればそこから住所などが特定できちゃうわけよ。
ただし、固定IPアドレスのプロバイダは全体からすれば少ないので、PCではそのDBを使った不当請求はまだ無いに等しいみたい。
0192nobodyさん
2006/05/26(金) 02:36:46ID:???無差別にはやんないもんなのかな。
0193nobodyさん
2006/05/26(金) 02:54:07ID:???無差別にやるとこ(いわゆる架空請求業者)もあるよ。
でもそれは労力に比べて命中率が低いんで、脅し専門の部署持ってる会社じゃなきゃやんない。
多くの裏業者では、
→あらかじめ個人情報を入手
→その個人ごとに一意のURLを記載した広告メールを配信
→アクセスした時点で請求開始
→全然入力した覚えの無い個人情報を使って「うちのサイトであなたが登録されてますから。その証拠に〜」と
個人情報を使ってあたかも法的に根拠があるような物言いで「訴訟も覚悟してください」と脅す
って感じ。
アクセスした証拠とか無いと警察を黙らせることができないんだわ。逆に言うとそれさえあれば警察も不問。
0194nobodyさん
2006/05/26(金) 02:58:56ID:mmVqr71r$line = fgets ($fp, 1024);
echo $line;
}
こうやっても内容が出力されないのですが、何か原因として考えられる点はありますでしょうか?
ファイルの内容はごく普通のテキストで一行です。
0195nobodyさん
2006/05/26(金) 02:59:45ID:???携帯の個体識別はソレを買ったときからずーっと一緒だからねぇ。
0198nobodyさん
2006/05/26(金) 03:02:22ID:???MAC OS X ver 10.3.9 に入ってるPHPを使って、
SQLiteを学ぼうと、SQLite ManagerをDLしてDocuments配下に
コピーしたんですが、次のエラーが出てうまく動作しないのです。
________
Error :
The SQLite extension can't be loaded.
________
どうしたら、うまく動作させられるんでしょうか。
0200nobodyさん
2006/05/26(金) 03:12:53ID:???0202nobodyさん
2006/05/26(金) 03:15:17ID:???SQLiteってコピーしただけじゃ動かんのじゃないかな。
http://www.php.net/manual/ja/ref.sqlite.php
> PEARインストーラで pear install sqlite を実行して下さい。
0204nobodyさん
2006/05/26(金) 04:10:16ID:XdlBZLhPブラウザに「印刷」というボタンをつくって、
それをクリックするとサーバ上のファイルを
サーバのあるLAN内のプリンタで印刷を開始する
ということは可能ですか?
具体的に今やりたいのはPHPとMySQLを使って
帳簿をTeXで書いて、PHPでプロンプトの命令を送り
コンパイルしてDVIをつくり、その印刷をDVIウエアからでなく
ブラウザのボタンで印刷を実行したいのです。
DVIファイル作成まではできました。
サーバはwindowsサーバを使っています。
0205nobodyさん
2006/05/26(金) 04:24:13ID:???サーバー側で印刷するだけなら、submitクリックで呼び出されるPHPなりのプログラムから
system()などのコマンド実行関数を使って印刷用プログラム(コマンドラインプログラムが望ましい)を実行するだけだよ。
WindowsでのDVI印刷なら ttp://akagi.ms.u-tokyo.ac.jp/dvitest.html この辺のを利用すればできんじゃない?
0206nobodyさん
2006/05/26(金) 04:33:19ID:???PHPのスレなんで、PHPの話をすると
COMを使うといける。
>サーバはwindowsサーバを使っています。
なんでしょ。
0207nobodyさん
2006/05/26(金) 08:30:12ID:???SQLite拡張モジュールがないといっている
モジュールを追加すればいい
Fedoracoreとかならrpmでできるんだけど
MACは知らないので追加方法は調べてね
0208nobodyさん
2006/05/26(金) 08:35:03ID:???でもmixiで携帯からログインできてる。
mixiはどうやって携帯ログイン(セッション)を実現してんだろう?
URLにSID付けて引き回してないみたいだしね。。。
0209nobodyさん
2006/05/26(金) 08:37:18ID:???0210nobodyさん
2006/05/26(金) 09:04:37ID:???0211nobodyさん
2006/05/26(金) 09:04:43ID:???あ、でも携帯は今のところJavascriptも無効だから、
hiddenの中身が漏れる危険性はないのかな??
0212211
2006/05/26(金) 09:06:34ID:???だって、携帯mixiでページ移動するとき、いちいちPOSTしてないもん。
普通のハイパーリンクで移動してるからhiddenは持ち越せないよなぁ。
0213211
2006/05/26(金) 09:09:41ID:???個体識別番号でやるにしても、どうやってセッションを管理するの?
最初のログイン時にサーバDB側に個体識別番号をぶち込むにしても、
結局、携帯端末側にセッションIDを渡さないと次の操作から
同一のクライアントかどうかを確認できないよね・・・
あ、それとも携帯って、サーバにアクセスするたびに個体識別番号を
勝手に送る仕様なのかな?? その辺あまり知らないんだけど。。。
0215nobodyさん
2006/05/26(金) 09:55:42ID:???mixiは常にGETでセッションIDを送っているよ。
ログインから12時間で強制破棄されるので、長いことサーフィンしてると強制ログアウトされる。
逆に、ログインしたあとのURLを保存しとけば、12時間は再接続してもログインしたままだよ。
0216nobodyさん
2006/05/26(金) 10:01:39ID:???0217215
2006/05/26(金) 10:18:19ID:???home.pl?ses=[数字のID]_[ランダムな16進数列]
こんな感じ。
PHSからなんで、携帯からだとまた違うかも知れない。
0218nobodyさん
2006/05/26(金) 10:46:36ID:???えっ、マジで!?
ってことは、たとえばmixi内の誰かが悪意を持ったURLを
日記とかコミュとかに貼って、そこに飛んだらアクセス解析で
リファラからセッションIDが漏れちゃうってことだよね。それヤバくない??
0219nobodyさん
2006/05/26(金) 10:52:00ID:???0221nobodyさん
2006/05/26(金) 11:01:46ID:???0222nobodyさん
2006/05/26(金) 11:04:37ID:???mixiのセキュリティは大丈夫なのか。。。
0223nobodyさん
2006/05/26(金) 11:09:36ID:???リファラ
ルファラ
レファラ
ロファラ
0224215
2006/05/26(金) 11:17:39ID:???日記を外部に置いている場合は、PCから見てくださいと言われ、アクセスできない。
でも、http://〜という文字列をリンクに変換するbookmarklet使ってる人は危険かも。
あと京ぽんには、bookmarkを読み込んだときにもリファラを送ってしまうというバグがあって、ちょっと怖かった。
0225nobodyさん
2006/05/26(金) 11:48:46ID:UfRxuQYjPEARのLogクラスを使おうと思うのですが
最初にインスタンスを作ったあとで
いろんな関数でログを出力したい場合は
そのインスタンスを各関数でglobal宣言するのでしょうか?
Logクラス使ってるかたがいらっしゃったらどのように使ってますか?
各関数でインスタンスを生成?
よろしくお願いします
0226nobodyさん
2006/05/26(金) 12:42:47ID:???なるほど、携帯でアクセスした場合はmixi外部へは飛べないようにしてあるわけか。
でも、最近の携帯って親切な(おせっかいな)機能があって、
メアドとかURLらしき文字列って勝手にリンクされちゃう場合あるよね。。。
0227nobodyさん
2006/05/26(金) 12:56:56ID:???普通そういう実装がしてると思うが
0229nobodyさん
2006/05/26(金) 15:23:51ID:???0231nobodyさん
2006/05/26(金) 17:36:54ID:???0234nobodyさん
2006/05/26(金) 19:13:34ID:???ある商品表に商品データを追加していきたいのですが、
たとえば「syohin_no=1000、syohin_name=ボールペン」を入れるときに、
「すでにsyohin_noに今回の番号(例では1000番)が存在する場合はupdate、
存在しない場合はinsert」
という処理をしたいと思います。
このような場合、任意のsyohin_noが存在するか否かを確かめるだけの関数などはありますでしょうか?
0235nobodyさん
2006/05/26(金) 19:17:43ID:???REPLACEステートメントが使えますよ。
まぁ確かめるだけならフツーにSELECT COUNT(*)を発行するだけ。
PHP関係ないけど。
0236nobodyさん
2006/05/26(金) 19:29:25ID:???やっぱ流れ的にはこんな感じでしょ。
$sql = "SELECT COUNT(*) FROM syohin_table WHERE syohin_no = 1000";
$result = mysql_query($sql);
if ( mysql_num_rows($result) ) {
$sql = "UPDATE syohin_table SET syohin_name = 'ボールペン' WHERE syohin_no = 1000";
} else {
$sql = "INSERT INTO syohin_table VALUES( syohin_no, syohin_name )";
}
$result = mysql_query($sql);
0237nobodyさん
2006/05/26(金) 19:36:02ID:???0238236
2006/05/26(金) 19:47:57ID:???COUNT(*) を syohin_no とかフィールド名に置換してくれ
0239nobodyさん
2006/05/26(金) 20:29:46ID:???さっきからこれのせいでかれこれ30分以上作業が進みません。
リモートファイルの有無に応じて結果を返すようにしたいのですが、上手くリモートファイルが取り込めません。
$TEST_READ = @fopen("http://hoge.com/", "r");
if(!$TEST_READ) echo "ng";
と書くと明らかに存在しないリモートファイルでもTRUEが返ってきます。
次に
$TEST_READ = @file("http://hoge.com/");
と書くと逆に存在するファイルも「failed to open stream: No such file or directory in XXX」とお決まりのエラーが返ってきます。
if((include "http://hoge.com/") == "OK") echo "あるある";
と書くと存在する場合勝手に内容を表示します。
どうすればファイルの存在確認のみを行えますでしょうか。
ちなみにリモートファイルの確認を行う作業が前提です。
環境→Linux バージョン:5.1.4
背低→セーフモード:Off、include_path:デフォ、allow_url_fopen:On
0240nobodyさん
2006/05/26(金) 20:31:43ID:???誤:$TEST_READ = @file("http://hoge.com/");
正:$TEST_READ = file("http://hoge.com/");
後、背低は設定のタイプミスです。スマソ。
0241nobodyさん
2006/05/26(金) 20:39:26ID:???HTTPならHEADリクエストを飛ばして200以外なら存在しないっていうのが
手っ取り早いんじゃないの?
0242nobodyさん
2006/05/26(金) 20:54:09ID:???期待通りbool(false)が返る。
PHP5.1.2(cli)/Win32
存在確認だけなら>>241の言うとおり
HEADでチェックするのが普通だと思う。
0243239
2006/05/26(金) 21:00:36ID:???んーとHEADリクエストを送ると言いますと具体的にどういう感じでしょうか;
apache_request_headers() の戻り値を調べるということでしょうか。
0244nobodyさん
2006/05/26(金) 21:18:14ID:???fsockopenを使う
HEADリクエストの意味が分かっていないならそれなりの文献を参照
質問内容からして基本的な知識が欠損している気もするが
>>239の上は404ページを取り込んでいるんじゃないのか?
下は当然の動作として(つかincludeの動作をよく理解していないでしょ?)
0245239
2006/05/26(金) 21:27:39ID:???なるほどfsockopenですか。
先ほどからphpManualのサイトを読んでまして何度か見た記憶が。。。
>下は当然の動作として(つかincludeの動作をよく理解していないでしょ?)
ttp://php.s3.to/man/function.include.html
の例16-9にある感じで動作することを期待して書いてみましたが根本的に間違ってたてことでしょうか。
当方php暦1年≦ 程度なもので的外れな質問スミマセン;
0246nobodyさん
2006/05/26(金) 21:41:16ID:???0247nobodyさん
2006/05/26(金) 22:29:25ID:???なにこの逆ポーランド
0248nobodyさん
2006/05/26(金) 22:41:02ID:???0249nobodyさん
2006/05/26(金) 22:52:37ID:???マニュアル読んで出直して
PHP4
http://www.php.net/manual/ja/language.oop.php
PHP5
http://www.php.net/manual/ja/language.oop5.php
0250nobodyさん
2006/05/26(金) 22:55:46ID:???ありがとうございます。
やっぱりそうやって律儀に確認するしかないようですね。。。
なんかその作業がすごくムダに思えてきまして^^;
if_exist_mysql_record($sql)みたいな関数があったらいいのになぁ・・・
動作は、ある任意のSQLを投げて、レコードが存在すればTRUE、なければFALSEを返す。
つまり、特定の条件のレコードが存在するかどうかだけを確認する関数。
で、PHP側でその真偽値をifで分岐させて、updateまたはinsertのSQLを投げられたら
スッキリすると思いませんか?
0251nobodyさん
2006/05/26(金) 22:58:52ID:???自分でその関数作れば良いでしょ。
関数の中身は>>236だけど。
標準にあったとしても恐らくやることは一緒のはず。
■ このスレッドは過去ログ倉庫に格納されています