【PHP】質問スレッドpart25【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/11/22 17:25:42ID:???・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-4
0447nobodyさん
04/12/03 08:05:21ID:???自宅サーバーでphp使ってますがファイル生成ができません。
touch関数も使えません。
ディレクトリのパーミッションは755です。
php.iniの設定のどこか間違ってるのでしょうか?
0448nobodyさん
04/12/03 08:07:56ID:???ttp://www.catnet.ne.jp/kouno/c_faq/c17.html#4
0449447
04/12/03 08:35:54ID:???0450nobodyさん
04/12/03 08:51:42ID:???環境書け、環境
Winでアクセス権とか言うなよ
0451447
04/12/03 09:45:39ID:???Apache2
php4.3.9です。
よろしくおねがします
0452nobodyさん
04/12/03 10:19:48ID:???ファイルの数だけ分岐を書くつもりなのか。
ifの条件式よりむしろそっちに違和感が...
0453447
04/12/03 10:34:40ID:???これってphpもapacheのsuexecを使わなきゃいけないってこと?
0454nobodyさん
04/12/03 10:37:27ID:???0458nobodyさん
04/12/03 11:07:12ID:???0459nobodyさん
04/12/03 11:20:57ID:ty66hqkyconnectは一回ずつ終了しては接続して、
pconnectは既にセッションがあるならそれを使用するということなんですが
データベースへの負荷というのはどっちでも同じなのでしょうか?
0460nobodyさん
04/12/03 11:28:07ID:???./img に画像ファイル, ./txt に説明文を書いたテキストを置く。
hoge.phpには普通のHTMLを記述する。画像と説明文の2箇所だけPHPのコードを下記の通りに挿入。
<html>
... 省略 ...
<img src="<?= "./img/$_GET[file].jpg" ?>" /> <-- 画像 -->
<? include "./txt/$_GET[file].txt" ?> /> <!-- 説明文 -->
... 省略 ...
</html>
URLの呼出は hoge.php?file=1 で、$_GET[file] に 1 が設定される。
実際に運用するには値のチェックとかもしないといけないけど、
手短に説明するとこんな感じ。
0461nobodyさん
04/12/03 11:36:03ID:???これか
Webサイト制作初心者用質問スレ Part 110
http://pc5.2ch.net/test/read.cgi/hp/1101583920/342
0467nobodyさん
04/12/03 12:13:40ID:???MySQLはコネクションネゴシエーションによる負荷は
非常に低いので、他のDBMSほど気にすることはないが
mysql_pconnectとmysql_connectを比べた場合、
前者の方が負荷が低い場合がある。断定でないのは
使いまわしされなければ同等だから。
0468459
04/12/03 13:01:12ID:ty66hqkyわかりやすい説明ありがとうございました。
0469nobodyさん
04/12/03 13:46:41ID:???ファイルかどうかは別にしても、
1000枚の画像それぞれに解説があるんだから、
1000件のデータは作らなきゃならんだろ。
ま、いずれにしてもDB使えって事だな。
0470nobodyさん
04/12/03 14:01:43ID:???LAST_INSERT_ID()とか問題になったりしないのかな??
0471nobodyさん
04/12/03 14:29:03ID:???0472nobodyさん
04/12/03 14:43:53ID:???PHP自体はマルチスレッドを言語的にサポートしてないから問題ない(関係ない)。
同じDBユーザでpconnectされた場合、先の接続が終了していなければ
使いまわしではなく全く別の新規の接続として扱われるので
LAST_INSERT_IDには影響しない。影響するとすればpconnectによる
接続同一性を前提として、クエリを発行せずにLAST_INSERT_IDを取得した場合。
しかしこれは、pconnectではそもそも同一性は保証されないのだから、プログラムの作りがマズイ。
0473470
04/12/03 14:47:29ID:???おおお。ありがとうございます。
よく理解できました。
# Sybaseでpconnectに問題があってから、
# なんとなくpconnect敬遠してたけど、MySQLなら大丈夫かなぁ。
0474nobodyさん
04/12/03 16:31:43ID:???0475nobodyさん
04/12/03 16:51:24ID:ods0UPS5呼び出し側指定のリファレンス渡しをしなければいけないケースは
出てくると思うのですが
みなさんallow_call_time_pass_referenceをOnにしていますか?
0476nobodyさん
04/12/03 18:48:43ID:???ソリューションが多くなってきましたけど、
あれってどういう設計なんでしょうか?
インターフェース設計とか・・・
参考になる本やWebページなんかあれば教えてください。
ってかソース読むのが手っ取り早いのかなぁ?
0479nobodyさん
04/12/03 20:33:31ID:???最初にメインの共通クラスライブラリを読んで、
インストールモジュールのリストや設定ファイル
(実際にはリストや設定はDBに入ってる事が多い)
を読んで、それらの処理に従ってコンテンツを生成する。
0481nobodyさん
04/12/04 01:20:34ID:p/Q3rspF関数の処理を行った後の位置を、指定することはできますか?
具代的にはこんなスクリプトで、foo関数を実行した後、「echo "b";」に行かないで、
処理の続きをしたいのですが、どうすればいいのでしょうか?
foo();
echo "b";
function foo(){
echo "a";
}
(処理の続き...)
よろしくお願いします。
0482nobodyさん
04/12/04 01:24:56ID:???foo();
//echo "b";
function foo(){
echo "a";
}
0483nobodyさん
04/12/04 01:51:08ID:???echo "b";
function foo(){
echo "a";
(処理の続き...)
}
こうすれば?
0485nobodyさん
04/12/04 01:53:21ID:???0486481
04/12/04 02:08:08ID:???フォームから受け取ったデータを保存するつもりなのですが、
<?php
if(!$_POST['text']){error();}
(データの整理、書き込み処理)
success();
function success(){
$output= "Success";
}
function error(){
$output= "Error";
} ?>
(HTML部分)
<p><? $output; ?></p>
(HTML部分)
大体こんな感じで作っています。
これだと、error関数を実行した後、$outputにSuccessが代入されてしまうし、
exit;を入れるとHTML部分が表示されません。
何か解決策あったら教えてください。
よろしくお願いします。
0487nobodyさん
04/12/04 02:11:20ID:???error();
}
else{
(データの整理、書き込み処理)
success();
}
以下省略
とでもしておけば?
0488nobodyさん
04/12/04 02:12:55ID:???<p><? $output; ?></p>
がからっぽだ。。。
0489487=488
04/12/04 02:15:09ID:???<?php
if(!$_POST['text']){
$output = error();
}
else{
(データの整理、書き込み処理)
$output=success();
}
function success(){
return "Success";
}
function error(){
return "Error";
} ?>
(HTML部分)
<p><? $output; ?></p>
(HTML部分)
0490487
04/12/04 02:31:22ID:???×<p><? $output; ?></p>
○<p><? echo $output; ?></p>
しかし、そんなコードなら
$optoutに直接入れれば済む話なので
本来の要件とは全然違う気がしてきたorz
0491nobodyさん
04/12/04 02:31:56ID:???例外処理なら、古い手だけど do { ... } while (0); とか。(エラーの時にbreakでループを抜ける)
処理全体を関数内に書いてエラーの時はreturnで後ろの処理をcut。
PHP5なら素直に try/catch 構文を使う。
0492nobodyさん
04/12/04 07:50:28ID:???関数に分割して処理を呼ぶのを前提に缶がえ他方がいいよ。
0494とらたぬじゃー
04/12/04 09:46:35ID:5HVD0ZHRを表示するにはどうすれば良いのでしょう??
0496nobodyさん
04/12/04 10:21:19ID:???↓
0497nobodyさん
04/12/04 10:23:53ID:KceHPVj20499nobodyさん
04/12/04 10:33:23ID:IQsH1Sj9if($a==1||$b==1){
hogehoge;
}
上みたいに || 使えばいいんでしょうか?
0500nobodyさん
04/12/04 10:34:52ID:???0501nobodyさん
04/12/04 10:36:00ID:???http://pc5.2ch.net/test/read.cgi/php/1099322141/
移動
0502499
04/12/04 10:37:02ID:???aが1、またはbが1のときにhogehogeを実行したいといった内容です。
0503nobodyさん
04/12/04 10:45:27ID:???0505nobodyさん
04/12/04 11:10:57ID:???これでいいんじゃないの
<?php
function xxx(){
if(!$_POST['text']) return "Error";
(データの整理、書き込み処理)
return "Success";
}
?>
(HTML部分)
<p><?php echo xxx(); ?></p>
(HTML部分)
0507499
04/12/04 11:22:05ID:???世も末だな
0508nobodyさん
04/12/04 11:28:00ID:???こんなのでよく日常暮らしていけるもんだ
0509nobodyさん
04/12/04 11:45:04ID:???【ちらしの】日記はココに書け【裏】
0511nobodyさん
04/12/04 14:19:06ID:???0512nobodyさん
04/12/04 14:27:06ID:mdd+eXUzことが出来るシステムを作っています。
今のとこ一つのスクリプトファイルを$modeという変数でcaseで切り替えそれぞれの機能を
切り替えています。(hoge.php?mode=searchみたいな感じで)
これまで値をhiddenで渡したりしてたのですが、面倒くさくなってきたので
セッションを使おうと思っています。
主に情報の入力などはpost検索結果の条件保持と、modeの切り替えにはgetを使っています。
ひとまず、$HTTP_GET_VARSと$HTTP_POST_VARSをまとめて
$HTTP_SESSION_VARSに入れて値を引き継げるようにしたいのですが
このように複数の連想配列を一気に$HTTP_SESSION_VARSに入れてしまう方法が
わかりません。
このあたりについて参考になるサイト、又はアドバイスをいただけたらありがたいです。
0513nobodyさん
04/12/04 14:59:58ID:???配列を連結する関数があるのでそれを使えば
希望する動作をさせることはできますが、
セッションの仕組みを誤解してませんか?
セッションを使った場合、セッション変数の他に
通常のGET・POST変数を渡すこともできます。
0514nobodyさん
04/12/04 15:10:21ID:???0515nobodyさん
04/12/04 15:11:59ID:???0516nobodyさん
04/12/04 15:29:24ID:???0517nobodyさん
04/12/04 15:35:15ID:???0518nobodyさん
04/12/04 15:40:16ID:???0519nobodyさん
04/12/04 16:15:54ID:???0520512
04/12/04 16:16:54ID:mdd+eXUzセッションは初めてでいまいち理解し切れていません。
やりたいことはとにかく、フォームの入力をページ
(実際は同じphpファイルですが)移動後も表示させたいのです。
0521nobodyさん
04/12/04 16:17:13ID:???こんな感じのってどういう仕組みなのでしょうか?
単純にソースファイルアップロードして、パーミッション変更して、
って感じですかね?
友人に似たようなの作ってくれと頼まれてるんですが、
上記くらいの方法しか思いつかないんです。
結構だるいですよね、該当CGIがバージョンアップしたら
修正する手間も出てきますし。
0522nobodyさん
04/12/04 16:50:27ID:???0524512
04/12/04 17:08:01ID:mdd+eXUzfunction insert_session($post_ary){//postされた値をセッション変数に入れる
global $_SESSION['$key'],$_POST['$key'];//←当たり前だけどダメだ
reset($ary);
while(list($key,$val) = each($ary)){
if(isset($POST['$key'])){
$_SESSION['$key'] = $_POST['$key'];
//↑whileで回しながら入れるけど、これはグローバルにならないっぽい
}
}
}
$post_ary = $HTTP_POST_VARS;
insert_session($post_ary);
だめだ、わからんです。
0525nobodyさん
04/12/04 17:18:00ID:???$_SESSION['foo'] = serialize($post_arr);
}
$_SESSIONはオートグローバル。
マニュアル読めば分かるネタはくだスレでやってくれ。
0526nobodyさん
04/12/04 18:01:15ID:???あとグローバル宣言はいらん
つうか何がしたいンだ、引数の役目は何だ
0527nobodyさん
04/12/04 18:14:59ID:???0528nobodyさん
04/12/04 18:23:53ID:???0529nobodyさん
04/12/04 18:53:12ID:???やヴぁいらすぃ
0532nobodyさん
04/12/04 19:32:18ID:???初心者にはmain()エントリ作る必要があるほうが分かりやすいのかもな
最近はJavaやRubyなんかの影響でmainにswitch文書くの嫌いな人もいるらしいけど、
PHPはどっちかっつーと構造化大好きPerl寄りのスクリプトが多いと思フ
0533nobodyさん
04/12/04 20:03:11ID:???で記録してある配列$lines[]の中から、$bが重複した場合その配列を削除したい
(例)
$lines[0] = $a<>$b<>$c
$lines[1] = $a1<>$b3<>$c5
$lines[2] = $a<>$b<>$c5
$lines[3] = $a1<>$b6<>$c
これを$lines[0]と$lines[2]の$bの値が重複するため、後の$lines[2]を削除し
$lines[0] = $a<>$b<>$c
$lines[1] = $a1<>$b3<>$c5
$lines[3] = $a1<>$b6<>$c
としたいのですがどうすればいいでしょうか?
関数array_uniqueなどを使えばいいんでしょうか?
0534nobodyさん
04/12/04 20:07:22ID:???0535nobodyさん
04/12/04 20:10:23ID:???0536nobodyさん
04/12/04 20:12:36ID:???ちったぁ考えろ
一晩考えて無理なら来い
0537533
04/12/04 20:16:29ID:???>>535
ありがとうございました。参考にさせていただきます。
0538nobodyさん
04/12/04 21:49:34ID:???$test = explode("<>", $line[0]);
$b = $test[1];
foreach($lines as $value){
$fixed_value = explode("<>", $value);
if($fixed_value[1] == $b){
}else{
}
}
$lines = $fixed_lines;
あー釣りでしたか、すまそ。
空行は考えてねw
0539nobodyさん
04/12/04 22:08:18ID:???0540nobodyさん
04/12/04 23:42:20ID:???0541nobodyさん
04/12/04 23:52:56ID:???$chklist = array(
'niku.2ch.net',
'list.dsbl.org'
);
$ip = explode(".", $addr);
if ($ip) {
$rev = "{$ip[3]}.{$ip[2]}.{$ip[1]}.{$ip[0]}";
foreach ($chklist as $host) if (checkdnsrr("$rev.$host", 'A')) return TRUE;
return FALSE;
}
0542nobodyさん
04/12/04 23:53:20ID:???0543nobodyさん
04/12/05 01:05:06ID:???http://gazo01.chbox.com/wisecrack/src/1102017063590.jpg
0544nobodyさん
04/12/05 01:50:37ID:???言いたい事は分かるが、話の流れにあってないよ。
元の質問は success(), error() 関数を呼ぶのが前提で、
処理全体の制御構造をどうすればいいか、と言うのだったんだから。
関数に分割云々は、また別の話。
■ このスレッドは過去ログ倉庫に格納されています