トップページphp
1001コメント337KB

【PHP】下らねぇ質問はID出して書き込みやがれ 105

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/03/17(木) 04:00:34.11ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 104
http://hibari.2ch.net/test/read.cgi/php/1297669559/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0660nobodyさん2011/04/13(水) 22:44:29.40ID:???
>>657
カンマ区切りで保持しているのが設計の誤り。
テーブルレイアウトを変更することができないなら、書かれていたように、長いSQLを発行する。
変更することができるなら、短いSQLを発行すれば、それよりもずいぶん速く結果を取得できるようになる。

続きはSQLスレあたりで。
06616602011/04/13(水) 22:46:13.47ID:???
>>658
SQL質疑応答スレ 11問目
http://hibari.2ch.net/test/read.cgi/db/1299305530/

>>659
MySQLスレはややスレ違い。
0662nobodyさん2011/04/13(水) 23:09:19.36ID:???
MySQLスレは厨房やクズのたまり場と化してて機能してない
06636442011/04/14(木) 00:24:00.71ID:???
>>660
なんとなく正解がわかりました。ありがとうございます。
まだテスト段階だったので構造を直してチャレンジしてみます。
0664nobodyさん2011/04/14(木) 00:36:14.23ID:???
短ければ速いという問題でもなかろ
0665nobodyさん2011/04/14(木) 02:31:23.67ID:???

