【PHP】下らねぇ質問はここに書き込みやがれ 60
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/12/01(土) 21:18:36ID:MnWwNIk0PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 58
http://pc11.2ch.net/test/read.cgi/php/1195204145/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0102nobodyさん
2007/12/04(火) 08:35:02ID:???0103nobodyさん
2007/12/04(火) 08:51:33ID:???君の言ってることができたら
製作者が閲覧者の任意のファイルを勝手にアップロードできる
という事と同じわけだが、これがどういうことかわかるか?
010453
2007/12/04(火) 09:43:01ID:KyeH73t1色々考えたんですが再選択させることにしました
たくさんの回答ありがとうございました
010547
2007/12/04(火) 10:12:17ID:DCkKBxK5レベル低いのは謝ります。何とかちゃんと動かす方法ないでしょうか…。
0107nobodyさん
2007/12/04(火) 12:12:25ID:???0108nobodyさん
2007/12/04(火) 13:13:18ID:???1. 読まない ・・・説明書などを読まない。読む気などさらさらない。
2. 調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3. 試さない ・・・めんどくさいなどの理由で実行しない。する気もない。
4. 理解力が足りない ・・・理解力以前の問題で理解しようとしない。
5. 人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする
0110nobodyさん
2007/12/04(火) 13:45:35ID:3jzDmEYYクライアントXからa.phpが呼んだ後すぐに[リクエストA]、
同じクライアントXが同じa.phpが呼んだ[リクエストB]場合。
サーバーの処理は、必ず[リクエストA]が最初に実行され、
a.php内のステップ行においても、最初の[リクエストA]が[リクエストB]よりも
早く処理され、遅れて処理されることはない。という認識で合っていますでしょうか?
0111nobodyさん
2007/12/04(火) 15:14:16ID:???例えば価格が低い順などにウェブ上で並べ替えたいのですが、どういう関数が
あるのでしょうか?
0112nobodyさん
2007/12/04(火) 15:18:25ID:CSEadt/70113nobodyさん
2007/12/04(火) 15:25:59ID:???csv_real_time_sort.so
0114nobodyさん
2007/12/04(火) 15:28:12ID:Pc0oj+C5<option value="0" <?php getKen(0); ?>>北海道</option>
<option value="1" <?php getKen(1); ?>>青森</option>…
のようなプログラムを作ってたら、ページの表示に異常に時間がかかりました
(getKen()はtrueの場合 selected="selected"を表示します)
これは埋め込みの数(50個近く)が多すぎて負荷が高くなったのかと思いますが
ページのソース全体をphpで表示するのと一部をphp書き出しするのは
どういったことを基準に使い分けしたらいいんでしょう?
また、上の県名を登録データにあわせてセレクト表示するプログラムの場合、
phpでループまわして県名リストプルダウンを生成するのが定石ですか?
みんなそうやって作ってるんですか? アドバイスお願いします
0115111
2007/12/04(火) 15:31:00ID:???さっそくマニュアルで勉強してみます。
0116nobodyさん
2007/12/04(火) 15:32:57ID:???時間かかってるのはどっか閉じてないとかじゃないの?
その程度で時間かかるのは異常。
県名も配列にしてループは普通だろうね。
0117nobodyさん
2007/12/04(火) 16:44:21ID:???ループでgetKen(n)
↓
getKen(n)ベタ並べ(今ここ)
↓
DBデータ配列にブチ込んでループでif判定(普通ここ?)
↓
ループさせるデータをDBではなくテキストで読み込むようにファイル化
↓
PC特化なら別ファイルで読み込む形のJavascriptで吐き出しルーチン作っておいて、phpからそのIDだけ渡す
下に行くほど早いと思われる
テンプレート使えとは言わないが、50も埋め込まずに済む方法は他にもいくらでもある
”異常に時間がかる”のは別に問題があると思われる
>どういったことを基準に使い分けしたらいいんでしょう?
基準なんて無いがテンプレートやフレームワークが流行っているこのご時世に、
「50も埋め込むのはどうか」と、お兄さんがゆってた。
0118nobodyさん
2007/12/04(火) 17:54:29ID:???0119114
2007/12/04(火) 21:11:59ID:Pc0oj+C5ありがとうございました! ただ、
>ループさせるデータをDBではなくテキストで読み込むようにファイル化
という部分だけ良くわかりません
データ(県名)の登録はDBにして、参照時(プルダウン生成時)に一旦テキストファイル化して
以降はそのファイルを使って作業するってことですか?
「表示したいものを表示する」くらいのことはなんとかできるようになったんですが、
選択肢のうちどういうやり方が早いのか、タブーなのかっていうことを書いてくれてる本って
ないもんだから参ってました(ありますか?)
上記の<?php ?>のベタ書きは、ほかにもプルダウンたくさんあったので調べてみたら
300個もあって、実験としてはともかく、我ながらアホかと思いましたが^^
本当にありがとうございました
0120nobodyさん
2007/12/04(火) 21:29:49ID:???0121IT土方 ◆5m1CB.BcLA
2007/12/04(火) 21:37:52ID:???ていうか、これ以上2chで続ける意味があるかな?>例のツール
(DLした人は判っていると思うが)デザインセンスなんてモノは親の腹の中においてきたので、HTMLデザインあたりはアドバイスが欲しかったのだが……。
何はともあれくだ質ってことで
1.今、レンタル鯖でPHP4(のみ)とPHP5(も可)の割合は?
2.今後一年くらいの上記割合の変化の見込みは?
※もちろんPHP4が増えるってコトは無いだろうが(笑
ああ、もちろん「正解」なんかないことはわかってる。独断と偏見で答え一発レスよろ。
まぁ、もし実装するにしろ1から書くのはバカらしいのでなんかフレームワーク使うことになると思うが、PHP4だとEthnaぐらいしかないかねぇ?
PHP5ならsymfonyかZend Frameworkか。symfonyは甞めたことすらないなぁ……。
0122nobodyさん
2007/12/04(火) 21:46:34ID:???0123nobodyさん
2007/12/04(火) 22:03:38ID:???0124nobodyさん
2007/12/04(火) 22:57:29ID:C/Gj75Avindex.phpにアクセスが来た際に
acc.logにアクセスを1カウントし
その後top.phpにリダイレクトする方法をお教えください。
色々調べたのですがheaderを使用するとその下のソースを読み込まないようで…
どうかお願いします。
0125nobodyさん
2007/12/04(火) 22:58:54ID:???JavaとPHP、どちらをチョイスするかの基準て何があるかな。
セキュリティとかパフォーマンスとか?
Java厨だったんだけどRailsライクなFWをPHPで作ったら何かサクサクできちゃうんで気持ちが傾いてきた・・・
0126nobodyさん
2007/12/04(火) 23:04:27ID:eihiSnQK6時間分を例にとると、
111000 は1時から3時まで予約ありで、これに
000001 6時の予約(OK)
100000 1時の予約(ダメ)
としたい
今は配列にして比較してます
http://itpro.nikkeibp.co.jp/article/COLUMN/20070507/270104/
の下の一週間をビット演算で比較するっていうのは理解不能だった
0127nobodyさん
2007/12/04(火) 23:14:22ID:???<?php
あくせすろぐかうんとあっぷの処理
header('Location:top.php');
これでいけない?
0130nobodyさん
2007/12/05(水) 00:36:56ID:???2回目以降のアクセスでは実行されません。
GETで渡した値をキーにしてデータベース操作をするphpなんですが
2回目以降はブラウザがキャッシュしたものにアクセスしているからでしょうか。
毎回サーバ側のphpを実行させる方法はないでしょうか。
0131nobodyさん
2007/12/05(水) 01:15:25ID:???あなたのコードなんて万人が書けるわけですから、もったいないと思わないことです。
0132130
2007/12/05(水) 01:23:24ID:???以下にコードを載せます。
よろしくお願いします。
//指定ルームのclientsをデクリメント--------------------------------
//roomIDの取得
$roomid = $_GET["roomid"];
$sql = "select * from room where rid = '".$roomid."'";
$rs = mysql_db_query($db, $sql);
if($row = mysql_fetch_array($rs)){
$tmp = $row['clients'] - 1;
//ルーム内に誰もいなくなったら部屋消去(みたいになるようにDB初期化)
if($tmp == 0){
$sql = "update room set clients = '".$tmp."', mid = '0', name='' where rid = '".$roomid."'";
$rs = mysql_db_query($db, $sql);
}
//まだいたら部屋消去はしない
else{
$sql = "update room set clients = '".$tmp."' where rid = '".$roomid."'";
$rs = mysql_db_query($db, $sql);
}
}
0133nobodyさん
2007/12/05(水) 02:31:52ID:???0134nobodyさん
2007/12/05(水) 03:07:54ID:???0136店長
2007/12/05(水) 05:08:09ID:???いつもお世話になっております。
今度カツカレーサービスするので、アルバイトの出勤プログラム作ってください。
デリヘルとかでよくつかっているあれです。
0137nobodyさん
2007/12/05(水) 05:20:19ID:???0138nobodyさん
2007/12/05(水) 07:52:21ID:???echo preg_replace('/_(.*?)_/', '$1Manko', '_UnkoChinko_'); echo "\n";
echo preg_replace('/_(.*?)/', '$1Manko', '_UnkoChinko'); echo "\n";
これを実行すると
UnkoChinkoManko
MankoUnkoChinko
となりますが、なぜ二行目はUnkoChinkoがあとに出てくるのですか。
PHPはこれです
PHP 5.1.6 (cli) (built: Oct 10 2006 19:01:22)
0140nobodyさん
2007/12/05(水) 09:05:29ID:qveqxfBcでメールの内容が受け取れるわけですが、
POST送信やGET送信などをphp://stdinで受け取るってできないですか?
php://stdinの仕様をあまり理解していないもので・・・
0141nobodyさん
2007/12/05(水) 09:32:11ID:???そっからPHPスクリプトを呼び出せば
POSTの内容は取れるんじゃない。
GETも標準入力からとりたいんならそういうのをかませて流してやればいい。
PHP単体ではそういうことはしないんでは。しないためにPHPがあるというか。
UNIXのシェルと、HTTPの勉強すると理解が深まると思う。(PHPではなく)
0142nobodyさん
2007/12/05(水) 11:03:05ID:???0143nobodyさん
2007/12/05(水) 11:25:26ID:E4JX9yMrクリアしたほうがいいんですか?
たとえばスケジューラの場合、ある日の情報を登録した時の $_SESSION['yotei'] ってセッションが
がいつまでも残ってたら、別の日の情報を続けて記入したときにヘンなことになるのかなって気がします
0144nobodyさん
2007/12/05(水) 11:30:56ID:???0145nobodyさん
2007/12/05(水) 12:23:49ID:???1. 読まない ・・・説明書などを読まない。読む気などさらさらない。
2. 調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3. 試さない ・・・めんどくさいなどの理由で実行しない。する気もない。
4. 理解力が足りない ・・・理解力以前の問題で理解しようとしない。
5. 人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする
0146nobodyさん
2007/12/05(水) 12:31:17ID:I+KKVKo8print_r(split(" |,|.", "あ い,う"));
Array (
[0] => あ
[1] => い
[2] => う
)
print_r(split(" |,|.|_", "あ い,う"));
Array (
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
)
となります
0148nobodyさん
2007/12/05(水) 12:35:33ID:???0151nobodyさん
2007/12/05(水) 13:23:18ID:h1a1P9jY前スレでsudoを使えと言われたので、
visudoでapache ALL=NOPASSWD: /etc/rc.d/init.d/spamassassinと書き加えて、
<html>
<body>
<?php
exec('/usr/bin/sudo /etc/rc.d/init.d/spamassassin start');
?>
</body>
<html>
を実行したのですが、spamassassinは起動しませんでした。
開発環境はfedora core 6です。
よろしくお願いします。
0153nobodyさん
2007/12/05(水) 14:19:36ID:???$sudo -s
#su - apache
$/usr/bin/sudo /etc/rc.d/init.d/spamassassin start
これが実行できるか確認。
0154nobodyさん
2007/12/05(水) 14:28:39ID:E4JX9yMrどうしたらいいですか?
0155nobodyさん
2007/12/05(水) 14:30:41ID:???0156nobodyさん
2007/12/05(水) 14:43:47ID:LzuIpZZj[root@souffl /]# sudo -s
[root@souffl /]# su - apache
-bash-3.1$ /usr/bin/sudo /etc/rc.d/init.d/spamassassin start
Password:
Sorry, try again.
0157156
2007/12/05(水) 14:54:56ID:LzuIpZZj[root@souffl /]# sudo -s
[root@souffl /]# su - apache
-bash-3.1$ /usr/bin/sudo /etc/rc.d/init.d/spamassassin start
spamd を起動中: [ OK ]
0159154
2007/12/05(水) 15:46:33ID:E4JX9yMrありがとうございます
is_array($_SESSION)の結果を見ると、セッションは配列なんですね
$_SESSION['namae']="yamada";
$_SESSION['sex']="man";
というのをやって、yamadaという値ではなく、'namae'というセッション名(?)を
取得したいんですが、$_SESSION[0]でも$_SESSION[0][0]でも取れません
どうしたらいいんでしょうか
0160nobodyさん
2007/12/05(水) 15:49:26ID:???0162nobodyさん
2007/12/05(水) 16:18:10ID:I+KKVKo8ini_set("error_reporting", "E_ALL");
ini_set("display_errors" , "On");
でエラーが出ません
他に設定するとこってありましたっけ
0163nobodyさん
2007/12/05(水) 16:29:52ID:???0164nobodyさん
2007/12/05(水) 16:31:53ID:???エラーの種類によっては
display_startup_errors
を設定する必要がある
http://php.morva.net/manual/ja/ref.errorfunc.php#ini.display-errors
0165nobodyさん
2007/12/05(水) 16:32:50ID:???E_ALLは定義済み定数なので”でかこっちゃだめ
0166nobodyさん
2007/12/05(水) 16:59:31ID:QkDOhUsv簡単な流れだけ教えてください。
0167nobodyさん
2007/12/05(水) 17:08:55ID:???メールをプログラムが受けるのはPHPの範疇ではない(可能ではあるが)
0170nobodyさん
2007/12/05(水) 17:56:16ID:???ありがとうございました。さっそく構築することができました。
そこで疑問がでたのですが、これで最後にします。
ログファイルにユーザーが入力した値を書き込むとき、
htmlspecialcharsをして書き込んでます。
出力するときも念のためhtmlspecialcharsをおこなうべきでしょうか?
初歩的な質問ですみません、アドバイスお願いいたします。
0173nobodyさん
2007/12/05(水) 18:23:01ID:???サイズ0にするような関数ありますか?
いまいち調べてもこれというのがでてきません。
宜しくお願いします。
0174nobodyさん
2007/12/05(水) 18:30:55ID:???0175nobodyさん
2007/12/05(水) 18:36:18ID:pQhoHUATPHPのマニュアルのサイトにはクラスを使用するときは
$hoge = new MDB2();
のようにした書き方をしているのですが
MDB2などの中身を勉強の参考にのぞいてみると
$hoge =& MDB2::connect($dsn);
といった書き方をしていました
この二つはいったい何が違うのでしょうか?
MDB2::connect($dsn);の方はコンストラクタを実行せずにnew
していると考えて良いのでしょうか?
0176nobodyさん
2007/12/05(水) 18:51:05ID:???もしもファイルサイズが**以上なら、ファイルを開いて空にする。
そうでなければなにもしない。
これでできますけど何か?
0179nobodyさん
2007/12/05(水) 19:30:39ID:???php_flag session.cookie_lifetime 250
じゃ、変えられなかった。
ini_set 使うべきなのか。。
0180173
2007/12/05(水) 19:34:11ID:???$file = 'aaaa.txt';
if (filesize($file) > 10000) {
unlink($file);
}
こんな感じでどうでしょうか?
0182nobodyさん
2007/12/05(水) 19:54:41ID:???$filename = $_GET['u'];
$array = file($filename);
$filenaiyou = join("",$array);
echo $filenaiyou;
?>
これのセキュリティ上の対策を教えてください
0184nobodyさん
2007/12/05(水) 20:02:12ID:???0185nobodyさん
2007/12/05(水) 20:02:26ID:???ありがとうございます。
確かにファイルが削除されます。^^;
ただ、次に fopen() で モードを a にすれば削除された
ファイルがまた空でよみがえりますよね?
0186nobodyさん
2007/12/05(水) 20:06:28ID:DG3jNG37<?php
$filename = $_GET['u'];
$array = file($filename);
$filenaiyou = join("",$array);
echo $filenaiyou;
?>
これのセキュリティ上の対策を教えてください
0188nobodyさん
2007/12/05(水) 20:21:58ID:???モード w でも蘇るが。
そうやるなら、wで開いてfputsで 空白を書き込めばいい。
0になるかはわからないけど、とりあえずマシーロになる。
0190nobodyさん
2007/12/05(水) 20:33:16ID:DG3jNG37危ないのはわかるのですが、
どう対策したらいいのやら。
やってみた事
1.先頭のhttpを1度切り離し再度付ける。
2.htmlspecialchars
3.".."はエラー
4.このスクリプトの名称はエラー
このぐらいしか思いつかなくて。。
ここにいらっしゃる方々なら、今ある脆弱性の対策を
しっかりされてるだろうと思い投稿しました
0192nobodyさん
2007/12/05(水) 21:02:50ID:???0193nobodyさん
2007/12/05(水) 21:16:41ID:???そうですね。
ただ、某フレームワークを使ってる
他サイトさんを見ると、
結構抜け目があったりしてます。
まぁ言い出したらキリがないですね。
ありがとうございました。
0194nobodyさん
2007/12/05(水) 21:17:00ID:???基本的に.htaccessで設定できないものは
ini_setでは設定できないと思っておいた方がいい
そして値をセットする時は
php_flagじゃなくてphp_value
0195nobodyさん
2007/12/05(水) 21:20:09ID:???べりーさんきゅー。
ありがとう、覚えておくよ。
On Off で指定するときは php_flag、値を指定するときは php_valueっていう解釈でいいのかな?
0196nobodyさん
2007/12/05(水) 21:32:48ID:QkDOhUsvセーフモードがoffの状態でも動くものでしょうか?
0198nobodyさん
2007/12/05(水) 22:01:40ID:wraGx0x2そのうち一度だけ、その関数の引数を使った条件が真のとき(for文中のif文でチェック)、
その数字を赤字で出力する場合(<font color=red>$i</font>)、
以降の処理ではif文をもう実行しないという方法はないでしょうか?
ただし、現在ある赤字チェック以外のif文を新規に追加しないことと、
数値の出力自体は100まで実行するものとします …やっぱり無理かな?
0199nobodyさん
2007/12/05(水) 22:05:25ID:???0200nobodyさん
2007/12/05(水) 22:22:37ID:???for($i = 0;$i < 100;$i++) {
if ($flag == false && hoge($i)) {
echo '<font color="red">'.$i.'</font>';
$flag = true;
}
echo $i';
}
function hoge($hoge) {
if ($hoge == true) {
return true;
}
return false;
}
こんな感じか?
標準関数ではそんなのない
0201nobodyさん
2007/12/05(水) 22:30:08ID:h+ynIQ9APerlみたいにコマンドを入力する黒い画面上での実行は無理ですか。
■ このスレッドは過去ログ倉庫に格納されています