【PHP】下らねぇ質問はID出して書き込みやがれ 108
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/07/02(土) 18:37:53.12ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 107
http://hibari.2ch.net/test/read.cgi/php/1307228162/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0268nobodyさん
2011/07/06(水) 17:51:59.64ID:???0269nobodyさん
2011/07/06(水) 18:25:09.23ID:???くだらん和製英語だから誰も気にしてない
0270nobodyさん
2011/07/06(水) 18:50:18.75ID:???さらにスクリーンブルーが出てお手上げ状態です。
コードエラーになんか色々書いてますが頭が弱いので意味がわかりません。
だれかミーヘルプ!
0272nobodyさん
2011/07/06(水) 19:58:02.32ID:???0273nobodyさん
2011/07/06(水) 20:17:42.75ID:???誤字脱字スルーが基本の2ちゃんで
アンチの位置をいちいち気にする理由がわからん。
ニコ動コンテンツで悪いがソース。
ttp://dic.nicovideo.jp/a/%E3%82%A2%E3%83%B3%E3%83%81
「〜アンチ」の様な単語の語尾に付けるのは間違いである。(間違った例:任天堂アンチ)
しかし、昨今のネットスラングのアンチはさらに誤用、
意味が転じ「〜が嫌いな(対抗する)人物」を指す場合が多いので、
『名詞+アンチ』の用法で使われるケースが多い。
0274nobodyさん
2011/07/06(水) 20:24:14.86ID:???さらっと流せばいいのに
0275nobodyさん
2011/07/06(水) 20:26:20.40ID:???0276nobodyさん
2011/07/06(水) 20:33:25.57ID:???0277nobodyさん
2011/07/06(水) 20:36:54.48ID:???MVCじゃないし、すげえファイルは多いし、
マッピング機能なし、mysqlにしか対応してないし、
QuickFormに依存しまくってて凄い使いにくいんだけど、
どうしたらいい。
BEARってやつなんだけど
0278nobodyさん
2011/07/06(水) 20:44:16.91ID:ydicKJDS<body>
<?php
if(****){ goto end; } //←A
//以下elseの処理内容
end:
?>
</body>
for文などのbreak・continueみたいな感じで、
A部が単純な場合はこっちの方がelse分のインデントの手間が省けるので使いたくなります
dieとかexitだと最後のbody閉じタグがでませんし
本気で議論すると荒れそうなので「ちょっと読みにくいんだよね」とか「いや実はちょっと遅い」とか軽めの回答希望です
0279nobodyさん
2011/07/06(水) 20:58:54.70ID:???0280nobodyさん
2011/07/06(水) 21:37:05.33ID:GdDhNewS<embed src="フラッシュファイルパス" type="application/x-shockwave-flash" width="200" height="160">
として、このオブジェクトをクリックしたときに値(value=1など)をポストしたいです。
その時にどのように記載すれば宜しいでしょうか。
0281nobodyさん
2011/07/06(水) 21:43:34.96ID:eQ7ZrZNeログインページを作ろうといろいろページを巡っていると
セッション固定攻撃という記事を見つけて、
パッチを当てるべきと記述がありました。パッチのリンクはPHP5.2.1となっています。
使用環境のPHPは5.3なのですが、この場合既に固定攻撃の脆弱性に対する修正は
入っているものでしょうか?
0282nobodyさん
2011/07/06(水) 21:46:54.93ID:???誘導
http://hibari.2ch.net/test/read.cgi/hp/1308664388/
0283nobodyさん
2011/07/06(水) 21:51:33.83ID:GdDhNewSありがとうございます。
そちらで伺ってみますmm
0284nobodyさん
2011/07/06(水) 22:37:24.61ID:HF+XTU8s0285nobodyさん
2011/07/06(水) 22:39:56.56ID:???0286nobodyさん
2011/07/06(水) 22:52:22.03ID:P+ce3RU8・PHPのincludeで、共通ファイル(メニューとか)を読み込む
・現在のページがたとえばabout.htmlだとしたら、その部分のソースを
<a href="about.html">about</a>だったら
<a href="hoge.html" class="ima">about</a>にしたい
(class="ima"を、付加したい)
ページ自体に変数入れて、メニューの方でif文入れて、
読み込んだ変数が合致したら
classを付加する、ってやり方であってるでしょうか?
サブカテゴリがあるので、(aboutの下に問い合わせとか)
aboutと問い合わせの両方のページでclassを付与したいです
0287nobodyさん
2011/07/06(水) 22:55:27.46ID:asDiMoVU0288nobodyさん
2011/07/06(水) 23:08:04.78ID:???わかりにくい文書
>>287
配列とダウンロードの仕方とforやforeachの使い方を覚える
必要ならソケット通信のやり方も検索して覚える
0289nobodyさん
2011/07/06(水) 23:33:31.82ID:ydicKJDSgotoって5.3からなんですね、よく読んでませんでした
0290nobodyさん
2011/07/06(水) 23:44:05.77ID:EINhOZp3class TestException extends Exception {}
class Hoge {
static function a() {
throw new Exception();
}
static function b() {
throw new TestException();
}
}
try {
Hoge::b();
Hoge::a();
} catch (Exception $e) {
echo "Exception";
} catch (TestException $t) {
echo "TestException";
}
catchブロックにTestExceptionを最初にもって来ればOKですが
その状態でHoge::aを持ってくると後ろにあるExceptionをキャッチします
この仕様だと失敗しやすい処理を前にもってきて
キャッチは後ろのほうのブロックにしないといけません
非常に判断が難しいのですがこの仕様どうにかなりませんよね?
0291nobodyさん
2011/07/06(水) 23:53:33.27ID:???意味がわからん。
0292251
2011/07/06(水) 23:58:09.11ID:2AvkLEqF<?php the_widget( 'GetConnected', 'title=Get Connected', $widget_args); ?>
<?php the_widget( 'Recentposts_thumbnail', 'title=Recent posts', $widget_args); ?>
↓
<?php the_widget( 'GetConnected', 'title=RSS', $widget_args); ?>
<?php the_widget( 'Recentposts_thumbnail', 'title=最近のお知らせ', $widget_args); ?>
これで出来ました
当初、日本語だと文字化けしてたのですが
Dreaweaverの環境設定をut8に変更して化けなくなり
今回の解決にいたりました
0293nobodyさん
2011/07/07(木) 00:01:05.95ID:???> Dreaweaverの環境設定をut8に変更して化けなくなり
Dreaweaverが何の関係があるの?
というか、Dreaweaverの設定を変えたことで何故解決したのか理解してるの?
0296290
2011/07/07(木) 00:57:54.60ID:???・・・すみません自分でも読み返して何言ってるか不明でした
処理A(失敗時に投げられる例外はException)
処理B(失敗時に投げられる例外はTestException)
こういう順番にして
例外キャッチの順番を
Exception→TestExceptionの順番にすると
処理BでつまづいたときでもExceptionブロックに行ってしまうんですね
なのでExceptionブロックは一番最後にかかないといけない仕様なのかなーと
0301nobodyさん
2011/07/07(木) 01:28:32.14ID:???マニュアル嫁よ・・・と言いたいところだけど、
当たり前な仕様すぎてPHPマニュアルには詳しく書いてない。
JavaとかC#とかの解説でも読んできて。
0302nobodyさん
2011/07/07(木) 01:33:54.45ID:???OOPの入門書じゃないからなw
0303nobodyさん
2011/07/07(木) 01:47:47.86ID:???0304nobodyさん
2011/07/07(木) 01:59:08.52ID:???ほんと役立たずだな
そんなレスはいらねえんだよ
0305nobodyさん
2011/07/07(木) 02:20:52.96ID:???わしゃわからんべ(´・ω・`)
0306nobodyさん
2011/07/07(木) 02:21:39.30ID:???0307nobodyさん
2011/07/07(木) 02:22:55.36ID:???0308nobodyさん
2011/07/07(木) 02:35:59.80ID:???0310nobodyさん
2011/07/07(木) 03:21:42.08ID:???つまりソースを出して始めて反論になる
じゃないとその反論は無意味なオナニーで終わる
0311nobodyさん
2011/07/07(木) 03:35:27.17ID:???例外を出すメソッド毎に try を入れ子にしてやる
http://php.net/manual/ja/language.exceptions.php#example-244
0314nobodyさん
2011/07/07(木) 06:22:55.29ID:???しかし「有る」と主張する場合は根拠を示す必要があるのに、「無い」と主張する場合はその必要がないのは
不公平ではないでしょうか。
0316nobodyさん
2011/07/07(木) 06:35:26.66ID:???おはよう
さて、どんな質問が残ってるのかな?
今日は暇だから、お姉さんが丁寧に質問に答えちゃうよ!
0319nobodyさん
2011/07/07(木) 06:39:46.61ID:???0320patagonia
2011/07/07(木) 07:57:28.23ID:???mainのPHPから処理の流れに応じてPHPを実行させるのに、PHPらしい方法はどんなんでしょうか。下記を考えました。
main.php{
exec('/usr/local/bin/php ./1.php');
exec('/usr/local/bin/php ./2.php');
exec('/usr/local/bin/php ./3.php');
・
・
exec('/usr/local/bin/php ./n.php');
}
どんなもんでしょうか。
0322nobodyさん
2011/07/07(木) 08:16:32.26ID:???書き込み欄があるので入力してみたら名前欄に表示されたが。
0323263
2011/07/07(木) 09:13:18.64ID:VhwIm5mM0324nobodyさん
2011/07/07(木) 09:15:50.48ID:???1は不可
2は可
0325nobodyさん
2011/07/07(木) 09:22:54.53ID:VhwIm5mM回答ありがとうございます
2の方法についてですがどのような方法でしょうか?
detect_orderやhttp_inputに"eucJP-win,SJIS-win"のように指定してみましたが思うような効果は得られませんでした
0326nobodyさん
2011/07/07(木) 09:27:33.38ID:hOX3MgUD0327nobodyさん
2011/07/07(木) 09:28:19.33ID:hOX3MgUDmainのPHPから処理の流れに応じてPHPを実行させるのに、PHPらしい方法はどんなんでしょうか。下記を考えました。
main.php{
exec('/usr/local/bin/php ./1.php');
exec('/usr/local/bin/php ./2.php');
exec('/usr/local/bin/php ./3.php');
・
・
exec('/usr/local/bin/php ./n.php');
}
どんなもんでしょうか。
0329nobodyさん
2011/07/07(木) 09:41:08.44ID:hOX3MgUD0332nobodyさん
2011/07/07(木) 10:52:59.10ID:VhwIm5mM再度実験してみたら希望通りの動作をしてくれました
http_inputの記述順に問題があったようで、
↓をベースに
php_value mbstring.language Japanese
php_value mbstring.internal_encoding UTF-8
php_value mbstring.detect_order SJIS-win,eucJP-win,UTF-8
php_flag mbstring.encoding_translation On
php_value mbstring.http_input SJIS-win,eucJP-win,UTF-8
php_flag output_buffering On
php_value output_handler mb_output_handler
php_value default_charset EUC-JP
php_value mbstring.http_output eucJP-win
php_value mbstring.substitute_character None
↓の項目を書き換えた所、希望通りの動作となりました
php_value mbstring.http_input eucJP-win,SJIS-win,UTF-8
php_value default_charset Shift_JIS
php_value mbstring.http_output SJIS-win
0333nobodyさん
2011/07/07(木) 11:36:55.43ID:Ch5hchcU--------------------
テスト01
<?PHP
$a=1
if($a==1){
echo"aは1です";
}Else{
exit("処理終了");
}
?>
テスト文字02
------------------
見たいに書いて
PHPの処理中断した時に
その後のhhmlを表示させる場合どうすればいいのかな?
exitだとその後のhtmlとかすべて表示されない
0335nobodyさん
2011/07/07(木) 11:50:07.37ID:???}else{
a();
exit;
}
function a(){htmlを書く}
0336nobodyさん
2011/07/07(木) 12:07:04.50ID:Ch5hchcUそのままhtmlに戻りたいので
<?PHP ?>の処理を途中終了して
その後のhtmlを表示させるような関数ってありますか?
0337nobodyさん
2011/07/07(木) 12:11:52.89ID:???exit書いたらそこで試合終了
0338nobodyさん
2011/07/07(木) 12:12:00.44ID:???0339nobodyさん
2011/07/07(木) 12:12:33.57ID:???0340nobodyさん
2011/07/07(木) 12:28:57.53ID:???0341nobodyさん
2011/07/07(木) 12:31:59.39ID:Ch5hchcUgoto調べてみたらぴったしの機能でしたが
レンタルサーバーのPHPが5.2でつかえずorz
自作関数はまだ使いこなせない(´・ω・`)
0342nobodyさん
2011/07/07(木) 12:43:15.97ID:???<?PHP
try {
$a=2;
if($a==1){
echo"aは1です";
}Else{
throw new Exception("処理終了");
}
}
catch(Exception $ex) {
}
?>
<?PHP
while(true) {
$a=2;
if($a==1){
echo"aは1です";
}Else{
echo("処理終了");
break;
}
break;
}
?>
テスト文字02
0343nobodyさん
2011/07/07(木) 13:01:36.62ID:???$a = 1;
if ($a == 1) {
echo "$aは1です";
$end = 1;
}
if (!$end) {
処理2
}
処理終了
0344nobodyさん
2011/07/07(木) 13:02:24.23ID:???echo "$aは1です";
} else {
$end = 1;
}
の間違い
フラグでもいれれば簡単じゃろ
0345nobodyさん
2011/07/07(木) 13:24:17.41ID:Ch5hchcU条件によって何十箇所も飛ばしたいところが複雑にあるから
gotoのような単純にジャンプできる機能がほしいところ
レスしてくれた皆様ありがとうございますm(__)m
0346nobodyさん
2011/07/08(金) 03:56:00.80ID:hPQ7klvO$fp = fopen("history.txt", 'c+b');
while (!feof($fp)) {
$line = str_replace(array("\r\n","\n","\r"), '', fgets($fp, 1024));
if ($line !== '') { $historys[] = $line; }
}
array_unshift($historys, "何かの値");
if (count($historys) > 30) {
array_pop($historys);
reset($historys);
}
ftruncate($fp, 0);
fputs($fp, implode("\n", $historys) . "\n");
fclose($fp);
配列を30行に抑えたいのですが、どこが間違っていますか?
同じ行が積み重なって16MBとかになってしまいます。。
0348nobodyさん
2011/07/08(金) 06:47:24.41ID:???蛇足だけどarray_popの後にresetは要らないよ。
history.txtを全行読み込んでから30行に削るのは合理的じゃない。
history.txtが馬鹿デカかったら時間が掛かるしメモリーがあふれるかも知れない。
$historysに読み込むときに29行に制限しておく。
あと"何かの値"を必ず入れるのならarray_unshiftなんて使わずに最初に入れておけ。
-----
$historys = array();
$fp = fopen("history.txt", 'c+b');
$header = "何かの値";
$historys[] = $header;
$limit = 30;
$count = 0;
while (!feof($fp) && $count < $limit - 1) {
$line = str_replace(array("\r\n","\n","\r"), '', fgets($fp, 1024));
if ($line !== '') {
$historys[] = $line;
$count++;
}
}
ftruncate($fp, 0);
for($i = 0; $i < $limit; $i++){
fputs($fp, $historys[$i]."\n";
}
fclose($fp);
-----
0349nobodyさん
2011/07/08(金) 06:50:01.42ID:???0350nobodyさん
2011/07/08(金) 06:58:15.45ID:???if (count($historys) > 30) {
array_pop($historys);
reset($historys);
}
↑これだと30以上のときに最後の1個を取り除いただけで、30行に抑えていない。
繰り返さないと。
0351nobodyさん
2011/07/08(金) 07:04:40.49ID:hPQ7klvOありがとうこざいます
読み込み時にしとけばよかったんですね。勉強になりましたm(__)m
0352nobodyさん
2011/07/08(金) 07:18:45.62ID:hPQ7klvO0から初めて履歴は30分に1個ずつ増えてく仕様だったので
大丈夫だと思ってました ; ;
未だに原因が分かりませんが1日で3000行以上になっててΣ(´∀`;)です
0353nobodyさん
2011/07/08(金) 07:34:37.06ID:???0354nobodyさん
2011/07/08(金) 07:39:16.64ID:???普通a+だろ
0357nobodyさん
2011/07/08(金) 08:20:27.71ID:???もしくはfile()で取得してwで書き込んだほうがいい
c+とシークは不具合がある
0358nobodyさん
2011/07/08(金) 10:53:33.22ID:k6JkJfUYファイル名が$nameに入っていて、そのファイルの中身を$bodyに代入するにはどうしたらいいでしょうか。
exec ('cat $name > $body');
ではうまくいきませんので。
0359nobodyさん
2011/07/08(金) 11:09:45.22ID:???http://www.php.net/manual/ja/function.file-get-contents.php
http://www.php.net/manual/ja/function.file.php
$body = file_get_contents($name);
0360nobodyさん
2011/07/08(金) 11:23:54.66ID:???ありがとう。うまくいった。PHPは便利だ。
perlで書くしかないかと思い悩んでいたのだ。
0361nobodyさん
2011/07/08(金) 13:37:24.44ID:???PHPで出来ることはAjaxでも出来る。
0362nobodyさん
2011/07/08(金) 15:23:36.52ID:TLiNIkWsデータベースへ検索を行うプログラムを作るとして、
検索画面入力 検索(リクエスト)処理 結果表示 という工程を挟むとします。
検索画面入力→処理へGET→処理内容をセッション変数に格納→表示画面へ飛ばして表示
検索画面入力→処理へGET→処理は表示画面を兼ねてるのでそのまま表示
今こんな2通りの実装方法を試してますが、
前者のほうがオーバヘッドの関係上当然ながら遅いです。(微々たるものですが)
しかし整理されてる感じがするのは前者のほうです。
後者は検索処理を書いた後、そのままhtmlを書くのでviewと分離できておらず汚いです。
改善策として、処理部分を他のファイルに関数として書いて、includeして関数に$_GETを渡すとかありますが、
ファイルを分けただけで本質的にあんま変わりません。
みなさんはどういう方法を採用していますか?
何か他にいい方法があったら教えてください。
0363nobodyさん
2011/07/08(金) 15:27:18.76ID:???0364nobodyさん
2011/07/08(金) 16:55:29.06ID:???あるサーバでは
PHP Parse error: syntax error, unexpected '?' in a.php on line 7
Errors parsing a.php
というようにファイル名と行番号まで表示してくれるのですが、別のサーバでは
Errors parsing a.php
しか表示されません。設定を変えて前者のようにすることは可能でしょうか?
0365nobodyさん
2011/07/08(金) 17:56:57.50ID:???0367nobodyさん
2011/07/08(金) 20:15:31.50ID:???できましたありがとうございます。
ただ、行番号等が表示されるサーバでphp -d error_reporting=4177 a.php
とすると表示されなくなるのに対し、
もともと表示されないサーバでphp -d error_reporting=6143 a.php
としてもダメでした。
■ このスレッドは過去ログ倉庫に格納されています