$result = mysql_query("SELECT * FROM Persons
WHERE FirstName='Peter'");


Peterを変数に代入して入れたいんですけど、どうしたらいいですか?

0666nobodyさん2011/04/14(木) 02:33:15.59ID:jIcMQS2c
$omanko = 'peter';

$result = mysql_query("SELECT * FROM Persons
WHERE FirstName= $omanko ");
↑でやっても駄目なんですよね...
0667nobodyさん2011/04/14(木) 03:13:22.44ID:nz/ViMIK
"select * from item where FirstName like '%"$omanko"%'"
0668nobodyさん2011/04/14(木) 03:55:45.55ID:???
omankoっていい歳した空気よめないオッサンか
ひyな言葉ではしゃぐ中2のどちらかだろ
0669nobodyさん2011/04/14(木) 07:55:10.31ID:???
>>666
$omanko = 'peter';

$result = mysql_query("SELECT * FROM Persons
WHERE FirstName= '$omanko' ");
06706442011/04/14(木) 08:25:43.46ID:???
>>647
すみません…mysqlのスレが見つからず
こちらなら分かる人がいるかなと思いまして
0671nobodyさん2011/04/14(木) 10:39:32.64ID:???
sqlのクエリは勝手に最適化されるはず
0672nobodyさん2011/04/14(木) 12:25:02.48ID:???
>>666の書き方だと文字列がそのまま出ちゃうからダメなんじゃないの

>>669
$result = mysql_query("SELECT * FROM Persons WHERE FirstName= '".$omanko."' ");
っていう形にする必要があると思うんだけどどうだろ
0673nobodyさん2011/04/14(木) 12:42:29.02ID:???
今時sqlをphpに埋め込んで書くのはないない
0674nobodyさん2011/04/14(木) 14:11:34.35ID:???
>>673
じゃ、今SQLを埋め込むのは何が主流なの?Perl?
0675nobodyさん2011/04/14(木) 16:00:44.75ID:???
ひまわりかな
0676nobodyさん2011/04/14(木) 18:00:13.96ID:???
ひまわりって何?新しい新幹線の名前?
0677nobodyさん2011/04/14(木) 18:23:00.01ID:???
$result = mysql_query("SELECT * FROM Persons WHERE FirstName='".mysql_escape_string($omanko)."'");
0678nobodyさん2011/04/14(木) 19:38:26.53ID:???
>>664
短くもなるし、速くもなるよと
0679nobodyさん2011/04/15(金) 09:30:39.97ID:vqhPXrat
すみません
$res =& $mdb2 -> exec($sql);
の"=&"の意味が分かりません
マニュアルの演算子を調べたのですが見付かりませんでした
これはどういう意味でどういう使われ方をするのでしょうか?
また、オライリーのPHP本には"&="が載っていますが、コレとは別の意味なのでしょうか?
0680nobodyさん2011/04/15(金) 09:47:44.00ID:???
>>679
右を左に代入
0681nobodyさん2011/04/15(金) 09:57:51.25ID:vqhPXrat
>>680
代入と言うことは、普通の"="演算子と何も変わらないということでしょうか?
代入演算子という名前ということは参照でもないのかと思ってしまったのですが
また、逆に"&="は左を右に代入という事でよろしいですか?
0682nobodyさん2011/04/15(金) 10:08:11.95ID:???
$a = &$b
これは参照渡し

$a &= $b
これはビット演算子で
$a = $a & $b
と等価。
0683nobodyさん2011/04/15(金) 10:10:04.79ID:???
>>679,681
=はコピーによる代入
=&は参照による代入
http://jp.php.net/manual/ja/language.operators.assignment.php
&=は複合演算子で'&'はビット演算子
$a &= 0xff -> $a = $a & 0xff
0684nobodyさん2011/04/15(金) 10:15:11.42ID:vqhPXrat
ありがとうございました
0685nobodyさん2011/04/15(金) 12:09:22.46ID:???
=& が演算子みたいな書き方するなよ。誤解されるぞ
0686nobodyさん2011/04/15(金) 16:50:58.33ID:weEN1v7D
ob.log
1<>挨拶<><>2/9<>1
2<>挨拶<><>2/9<>0
3<>謝罪<><>2/22<>1
4<>挨拶<><>3/21<>0
5<>お礼<><>4/1<>1

こういう文字列から
1
2
3
4
5
これだけを抜き出して取得してファイルに書き出したいのですが
何かいい方法はないでしょうか
0687nobodyさん2011/04/15(金) 17:04:24.01ID:???
explodeか、正規表現かってとこ
0688nobodyさん2011/04/15(金) 17:12:26.54ID:???
>>687
explodeでどうやるんですか?
コードもしよろしければお願いします
0689nobodyさん2011/04/15(金) 17:55:16.54ID:???
<?php
$str = <<<EOL
1<>挨拶<><>2/9<>1
2<>挨拶<><>2/9<>0
3<>謝罪<><>2/22<>1
4<>挨拶<><>3/21<>0
5<>お礼<><>4/1<>1
EOL;

$lines = explode("\n", $str);

foreach ($lines as $line) {
     $items[] = explode("<>", $line);
}

foreach ($items as $item) {
     $result .= $item[0] . "\n";
}

file_put_contents('log.txt', $result);
0690nobodyさん2011/04/15(金) 18:13:59.68ID:???
<?php
foreach(file("test.txt")as$l)$v[]=explode("<>",$l, 2);print_r($v);
0691nobodyさん2011/04/15(金) 18:59:50.34ID:???
ごめんこっちがいいや
<?php
foreach(file("test.txt")as$l)$v[]=current(explode("<>",$l, 2));print_r($v);
0692nobodyさん2011/04/15(金) 19:01:56.32ID:???
foreach(file("test.txt")as$l)$v[]=current(explode("<>",$l, 2));
file_put_contents("ob.log",implode("\n", $v));
0693◆oDupeixhZv52 2011/04/15(金) 19:12:05.59ID:???
$nums =array();
if (($lines = file("ob.log")) !== FALSE)
foreach ($lines as $line)
$nums[] = reset(explode("<>",$line));
print_r($nums);
0694nobodyさん2011/04/15(金) 19:14:27.17ID:???
>>686
cut -d\< -f1 ob.log > ob2.log
0695nobodyさん2011/04/15(金) 19:35:21.58ID:???
>>686
そういう用途にPHPは不向きです。Ajaxを使いましょう。
0696nobodyさん2011/04/15(金) 20:12:11.01ID:???
Ajax…?
0697nobodyさん2011/04/15(金) 20:29:44.96ID:???
>>695
Ajaxアンチ乙
0698nobodyさん2011/04/15(金) 20:54:18.48ID:???
>>692
すげえwwww
0699nobodyさん2011/04/15(金) 21:02:15.42ID:???
>>689-694
久々にいい流れだった
0700nobodyさん2011/04/15(金) 22:23:02.88ID:???
>>695-697
久々にいい流れだった
0701nobodyさん2011/04/15(金) 23:38:57.08ID:???
>>692
$v[]=current(explode("<>",$l, 2));

$work = explode("<>",$l, 2);
$v[] = $work[0];

下のほうが速かった。
上の方がスマートなんだけどなぁ
0702nobodyさん2011/04/15(金) 23:50:42.17ID:???
おまえらすごいな
07036862011/04/16(土) 00:21:27.07ID:MW7RyDow
>>692,701さんの
foreach(file("ob.log")as$l)$v[]=current(explode("<>",$l, 2));
file_put_contents("test.txt",implode("\n", $v));
で成功しました。
>>689-693の皆さんもありがとうございました。

ちなみに>>688は私ではなく煽りの人みたいです
0704nobodyさん2011/04/16(土) 01:04:39.03ID:???
currentのどこがスマートだw
0705nobodyさん2011/04/16(土) 02:03:05.26ID:???
見た目の話やないの?
0706nobodyさん2011/04/16(土) 10:53:26.97ID:???
さすがに>>689のコードはねえよ
0707nobodyさん2011/04/16(土) 11:47:01.53ID:KaV2BHRg
画面A→画面B(正常に表示)

の状態で、もう一度画面Aから画面Bにタブを開いてアクセスしたとします。
すると「一度ウィンドウを開いているのでアクセスできません」
みたいなエラーメッセージを出したいのですが、これってPHPだけで可能ですか?

Cookieを使うことも考えたのですが、画面Aに戻った時、
Cookieを削除したらウィンドウを2つ以上開くことが出来るように思います。
画面AでCookieが切れるわけですから、更新ボタンを押した時とか。

ウィンドウ操作なのでjavascriptのような気もしますが、PHPで可能なら教えてください
0708nobodyさん2011/04/16(土) 11:55:33.38ID:???
そんな処理に労力を注ぐのは時間の無駄
0709nobodyさん2011/04/16(土) 12:04:44.58ID:KaV2BHRg
サーバに負担がかかるようなページがあって、
ウィンドウをいくつも開かれて攻撃されるのを防ぎたいのですが、
そういうのは無駄なんですかね?
0710nobodyさん2011/04/16(土) 13:21:19.97ID:???
>>707 > 一度ウィンドウを開いているのでアクセスできません

これは、画面Aから画面Bを開いたことを言われているのでしょうか?
画面を複数開くことを抑止したいのでしょうか?
画面Aから画面Bを開いた履歴に基づいて再度は開けないように抑止したいのでしょうか?
それとも画面Aから開ける画面Bは1画面に限定して同時に2画面のBを開けないように抑止したいのでしょうか?
0711nobodyさん2011/04/16(土) 13:23:22.04ID:???
できないことはない感じだけど、使い勝手が悪かったり
完全ではないとか。労が多いわりには実が少ない
ということじゃない?
0712nobodyさん2011/04/16(土) 13:44:01.00ID:???
認証制のサイトでたまに見かけるけど確かに使い勝手は悪い
0713nobodyさん2011/04/16(土) 14:41:29.33ID:???
サーバーに負担のかかるページを改善するほうが先じゃないか?
0714nobodyさん2011/04/16(土) 14:46:21.48ID:KaV2BHRg
>>710
>これは、画面Aから画面Bを開いたことを言われているのでしょうか?
そうです。

>>713
それはやっていますが、とりあえず複数ウィンドウを防止したいんです。
PHP側で出来るのか、はたまた他の方法なのかよくわからなくて、
ある程度目星が付いたらググって調べようとは思うのですが・・・
0715nobodyさん2011/04/16(土) 15:18:58.52ID:Bn3j3K6j
【OS名】MacOSX
【PHPのバージョン】5.3.6
【連携ソフトウェア】
【質問内容】
php.ini error_reportingについて
PEAR MDB2,Authを使用したところ
trict Standards: やStrict Standards: がいっぱい出てきた。
それでgoogle大先生に聞いたところ
php.iniのerror_reportingを
error_reporting = E_ALL | E_STRICT
から
error_reporting = E_ALL
に変更すれば問題ないとの教えがあり、変更した。
ところが変更したところ
fatal errorやsyntax errorまで表示されなくなってしまった。
それは困るので何とか表示できるようにしたい。
error_reportingをどのような設定にすれば良いのかご教示頂きたい。
よろしくお願い致します。
0716nobodyさん2011/04/16(土) 16:21:28.81ID:???
>>715
display_errors = offになってるんじゃないの?
0717nobodyさん2011/04/16(土) 16:39:22.59ID:???
>>714
複数ウィンドウを防止するという発想の方を変えたほうがいい。
最初に画面Aから画面Bにタブを開いてアクセスした場合はどうする?
メインのウィンドウで画面Bに遷移できなくなっちゃうね。

そこに労力を割くより、多重アクセスがあっても問題ないようなシステムに
することの方が重要。
0718nobodyさん2011/04/16(土) 16:41:41.43ID:???
>>715
元に戻す
0719nobodyさん2011/04/16(土) 18:29:02.93ID:mJdJuPdX
セッションの解除はどうするの?
0720nobodyさん2011/04/16(土) 19:52:07.39ID:???
unset($_SESSION['test']);
0721nobodyさん2011/04/16(土) 21:01:36.91ID:???
kaijo($sesshon);
0722nobodyさん2011/04/16(土) 23:31:50.34ID:???
unsetでセッションの解除はやりませんよ
0723nobodyさん2011/04/16(土) 23:39:14.45ID:???
session_unsetもunsetもあまりかわらん
0724nobodyさん2011/04/16(土) 23:59:14.71ID:???
>>719

自分で調べなさい。

はい、次の患者さぁ〜ん!
0725nobodyさん2011/04/17(日) 02:18:00.13ID:???
>>719
kaijo($sesshon);
0726nobodyさん2011/04/17(日) 03:52:06.74ID:???
>>724
患者はテメェだボケ〜!
0727nobodyさん2011/04/17(日) 09:09:49.80ID:???
しかしsession_destroyって結構荒い消し方するよな
0728nobodyさん2011/04/17(日) 09:17:54.25ID:???
消し方に荒いとかそんなのあるのか
0729nobodyさん2011/04/17(日) 12:07:08.72ID:???
ひとつずつ、消しますか?YES/NO と聞いてくれなくては紳士的とは言えますまい
0730nobodyさん2011/04/17(日) 12:10:05.87ID:???
session_destroyと書いてる以上、消す意思だろうし
セッションファイルは1つだろうしなにを言ってるのかよくわからんが
0731nobodyさん2011/04/17(日) 12:31:15.22ID:???
俺ぐらいの達人になるとPHPでGUI作ってバイナリ配布できる形式にまで出来るんだけど君たちは?
0732nobodyさん2011/04/17(日) 12:37:31.26ID:???
>>1
0733nobodyさん2011/04/17(日) 12:42:22.75ID:???
俺はPHPでWindowsアプリ作って納品してるよ。先日は画像レタッチソフトを作った。
これぐらい普通でしょ
0734nobodyさん2011/04/17(日) 12:57:48.07ID:???
>>704
逆に、どうすればスマートに記述できますかね。
explode("<>",$l, 2)[0]
という記述ができる言語ならよかったんだけど
0735nobodyさん2011/04/17(日) 14:28:47.08ID:???
>>734
スマートの定義は?
あと>>1
0736nobodyさん2011/04/17(日) 15:43:22.65ID:???
>>735
> スマートの定義は?
質問なら>>1を読んで出直しな
0737nobodyさん2011/04/17(日) 15:54:23.99ID:???
俺ぐらいになるとPHPで彼女作れますよ
もてもてです
0738nobodyさん2011/04/17(日) 15:57:07.53ID:???
俺ぐらいの達人になるとメジャーなオープンソースの開発に携われるようになるよ
んで、PHPがダメ言語だな厨にオープンソースでどんくらい稼げるか書類見せてやって黙らせてる
君らにはそんな実力ないから毎日頑張って勉強して欲しい
もちろん勉強だけじゃ稼げないよ
0739nobodyさん2011/04/17(日) 16:06:44.40ID:???
当たり前のことしか書けないのか
素人丸出しだな
0740nobodyさん2011/04/17(日) 16:10:15.29ID:???
わかったから、次の質問どうぞ

ほら、早く早く

ハァハァ
0741nobodyさん2011/04/17(日) 18:24:08.55ID:???
俺は先日PHPでC言語のコンパイラを書いたけどな
0742nobodyさん2011/04/17(日) 20:04:24.73ID:???
>>741
すごい!
なんでそんなことしたんですか!
0743nobodyさん2011/04/17(日) 21:51:29.07ID:???
俺なんかマクロアセンブラ作ったけどな
0744nobodyさん2011/04/18(月) 00:03:37.17ID:nGStzrzk
>>716さん
display_errors = Onでした
結局必要なerror_reportingのみを選択して解決しました。
具体的には
error_reporting = E_ERROR | E_PARSE
にしました。
お騒がせ致しました。ありがとうございました。
0745nobodyさん2011/04/18(月) 00:15:07.90ID:???
>>744
開発環境ならもっとエラーと警告を出すようにせい
それでも温い
0746nobodyさん2011/04/18(月) 00:37:38.67ID:???
>>744
大体
error_reporting = E_ALL
にしてsyntax errorが出なくなるわけないだろ?
だから元に戻せって言ってんのに
0747nobodyさん2011/04/19(火) 01:58:34.81ID:???
質問です。

Webからプロセスを再起動させようとし次のコードを記述したのですが失敗します。

exec("sudo /etc/init.d/プロセス名 restart" ,$s");

apacheには上記パスのsudo権限パス無しは設定済みです。
どこがおかしくて起動出来ないのでしょうか?
0748nobodyさん2011/04/19(火) 02:04:48.05ID:???
if (!has_read(>>747, >>1)) {
die(>>747);
}
0749nobodyさん2011/04/19(火) 02:28:50.50ID:???
if(DQN(>>748))Ajax(>>1);
0750nobodyさん2011/04/19(火) 04:31:30.29ID:???
>>747
須藤さんの調子が悪いので伊藤さんで試してください
0751nobodyさん2011/04/19(火) 07:17:39.70ID:???
exec("command" ,$s");

引用符の使い方と末尾の全角セミコロン
07527472011/04/19(火) 08:26:15.63ID:???
>>751
おはようございます。

すいません、上記のは記述ミスです。

exec("sudo /etc/init.d/プロセス名 restart" ,$s);

これですけど、起動しません。
よろしくお願いします。
0753nobodyさん2011/04/19(火) 08:35:32.21ID:W2zxScT8
これだけIDだせと言っているのに、いまだにIDを出さない
>>747....
>>747....
>>747....
馬鹿なの?
0754nobodyさん2011/04/19(火) 08:59:10.39ID:L9R4T5O7
web一般の質問?です
ログインを行うHPにて、
セッションタイマーが20分と
Ajaxにてヘルスチェック(ログインしていることの通知)が3分ごとに
設定されている場合に、
ブラウザを開いたまま放置した場合。
20分立てばセッションタイムアウトになるのでしょうか。
それとも3分ごとにブラウザから情報が来ているため、
何分たってもセッションタイムアウトにならないのでしょうか。
0755nobodyさん2011/04/19(火) 10:25:09.97ID:???
>>754
タイムアウトしないと思う
ヘルスチェックってのが何をしてるか、もう少し詳しく書くけば
もっと適切な答えが期待できると思うよ。
0756nobodyさん2011/04/19(火) 10:36:05.49ID:???
どー考えてもスレチ
他人のシステムなんて予想はついても
調べない限り適切な答えなんて出ない
0757nobodyさん2011/04/19(火) 12:36:41.94ID:iclRm0oP
【PHP】5.1.2

set_error_handlerを使ってエラーが発生したときの処理を実装しようとしています。

set_error_handler('fncHoge');
とし、
function fncHoge($errno, $errstr, $errfile, $errline){
//エラーの制御
}

と、記述しているのですが、
このfncHoge関数内で
$errfile, $errlineの内容をログに書きこもうとすると
変数が定義されていませんみたいなエラーがでます。

マニュアル通りに書いたのに何でエラーが出るかわかりません。

なにか気をつけるポイントがあるのでしょうか?
0758nobodyさん2011/04/19(火) 14:07:34.68ID:???
>>757
set_error_handlerはエラーだけじゃなく変数が定義されてない等のワーニングでも呼び出される
fncHoge関数内で、たとえば
if($errno == 1 || $errno == 2 || $errno == 4)
とか自分が処理したいエラーレベルでふりわければいい
07597472011/04/19(火) 14:34:31.31ID:???
自己解決しました。

>>751さん以外は役立たずのゴミどもでしたね。

ほんとご苦労様です。
■ このスレッドは過去ログ倉庫に格納されています