【PHP】下らねぇ質問はここに書き込みやがれ 66
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/03/16(日) 17:23:27ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 65
http://pc11.2ch.net/test/read.cgi/php/1203854597/
◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。
◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくは質問時のトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0310307
2008/03/26(水) 00:57:54ID:???はい、伊藤です。
0311nobodyさん
2008/03/26(水) 02:43:19ID:???0313nobodyさん
2008/03/26(水) 03:44:58ID:???主人公のアニメ・漫画。
0314nobodyさん
2008/03/26(水) 06:12:28ID:???どうしてココの住民は、無関心ではいられないのだろうか。
何かとすぐ切れやすい子どもが、このスレに体現されているとしか評価しようがない。
0315nobodyさん
2008/03/26(水) 07:17:30ID:BV+jSJbqやりたい事がphpを使って操作する事なのでこちらで質問させて頂きます。
php+mysqlでアクセス解析を作りたいのですが、UA、リファラー、現在の日時等を取得して、
UA、リンク元、累計アクセス数、日別・月別・曜日別アクセス数などを表示したい場合、
全て1つのテーブルに保存するのと、項目ごとに別のテーブルに保存するのではどちらが効率的でしょうか?
書き方がわかりにくいと思いますが、全て1つのテーブルに保存する場合、
1行目 useragent=IE6, referer=http〜, date=2008/1/1 0:00:00
2行目 useragent=IE5, referer=http〜, date=2008/1/1 0:00:00
という形になり、テーブルの内容を全て配列に入れてからphp側で検索・ソート等して出力するか、
表示したい項目ごとにデータベース側で検索して出力する事になると思います。
項目ごとにテーブルを作る場合、
テーブル「useragent」
name count
IE6 2
IE7 5
という形になり、テーブルの内容をほとんどそのまま出力すればいいだけになります。
アクセス時の処理では前者の方が後者より速く負荷もかからないと思うのですが、
表示時の処理はログが増えるほど前者が後者より遅く、高負荷になるのではないかと考えています。
mysqlについてはphpmyadminで軽く触った程度なので、根本的に間違っているor意味不明な質問かもしれませんが、
「ここはおかしい」や「こうした方がいい」等のアドバイスでも構いませんので、ご回答お願い致します。
0316nobodyさん
2008/03/26(水) 09:07:29ID:???サイトのアクセス状況による
一日数十とか数百単位しかアクセス無いなら前者で良いだろうけど
2ちゃん並にくることが予測されるなら後者の方が良いと思う
とりあえず前者でサイト開いてみて段階踏んだらどうよ?
あとログとしてデータが残り続けるなら前者である一定の値にきたら
offsetかましてcountの効率を上げる方法もある…
0317nobodyさん
2008/03/26(水) 09:14:01ID:???>2ちゃん並にくることが予測されるなら後者の方が良いと思う
10か3億か、ってお前極端すぎww
病院に行け
0318nobodyさん
2008/03/26(水) 09:15:32ID:???>>315
dbスレ行ったほうがいいんじゃね?
つか普通は全部纏めて入れる
日ごとにUAの集計したら「午前中」とか「リファラの無いIE6」とかが欲しくなった時どうにもならないし
表示スクリプトは数十行だろうから、とりあえず両方書いてダミーデータで速度見るのもいいかもね
0319302
2008/03/26(水) 09:50:54ID:ynVuNR2N0321nobodyさん
2008/03/26(水) 11:19:54ID:ynVuNR2Nmixiなりアマゾンなり、phpからログインして情報取れますよね?
例えば今回liveアカウントへいこうとすると
javascriptを有効にしてくださいというページに飛ばされてしまいます
単純にnoscriptでジャンプされてしまうのですが、どうしたら良いのか思いつかず・・・
0322nobodyさん
2008/03/26(水) 11:22:07ID:???0323nobodyさん
2008/03/26(水) 11:55:25ID:YOiMNcCaいや飛ばされない。IEで解決。
0324nobodyさん
2008/03/26(水) 12:00:13ID:???0325nobodyさん
2008/03/26(水) 12:03:32ID:???0326302
2008/03/26(水) 12:12:25ID:ynVuNR2N最初のレスポンスの時点でjs有効にしてねというページが返ってきます
0327nobodyさん
2008/03/26(水) 12:16:09ID:???0328nobodyさん
2008/03/26(水) 12:37:10ID:tSZRDvWr署名による認証のしかたがわかりません・・。
(PEARにもXML-RPCはあるのですが、暗号化や複合化ができるようなものはなさそうで)
わかる方がいればおしえてください。
0329302
2008/03/26(水) 14:58:59ID:ynVuNR2Nいろいろ試して見ましたが、解決せず
PEARスレに行ってきます
ありがとうございました
0330nobodyさん
2008/03/26(水) 15:07:16ID:???0331nobodyさん
2008/03/26(水) 16:08:50ID:oGx/hZT1if(strstr($test,"9")){
echo "含まれています";
}
とした場合、$test内に「9」が含まれていないのに、
「99」でもヒットされてしまいます。どういう風に修正すればいいのでしょうか?
0332nobodyさん
2008/03/26(水) 16:08:58ID:???0333nobodyさん
2008/03/26(水) 16:22:02ID:???0334nobodyさん
2008/03/26(水) 16:22:07ID:???は?
何がしたいの?
$test_ary=explode(".",$test);
foreach($test_ary as $val){
if(strstr($val,"9")){ echo "含まれています"; }
}
でもすれば?
0335nobodyさん
2008/03/26(水) 16:28:34ID:???>$test = "1,2,99";
>if(strstr($test,"9")){
>echo "含まれています";
>}
>とした場合、$test内に「9」が含まれていないのに、
9って思いっきり含まれてるじゃん。
0336nobodyさん
2008/03/26(水) 16:31:41ID:???0337nobodyさん
2008/03/26(水) 16:48:42ID:???explode するとループで悩む年頃だろうから
if (preg_match('/\D9\D/', $test)) 辺りでどうですか。
>>334
質問者と同じ地雷を踏んでますよ。
0338nobodyさん
2008/03/26(水) 16:54:54ID:???まぁそういう概念がないんだろうけど
0339nobodyさん
2008/03/26(水) 16:55:41ID:???0340337
2008/03/26(水) 16:56:21ID:???眠いので修正せず放置しとこう。
0341nobodyさん
2008/03/26(水) 17:05:24ID:???せめてカンマ区切りにしとけばいいのに・・。
0342nobodyさん
2008/03/26(水) 17:15:35ID:???態々==9とかあほかw
in_arrayでいいだろ
0344nobodyさん
2008/03/26(水) 17:45:18ID:???0345nobodyさん
2008/03/26(水) 18:04:16ID:???でも本人が含むって言葉思いっきり使ってるし$testを配列みたいに解釈してしまってんだろうか。
ひょっとして
$test = "1,2,99";
$test_ary=explode(".",$test);
foreach($test_ary as $val){
if($val ==9){ echo "含まれています"; }
}
みたいなことをしたいのか?これだと99と9はイコールじゃないが。
しかしこれだtstrstr使う意味がないしarray使うべきだし・・・難問だ。
0346nobodyさん
2008/03/26(水) 18:11:56ID:???0347nobodyさん
2008/03/26(水) 18:12:53ID:???0348315
2008/03/26(水) 18:18:00ID:???個人の趣味サイトなので、アクセス数は最大でも重複カウントなしで1000/日というところです。
>>318さんのおっしゃる通り、今後条件別にログを表示させたくなった時に前者の方が良さそうですね。
ログ表示ページはそれほど頻繁に閲覧されるものでもないと思うので、
表示に関して多少非効率的になっても、前者の方法を使う方向でいきたいと思います。
インデックスとか>>316さんの言うoffset等、理解できていない部分が沢山ありますので、
データベース関連のサイトやスレなどを見て勉強してきます。
回答ありがとうございました。
0349nobodyさん
2008/03/26(水) 18:29:36ID:???0350nobodyさん
2008/03/26(水) 21:34:16ID:???0351nobodyさん
2008/03/27(木) 02:13:01ID:???0352nobodyさん
2008/03/27(木) 06:31:18ID:???<html>
<head></head>
<?php
echo "<body>";
?>
テスト
</body>
</html>
これだけの記述でもタイムラグが発生するのですが、body要素をphpで出力するのには何か問題があるのでしょうか?
それとも、xreaの無料サーバーを使っているのですが、このサーバー側の仕様か何かなのでしょうか?
0353nobodyさん
2008/03/27(木) 07:12:29ID:???時間おいてためすべし。
0354353
2008/03/27(木) 07:14:52ID:???xrea無料といえば自動挿入広告が重い原因にもなるから、
htaccessで広告表示しないようにして手動広告はるのがお勧め。
0355nobodyさん
2008/03/27(木) 07:18:47ID:???いざ自分でコード書こうと思ったら意味不明
PHP考えた人まじ天才 もうわけわからないっす
0356nobodyさん
2008/03/27(木) 07:34:07ID:???0357352
2008/03/27(木) 09:24:16ID:???レスありがとうございます
確認したところ、どうやら広告関係の問題だった様です
広告は手動で挿入しており、出力後のソースを見ても自動の広告が無かったので、
手動で広告を入れると勝手に切り替わるものだと思っていました
サポートページ等を見ながら修正したいと思います
ありがとうございました
0358nobodyさん
2008/03/27(木) 09:41:52ID:5276Wbjq0359nobodyさん
2008/03/27(木) 09:50:33ID:???0360nobodyさん
2008/03/27(木) 10:31:06ID:???俺もチラッと触っただけだけど。
0361nobodyさん
2008/03/27(木) 10:42:00ID:5276Wbjq0363nobodyさん
2008/03/27(木) 12:07:08ID:???0364nobodyさん
2008/03/27(木) 12:15:59ID:???0365nobodyさん
2008/03/27(木) 12:25:39ID:???俺の場合、BASIC->C->C++->Java->PHPだな。
0367nobodyさん
2008/03/27(木) 13:07:09ID:2PjNLBe+echo $_POST['email']."<br>";
$_POST['email'] = mysql_real_escape_string($_POST['email']);
echo $_POST['email']."<br>";
しかし、mysql_real_escape_stringにPOSTのデータを通すと$_POST['email']の中身がfalseになります。
ちなみに、POSTで送るデータは[email protected]等です。
どこが間違っているんでしょうか?
0370nobodyさん
2008/03/27(木) 13:11:15ID:???0371nobodyさん
2008/03/27(木) 13:16:48ID:???0372nobodyさん
2008/03/27(木) 13:27:47ID:2PjNLBe+問題はそこじゃないわけで(ry
ちなみに
$email = mysql_real_escape_string($_POST['email']);
echo $email;
でも
echo mysql_real_escape_string($_POST['email']);
でもだめでした。
0373nobodyさん
2008/03/27(木) 13:32:35ID:???> 注意: mysql_real_escape_string() を利用する前に、MySQL 接続が確立されている必要があります。
> もし存在しなければ、E_WARNING レベルのエラーが生成され、FALSE が返されます。
問題はここですか。
0374nobodyさん
2008/03/27(木) 13:33:13ID:???http://www.php.net/manual/ja/function.mysql-real-escape-string.php
> 注意: mysql_real_escape_string() を利用する前に、
> MySQL 接続が確立されている必要があります。
> もし存在しなければ、 E_WARNING レベルのエラーが生成され、
> FALSE が返されます。link_identifier が指定されなかった場合は、
> 直近の MySQL 接続が用いられます。
0375nobodyさん
2008/03/27(木) 13:39:44ID:???これは普通、sql発行する直前に書かない? 当然、その前で何らかのチェックはするけど。
0376nobodyさん
2008/03/27(木) 13:50:36ID:???すみませんでした
preg_matchでマッチングさせた後mysql_connect()の前でやってました
ありがとうございました
0379nobodyさん
2008/03/27(木) 14:51:12ID:???0381nobodyさん
2008/03/27(木) 15:56:56ID:???どなたか、良いアイデアをご教示願えないでしょうか。
当初、imagickを使用すれば良いと単純に考えていたのですが
今回の開発環境がPHP4系だったもので、上記ライブラリは使用不能であり
煮詰まってしまいました。
どなたか、お助けください。
0384nobodyさん
2008/03/27(木) 17:29:35ID:wJkba3DRmbstring.internal_encoding = eucJP-win
と設定しております。
<?=phpinfo()?>
でブラウザから確認するとちゃんとeucJP-winとなるのですが、
コマンドラインから実行する際に
print mb_internal_encoding();
としたらEUC-JPとなってしまいました。
コマンドラインではphp.iniの設定は読まれないのでしょうか?
またどこで設定すれば良いのでしょうか?
0386nobodyさん
2008/03/27(木) 18:38:13ID:8KxLf7TGPHP -v
とやると
PHP Warning: PHP Startup: Unable to load dynamic library
'./xsl.so' - ./xsl.so: cannot open shared object file:
No such file or directory in Unknown on line 0
こんな感じのエラーがいくつも出てしまうんですが、なぜでしょう?
ちゃんと
/usr/lib64/php/modules/xsl.so
はあるんですけども。。。
0388386
2008/03/27(木) 19:03:53ID:8KxLf7TGああ、カレントですね。で、
cd /usr/lib64/php/modules/
php -v
PHP Warning: PHP Startup: dom: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
です・・・。今一歩?いや、離れた?.soファイルの位置ってどの段階で
指定しているのだろう・・・?
0389386
2008/03/27(木) 19:12:46ID:???気がしてきた。
0390nobodyさん
2008/03/27(木) 19:39:44ID:???つい昨日、いろんな理由で、PHPをsrc.rpmからいれて
同じような問題がおこって設定した。
.soファイルの位置は/etc/php.iniのextesionなんたらで指定できる。
俺は面倒だったから絶対パス指定に書き換えた。
0391386
2008/03/27(木) 20:33:09ID:???どうも。
そのようにやったら、メッセージが386から388のに変わった。
要するに、入ってる*.soが古いらしいんだが、なんでPHPの
インストールで入ってくれないのか分からん。
0393390
2008/03/27(木) 21:46:16ID:???それでも(configureをいじって)rpmパッケージを作成してから
入れたので参考になるかもしれん。
rpmはphp本体とモジュールで分かれていた。
つまり、php-なんたら-xsl-なんたら.rpmを入れるんじゃね?
って>>392といっている事同じなんだが。
0394nobodyさん
2008/03/27(木) 22:16:05ID:xfNpn7Y+プログラムやってる人じゃないとフォームはなかなか使わないと思うので、
スレ違いとはわかっていますがご指南お願いします。
アンケートを作っています。回答を選択する場合、一般的にはselectを使いますよね?
<select name="vote">
<option value="1">value1</option>
<option value="2">value2</option>
</select>
適切な回答内容がない場合、その他という形でテキストフォームから追加できるようにしたいのですが、
その場合の書き方の検討がつきません。
<input type="radio" name="select">
<select name="vote">
<option value="1">value1</option>
<option value="2">value2</option>
</select>
<input type="radio" name="select">
<input type="text" name="vote">
フォーム配置のイメージとしてはこんな感じなのですが・・・
textのほうのname名を別名(たとえばavote)にして、
if ($_POST['select'] && $_POST['avote'])
という感じにして処理するしかないのでしょうか?
0395nobodyさん
2008/03/27(木) 22:24:40ID:???<select name="vote">
<option value="1">value1</option>
<option value="2">value2</option>
<option value="3">その他</option>
</select>
<input type="text" name="avote">
として、その他を選んだ場合のみavoteを参照するってのが一般的かと
0396394
2008/03/27(木) 22:26:52ID:???あーなるほど。盲点でした。
voteにその他を追加すればよいのですね。
どうもありがとうございます。
0397nobodyさん
2008/03/27(木) 22:58:32ID:???$image = new Imagick();
$image->readImage($url);
これだと外部にある画像を読み込んでくれません
URLを読み込むにはどうしたいいのでしょう?
マニュアル調べても分からなくて
0398nobodyさん
2008/03/27(木) 23:09:22ID:6a96K/LDどういう風に書けばいいのでしょうか?
0399nobodyさん
2008/03/27(木) 23:11:58ID:U1kIZSVMvar_dump()をかけると、以下を返す連想配列$evDayAryがあります
Array ( [2008-03-01] => 1 [2008-03-02] => 2 [2008-03-07] => 1 [2008-03-09] => 1 [2008-03-13] => 1 [2008-03-15] => 2 [2008-03-16] => 1 [2008-03-29] => 1 [2008-03-30] => 1 )
これに対して、
if($evDayAry["{$scheResult->fields[8]}"]){処理;} とするとき、
{$scheResult->fields[8]}が
2008-03-13 2008-03-15 2008-03-16 2008-03-29 2008-03-30 の時は処理をするのに、
2008-03-01 2008-03-02 2008-03-07 2008-03-09 の時は処理してくれません。
何故でしょう?どうしたらいいんですか? 七転八倒したんですが良くわかりません
どなたかご回答お願いします
0401nobodyさん
2008/03/28(金) 00:01:40ID:???foreach (range('A','Z') as $c) echo $c;
echo implode(range('A','Z'));
一つずつの意味がよくわからんけどこういうことがしたいのかな。
0402nobodyさん
2008/03/28(金) 00:05:40ID:???Imagickに受け渡してなんとかなった気がする
すごい無駄な処理を噛んでる気がするけど
0403nobodyさん
2008/03/28(金) 00:28:16ID:AaqCMoS5if($_POST['address']){
$mailto=$_POST['address'];
$mailsubject=mb_convert_encoding("【メールのサブジェクト】","JIS","EUC-JP");
$mailbody=mb_convert_encoding("メールを送信しました。","JIS","EUC-JP");
$mailheader="From: php mail<[email protected]>";
mb_language("Japanese");
if(mb_send_mail($mailto,$mailsubject,$mailbody,$mailheader)) print "送信完了";
else print "送信失敗";
}
print<<<STD
<html><head><title></title></head><body>
<a href="mail.php" style="font-size:10pt;">更新</a><br><br><br>
<form action="mail.php" method="POST">
<div style="border:1px #A5ACB2 solid;text-align:center;padding:15px; 0px 10px 0px;">
<div style="margin:0px 0px 0px 0px;font-size:10pt;color:#6b6b6b;">メールアドレスを記入して送信して下さい</div>
<input type="text" name="address" style="width:250px;border:1px #A5ACB2 solid;">
<input type="submit" value="送信" style="width:80px;border:1px #909eb2 solid;background-color:#f0f0f0;margin:10px 10px 0px 0px;">
</div></form></body></html>
STD
?>
記入したメールアドレスに宛ててメールを送信するスクリプトを作っているのですが、
どうしてもメールのサブジェクトが文字化けしてしまいます・・・。
どうしたら良いでしょうか?
0406403
2008/03/28(金) 00:59:07ID:AaqCMoS5どうしても
「【メールのサブジェ%/%H![ 」と言う感じに文字化けしてしまいます・・・
0407nobodyさん
2008/03/28(金) 01:46:26ID:g+1Sesc4<b>
<c>abcde</c>
<d>efghi</d>
<children>
<a>
<b>
<c>abcde</c>
<d>efghi</d>
<children>
<a>
<b>
<c>abcde</c>
<d>efghi</d>
</children>
</children>
<a>
<b>
<c>abcde</c>
<d>efghi</d>
こういうxmlで<children>の数が不規則な場合、どうやってすべての<c>と<b>を取得すればいいでしょうか?
simplexmlを使えるのですがどう書けばいいかわかりません
ご教授ください
■ このスレッドは過去ログ倉庫に格納されています