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

【PHP】下らねぇ質問はここに書き込みやがれpart16

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/02/05(日) 22:35:34ID:sf8bx52D
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

本スレ【PHP】質問スレッドpart32【php】
http://pc8.2ch.net/test/read.cgi/php/1136276300/
前スレ【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/

過去スレは>>2
0771nobodyさん2006/02/21(火) 10:27:36ID:???
間違えました・・・

$nameにtestが入っていて送信すると、$_SESSION['test']=$testになるようにし、

$nameにtestが入っていて送信すると、$_SESSION['name']=$nameになるようにし、
0772nobodyさん2006/02/21(火) 10:34:45ID:???
>>770
>$nameにtestが入っていて送信すると、$_SESSION['test']=$testになるようにし、
>header('Location')で次のページで表示します。
現在の$_SESSION['test']=="test1";

>再び前のページに戻って今度は$nameにtest2が入っているデータを選択して
>送信します。しかし、次のページではtestしか表示されません。
現在の$_SESSION['test']=="test2";

$_SESSION['item'] .= "test1,";
$_SESSION['item'] .= "test2,";
のように買い物籠のリストを作成してみては?
そんで$_SESSION['test1']が買い物かごの内容にすればいいんじゃないかな。
0773nobodyさん2006/02/21(火) 12:25:16ID:???
call_user_func()とcall_user_func_array()について質問なんですが
両者の違いは引数を羅列して渡すか、配列にして渡すかだけですか?
例えば、
function test($var1, $var2, $var3) {
 return $var1 + $var2 + $var3;
}
関数testを呼び出して引数を渡したい場合、
$result = call_user_func('test', $a, $b, $c);
と、
$result = call_user_func_array('test', array($a, $b, $c));
は等しいという認識であってますか?
0774nobodyさん2006/02/21(火) 12:27:14ID:nnE5DkIV
ある文字列が投稿されたら、MySQLで曖昧検索を行って検索結果を出すスクリプトを書いています。
その時に文字列のみをハイライトしようと思い、曖昧検索のため大文字,小文字は両方ハイライトしてもらいたいため

mb_eregi_replace

でやろうとしましたが、特定の文字列では正規表現されないのでエラーになります。(当たり前ですけど)

どうすれば英数小文字,大文字でも正確にハイライトできるでしょうか??

PHP4.4.2を使用しています。
0775nobodyさん2006/02/21(火) 12:49:03ID:???
>>773
call_user_func_arrayの方は引数は必ず二つでなくてはならない。
'function name'と'parameter(mixed)'
call_user_func はいくつでも引数を指定できる。

例えば
function hoge($a, $b)と
function hogehoge($a)
を使い分けたい場合は
call_user_funcでは引数の数が合わなくなってしまいますが、
call_user_func_arrayを使えば
call_user_func_array ('hoge', array('a_var', 'b_var'));
call_user_func_array ('hogehoge, array('a_var'));
とできるので、call_user_func_arrayの方が柔軟性があると言えるでしょう。
0776nobodyさん2006/02/21(火) 12:53:23ID:???
>>774
preg_match_all使ってみては?
例文としては。
<?php
$a = "abcdefg/hijklmn/opqrstu/vwxyz";

preg_match_all ("<[^/]*>i", $a, $b);
print_r ($b);
?>
07777732006/02/21(火) 13:09:52ID:???
>>775
丁寧にありがd
call_user_func_array()の方が見栄えが良くていいな。書き換えるか。
レスサンクス。
07787742006/02/21(火) 13:24:41ID:???
レスありがとうございます。

preg_match_allは始めてみましたがいまいち使い方がよくわかりませんでした。


とりあえずquotemeta()で一時的に対処しました。
0779nobodyさん2006/02/21(火) 13:35:07ID:???
>>778
一時的っつーかそれが正解だと思う。
0780nobodyさん2006/02/21(火) 15:18:51ID:???
$hoge が配列かどうかってどうやって調べるんだっけ?
0781nobodyさん2006/02/21(火) 15:26:29ID:???
is_array
0782nobodyさん2006/02/21(火) 15:32:01ID:???
>>781
アリガトウデース
07837742006/02/21(火) 17:39:23ID:nnE5DkIV
やはり実稼働してみてもだめでした。。
エラーログには
PHP Warning: mb_eregi_replace(): mbregex compile err: premature end of regular expression in...
という記録が残されているのですが、どのような文字列が投稿されてるのかも解らず困ってます。。
0784nobodyさん2006/02/21(火) 17:47:54ID:???
>>783
エスパー呼んでこようか?
とりあえずどういう風に使ってるのかを書いてくれ。
0785nobodyさん2006/02/21(火) 17:48:24ID:???
一時的なものと割り切って、入力内容もログ吐いちゃえば?
入力された時刻を合わせて記録しとけばエラーログと突合せもできるだろ。
0786nobodyさん2006/02/21(火) 17:55:50ID:???
php.iniのmbstringの設定がおかしいだけなんでねーの
07877742006/02/21(火) 18:01:28ID:nnE5DkIV
$out=mb_eregi_replace(quotemeta($str),"<Font Color=\"#FF0000\">\\0</Font>",$out);

で使用しています。php.iniは

mbstring
Multibyte Support enabled
Japanese support enabled
Simplified chinese support enabled
Traditional chinese support enabled
Korean support enabled
Russian support enabled
Multibyte (japanese) regex support enabled

mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.

Directive Local Value Master Value
mbstring.detect_order no value no value
mbstring.encoding_translation Off Off
mbstring.func_overload 0 0
mbstring.http_input pass pass
mbstring.http_output pass pass
mbstring.internal_encoding SJIS SJIS
mbstring.language neutral neutral
mbstring.substitute_character no value no value
となっていて、imodeでも使えるようにしているのでSJISコードです。

とりあえずログ吐かせてみます。
07887742006/02/21(火) 18:14:39ID:nnE5DkIV
原因の文字列が解りました。

"ー"

でした。
0789nobodyさん2006/02/21(火) 18:21:15ID:???
SJISだと、「ー」の2バイト目が [ と重なるんでそのままだとまずいんだがどうか
「ゼ」とかどうよ
07907742006/02/21(火) 18:24:02ID:nnE5DkIV
だめでした。。
おっしゃるとおりです。
0791nobodyさん2006/02/21(火) 18:31:24ID:???
mb_stringがあやしいってことか。
07927742006/02/21(火) 18:42:15ID:???
初めはstr_replaceで対応していたのですが、英大小文字に対応できなかったのでmbを使うようになりました。

ただこうなるとは思わず、ちょっとやっかいです・・
0793nobodyさん2006/02/21(火) 18:43:04ID:???
>>787
> mbstring.language neutral neutral
これJapaneseに設定してみて
0794nobodyさん2006/02/21(火) 18:49:01ID:???
mbstring.language Japanese Japanese
となりましたが、やはりエラーです。。

んー困った。。。
0795nobodyさん2006/02/21(火) 19:02:01ID:???
>>783
$result = mb_ereg_replace ($replace_str, "<Font Color=\"#FF0000\">\\0</Font>", $input, "ip");
と後ろに"p"をつけてみて。
mb_ereg_replace(x,y,z,"i");と
mb_eregi_replace(x,y,z);は同じ動作するから。
0796nobodyさん2006/02/21(火) 19:05:29ID:???
追記.
ここの情報がもしかしたら有用かもしれない。
ttp://ns1.php.gr.jp/pipermail/php-users/2002-November/011727.html
ttp://fjsk.s39.xrea.com/item_340.html

正規表現が停止する文字が入ってるからかもね。
[などは\でエスケープしてあげるといいかも。
07977742006/02/21(火) 19:10:25ID:???
>>795
かわんないです。。
>>796
読んでみました。pもつけてるのにな。

あと、mbでやると"ゾ"を代入しても変換されないことに気づきました。


str_replaceで英大小文字も変換できるだけでいいのに・・・
0798nobodyさん2006/02/21(火) 19:11:23ID:???
こんばんは、よろしくお願いします。
このサイトのソースを見ながら、フォームからアクションで動作するプログラムを作っていたのですが
ttp://www.komonet.ne.jp/~php/program/bbs/chap1.htm

Array
(
[action] => regist
)
$_POSTではこのように返ってきているのですが、if文の後の処理がされません。
実際は、掲示板を作りたいわけでなくラジオボタンが全て選択されているときにだけ、次のページor次の処理へというようにしたいのですが。
よろしくお願いします。

ファイル名test.php


<FORM ACTION="test.php" method="POST">
 ・
 ・
 ・
<INPUT TYPE="SUBMIT" VALUE="書き込み/更新">
<INPUT TYPE="HIDDEN" NAME="action" VALUE="regist">
 ・
 ・
if($action == "regist"){
  〜
}
0799nobodyさん2006/02/21(火) 19:15:14ID:???
>>798
スーパーグローバル変数を調べてごらん。
$action = $_POST['action'];
で$action埋めてなくちゃif文は実行できないよ。
0800nobodyさん2006/02/21(火) 19:17:43ID:???
>>795-796
おまえ途中の話を全然読んでないだろ…
>>794
mbstringの問題じゃなく、quotemetaがマルチバイトに非対応なせい。
mb_ereg_replace使ってマルチバイト対応のquote処理を自前でやるか
SJISやめてEUCに変換してから検索するとかしないとダメかもな。
0801nobodyさん2006/02/21(火) 19:24:36ID:???
>>798
そこのサイトのプログラムは古くて、ほとんどの場合、そのままでは動作しない。
というか$_POSTの存在まで気付いときながら何故そんな旧時代のサイトを参考にしてるんだ。
0802nobodyさん2006/02/21(火) 19:55:48ID:???
>>801
返信ありがとうございます。

そうなのですか。

アクションリスナーでnullが返ってきたらページを移動させない。
みたいなニュアンスで作れるのかなと前途記述したサイトをみてやってみたのですが。
$_POSTはすでに使用していて、別ページにとんだときにラジオボタンの状態に応じた処理をつくりました。
その前のページでのラジオボタンのチェックミスがあったときの処理についてアドバイスをください。
0803nobodyさん2006/02/21(火) 19:57:54ID:???
>>802
ごめん。意味不明。
0804nobodyさん2006/02/21(火) 20:09:17ID:???
>>802
ヒント:Javascript
0805nobodyさん2006/02/21(火) 20:13:21ID:???
>>803
すいません。

ラジオボタンによる選択肢を2つ用意したとして、1つに記入ミスがあったとする。
実行ボタンを押しても次のページに飛ばず再入力を求めるようなものを作りたい。

if(入力ミスがあったら?){

}
をどのように記述すればいいかがわかりませんでした。

javaの場合だと
アクションリスナーでアクションをキャッチできるのですが。
phpの場合だとformの実行ボタンを押した、という状態をどのように感知するのかがわかりません。

調べてたら、
if(count($_POST) > 0){
でできるかもっぽいことがわかったのでためしてみます。

>>804
なるほど…
でも、勉強を含めて覚えてる最中なのでできれば妥協はしたくなかったんです。

見苦しい質問ですいません。
0806nobodyさん2006/02/21(火) 20:24:28ID:???
>>805
勉強も十分必要だが、適材適所を見極める目も養ったほうがいいよ。
コードを組めるようになったのに、汚いコーディングしかできなくなると自分で大変だから。
0807nobodyさん2006/02/21(火) 20:27:15ID:???
>>806
そうですね、ありがとうございます。
0808nobodyさん2006/02/21(火) 20:38:14ID:???
>>805
PHPがどこで実行されるのかつーと、鯖で動くんだなこれが。
鯖側で動くJavaのJSPやServletなんかも鯖で動くんだな。
一方、JavaScriptやAppletなんかは、ブラウザ側で動くことになる。

普通はこんな感じになるんじゃないかな。
1. JavaScriptで入力チェック、okであれば 2.へ。(JSが嫌いな人は 1.は無し。ブラウザ側)
2. PHPで入力チェック後、エラーメッセージなり既入力値なり何なりを付け足したHTMLを出力。(鯖側)

ちょいと変わり物だと、Ajaxを使うのもありかな。
0809nobodyさん2006/02/21(火) 21:10:40ID:???
>>794
mbを使わない
preg_quote
など。ただしこれを使ってもまた別な問題が発生する。
特に理由がなければEUCで書いて出力だけSJISにする方が早い。
0810nobodyさん2006/02/21(火) 21:36:24ID:???
>>809
など、というかその組み合わせだな。

>>797
1.mb_eregを使うならエスケープは自力でやる
2.quotemetaやpreg_quoteを使うならeregかpregを使ってmb_eregは使わない

mb_eregじゃなければquotemetaやpreg_quoteでSJISが相手でも正しくクオートできるが、
その代わり1文字のSJISコードなどを正常にマッチできる保障はなくなる。
ま、元々がstr_replaceを使ってたって言うんならeregi_replaceでいいんじゃないの?
0811nobodyさん2006/02/21(火) 21:38:41ID:???
>>805
> phpの場合だとformの実行ボタンを押した、という状態をどのように感知するのかがわかりません。
type=hiddenで特定のデータを埋め込んでおいてそのデータが送信されたかどうかをチェックするか、
type=submitにnameをつけてそいつの送信の有無を確認する。
08127982006/02/21(火) 22:02:00ID:???
>>811
なるほど、ということは。

ファイル名test.php

<FORM ACTION="test.php" method="POST">
 ・
 ・
 ・
<INPUT TYPE="SUBMIT" VALUE="実行">
<INPUT TYPE="HIDDEN" NAME="action" VALUE="regist">
 ・
 ・
if($action == "regist"){
  〜
}

というプログラムで$_POSTが

Array
(
[action] => regist
)

と返ってきていてif文内の処理がされないのは、別の部分の記述ミスということなのかな。
あと、>>805さんの2個目のやり方だと。
<INPUT TYPE="SUBMIT" VALUE="実行" NAME="id">

if($id == "実行"){〜}
という感じですかね?もう少し勉強してから出直してきます。
0813nobodyさん2006/02/21(火) 22:05:32ID:???
if($_POST['action'] == "regist"){
  〜
}
0814nobodyさん2006/02/21(火) 22:06:17ID:???
>>812
ここはお前のメモ帳じゃないんだ。
ちゃんとAN HTTPDやApacheとPHPを入れて自分で実践してくれ。
0815nobodyさん2006/02/21(火) 22:06:37ID:???
>>812
そんなに $_POST['action'] や $_POST['id'] を嫌ってあげなくてもいいと思うのよ
0816nobodyさん2006/02/21(火) 22:07:53ID:y3MPaFDb
なぜ堀江もんが送ったとされるメールの、ヘッダを調べないでうだうだやってるんですか?
0817nobodyさん2006/02/21(火) 22:07:59ID:???
extract($_REQUEST)最強伝説
0818nobodyさん2006/02/21(火) 22:14:50ID:???
>>814
ごめん
何度か自鯖でためしてたんですが、参考にしてたサイトのやりかたが古かったようで。
いまいち使い方がわかってなかったようです。

>>813
thx
0819nobodyさん2006/02/21(火) 22:37:20ID:???
サンプルスクリプト眺めてるとPOSTやGETを展開してるのが多いけど、そのまま使っても問題ないですよね?
0820nobodyさん2006/02/21(火) 22:44:30ID:???
展開ってのはextractって事?
0821nobodyさん2006/02/21(火) 23:28:23ID:???
extractしてるのは脆弱性だいすきっ子だから。
0822nobodyさん2006/02/21(火) 23:29:02ID:???
>>820
それもありますけど

$user_id = $_POST['id']

みたいなかんじで別の変数に入れてたり。
0823nobodyさん2006/02/21(火) 23:30:08ID:???
例えばどういった問題が発生すると思うの?
0824nobodyさん2006/02/21(火) 23:38:46ID:???
>>823
特にそういうのは無いんですが何となく気になったので。
0825nobodyさん2006/02/21(火) 23:41:49ID:???
>>818
参考にするサイトは公式マニュアルが一番。
0826nobodyさん2006/02/21(火) 23:59:45ID:???
extractは極力使わないほうがいいと思います。
例えば、

hoge.php?_SESSION[user_pw]=hogehoge

って形で送られてきたとします。これを

extract($_GET)

しちゃうと、$_SESSION['user_pw']の値が、
"hogehoge"に変更されてしまいます。

もし事前にユーザのパスワードを、$_SESSION['user_pw']に
保持してたとしたら、勝手に書き換えられてしまうことになります。

それを避けるために

extract($_GET, EXTR_SKIP)

ってやって上書きを避けたとしても、
このままでは変数の初期化を忘れる危険性があります。

extract($_GET, EXTR_PREFIX_ALL, "get")

と、接頭辞をつけるのが一番安全な気はしますが、
それなら最初から
$hoge = $_GET['hoge'];
ってやるのと手間が変わらないと思いますし、可読性も増します。
確かにextractするのは楽だと思いますけど。
0827nobodyさん2006/02/22(水) 00:42:12ID:???
>>826
それコピペ?
0828nobodyさん2006/02/22(水) 00:58:05ID:???
>>826
次スレのテンプレに採用
0829nobodyさん2006/02/22(水) 03:10:45ID:???
よーは、XSSとか、SQLインジェクションとかを気にしてるんだろ。
みんな分かってるくせに。

どんな時でも値チェックは基本。
時には正規表現も使う。これでいいか?
0830nobodyさん2006/02/22(水) 06:28:29ID:???
値チェックの例あげてもらっていいですか?
htmlspecialcharsに通すだけにしてるんですけど、
それだけじゃ足りないでしょうか?
0831nobodyさん2006/02/22(水) 07:41:49ID:???
>>830
足りるケースもあるが、そのデータの入力の自由度が高い場合は足りない。
0832nobodyさん2006/02/22(水) 08:42:33ID:???
>>830
値チェックにもいろいろあると思うが・・。
数字チェックや全角チェック、SQLに入れる場合のチェック等
0833nobodyさん2006/02/22(水) 09:13:49ID:???
特にWEBプログラム,PHPに特化した話じゃないと思うんだよな、値の妥当性チェックって。
やってて当たり前っつーか。
0834nobodyさん2006/02/22(水) 09:40:06ID:???
値の妥当性チェックはだいたいわかるけど、
どういうことを入力されたらXSSやSQLインジェクションに繋がるかがわからない・・・
赤マンモス本しか読んでないから、セキュリティ関係の本も読んだほうがいいのかな。
0835nobodyさん2006/02/22(水) 10:39:33ID:???
>>834
ttp://64.233.179.104/search?q=cache:LgahQDd3smIJ:www.atmarkit.co.jp/fsecurity/rensai/webhole02/webhole01.html+sql+%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%A7%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3&hl=ja&gl=jp&ct=clnk&cd=1
ググればいくらでもあるだろ
0836nobodyさん2006/02/22(水) 10:40:13ID:OxTvy2cr
PHPでepsファイルを生成するのは可能ですか?
0837nobodyさん2006/02/22(水) 10:49:53ID:/RILhY7o
はじめまして。
個人的に携帯専用の求人情報サイトを作りたいと
思っていますが、
PHPの知識は皆無ですので、
システムが構築できません。
システムの参考HPはhttp://www.jwpc.jp/
です。
どなたか、安く作成してくれる方、
または安く作成してもらえるところはないでしょうか?

メールを記載しますので
onm_2006@mail.goo.ne.jp
お返事ください。
システムの機能に関しては詳しくお返事しますので
どうかよろしくお願いします。
0838nobodyさん2006/02/22(水) 10:55:15ID:???
>>837
個人的に、話の最初から「安く」と言ってくる仕事で
クライアントが期待する金額が妥当な価格であった試しがない。
話の中で優先度の高い条件のひとつに、
予算(安く)が出てくる事は当たり前だが。
0839nobodyさん2006/02/22(水) 11:02:10ID:???
>>837
SOHO系のスレッドにでもいって、
そこで頼んでみたほうがいいと思うよ。
仕事がない暇だーって言ってる人もいたし。
あとそういった用途にはちょっとPHPは不向きかもね。
0840nobodyさん2006/02/22(水) 11:07:33ID:???
>>837
システム参考とのサイトがなぁ…ネタッぽ杉
「求人情報サイト」とかいって作ったら、
いつの間にかカスタマイズされて
出会い系サイトに流用されそうなオカン

>>839
「そういった用途」って何?
0841nobodyさん2006/02/22(水) 11:26:07ID:???
>>840
PHPは処理速度が遅いから、
たくさんのリクエストを同時に抱えると極端に遅くなる可能性がある。
っていうこと。
0842nobodyさん2006/02/22(水) 11:27:20ID:???
>>840
たくさんてどれくらい?
だいたいの目安とか。
0843nobodyさん2006/02/22(水) 11:31:04ID:???
phpの知識ないのになぜここにきたのか理由がわからん
0844nobodyさん2006/02/22(水) 11:31:17ID:???
PHPって処理速度遅いんだ。何と比べてるんだろ。
0845nobodyさん2006/02/22(水) 11:34:15ID:???
>>841
では、どんな言語を使ったら良いのでしょう?
0846nobodyさん2006/02/22(水) 11:41:56ID:???
Java最強
処理速度にこだわるだけならCとかもいいんでね?
インタプリタだからPHPの処理が遅いのは仕方がない。
ってここなんのスレだっけ?
0847nobodyさん2006/02/22(水) 11:42:28ID:???
>>836
epsってただのテキストファイルじゃなかったっけ?
epsを出力するエンジンがあるのか?って質問かもしれんが…
0848nobodyさん2006/02/22(水) 11:44:19ID:???
>>846
> インタプリタだからPHPの処理が遅いのは仕方がない。

2回目以降は遅くないって聞いたことある。
0849nobodyさん2006/02/22(水) 11:44:35ID:???
>>843
おまいのメール欄も理由がわからん
0850nobodyさん2006/02/22(水) 11:49:46ID:???
例えば以下の場合
<?for(〜){?>
 <tr>
  <td>〜</td>
 <?for(〜){
  処理a?>
  <td></td>
 <?}?>
 </tr>
<?}?>
とか書いているのですがもっと綺麗に書く方法はありますか?
で、こういう場合上みたいにtdの頭をそろえた方がいいのか?
<td>と<?の頭をそろえた方がどちらが良いのでしょうか?
0851nobodyさん2006/02/22(水) 11:51:11ID:???
>>850
printとかは使わないポリシー?
0852nobodyさん2006/02/22(水) 11:55:37ID:???
Smarty を使うとか
08538502006/02/22(水) 12:01:03ID:???
>>851
前echo使いまくってたらデザイナーの方に
見にくいって怒られたwので
使い分けしています。
0854nobodyさん2006/02/22(水) 12:02:42ID:???
>>850
<table>
<?php
for (;;) {
 echo "<tr><td>" . 〜 . "</td>";
 for (;;) {
  処理a
  echo "<td></td>";
 }
 echo "</tr>";
}
?>
</table>

そもそもそこまで入れ子にしない方がいい。
だけど気になるので分かる人俺にもついでにおせーて。
0855nobodyさん2006/02/22(水) 12:03:53ID:???
>>848
中間コードコンパイル後の実行処理もJavaやPerlに比べて結構遅いよ。
1回目がめちゃ遅いんであって、2回目以降でも決して速くはない。
0856nobodyさん2006/02/22(水) 12:09:48ID:???
>>853
デザイナーと分業してるんなら、>>852 じゃ無いが、テンプレートエンジン使えば?
Flexy とかもあるぞ。
0857nobodyさん2006/02/22(水) 12:20:58ID:???
>>853
これが俺のデザインなんです。
って言ってみようぜ。
俺はお前のデザイン分からんように、お前も俺の知的フィールドは理解できんだろ。って

クビは覚悟だな。
0858nobodyさん2006/02/22(水) 12:27:45ID:???
>>853
ってか、それ以前にメ欄なんとかしろ
08598502006/02/22(水) 12:53:19ID:???
>>854 ありがと。
>>856 テンプレートエンジンか・・使ったことないんでちょっと調べてみます。
>>857 それじゃ進歩しないじゃんw
0860nobodyさん2006/02/22(水) 13:10:35ID:???
>>829
extractを使うと初期化しないで使っている変数がある場合や、
extract以前に処理した変数の値が任意に設定できるため、
XSSやSQLインジェクションなどわかりやすい物だけではなく、
もっとわかりにくい論理的破綻すら招く。
デバッグはしにくいし、どこでどう転んで脆弱性を生み出すか検討するのも大変になる。
ならば、extractを乱用するのは避けるべきであるってことだ。
見通しの悪いコードは書かないのは基本。
0861nobodyさん2006/02/22(水) 13:25:58ID:???
>>859
こっちが進歩するだけが世界じゃない、
向こうが進歩する事もまた世界の一つだ。

>>860
昔から気になってたんだけど、Let's PHP
あれはどうなん?
extract使ってるけど。
0862nobodyさん2006/02/22(水) 13:31:17ID:???
>>861
register globals問題にとりあえず対応するためにやってそのまんまだな <LetsPHP
0863nobodyさん2006/02/22(水) 13:32:54ID:???
>>861
諸悪の根元
0864nobodyさん2006/02/22(水) 13:55:20ID:???
>>863
> >>861
> 諸悪の根元

(・ω・;)ω・;)・;) )...マヂ??
レッツPHP!を参考に、つい先日から勉強を始めたばかりなのですが・・・。

ええextractも「これが基本かっ!」てな感じで使ってました・・・。
0865nobodyさん2006/02/22(水) 14:05:25ID:YzTdS2nd
スレ違いだったらごめんなさい。

windows server 2003でIIS6.0を使用してます。
PHP4.4.2をインストールし、nucleusでblogを作成したところ、
「エラー発生アプリケーション w3wp.exe、バージョン 6.0.3790.1830、エラー発生モジュール php4isapi.dll、バージョン 0.0.0.0、エラー発生アドレス 0x00002443」
とアプリケーションログに記録され、表示できなくなりました。
どうやら、PHP4.4.2のバクのようで、STABLE版の使用で解決するらしいのですが、STABLE版はIISで使用できるのでしょうか?
また、設定方法等、解説しているサイトをご存知でしたら、ご教授願えませんでしょうか?

よろしくお願いします。
0866nobodyさん2006/02/22(水) 14:07:18ID:???
各種処理の結果を表示するhtmlのテンプレートを_template.htmlとして用意し、
それを利用してブラウザに情報を挿入したhtmlを表示させるにはどうすればよいのでしょうか?
今までは表示用のhtmlを、あとから情報を挿入したい部分毎に細切れにしたものを変数に入れておき、
情報を挟みつつ順番につなげてからechoで出力していたのですが、
デザイン面の変更にかなり手間がかかっていました。

そこで次に試してみたのは、
_template.htmlの情報を挿入したい部分に{$hoge}と入れておき、
$hoge = "output test";
$output = file_get_content("_template.html");
echo $output;
としてみたのですが、ブラウザにも「{$hoge}」とそのまま表示され、$hogeに格納した文字列は表示されませんでした。
たとえば$output = "テスト{$hoge}";とやると$hogeの内容が表示されます。
どうすれば_template.html中の{$hoge}のような部分に変数の内容を表示させることが出来るのでしょうか?
よろしくお願いします。
0867nobodyさん2006/02/22(水) 14:09:36ID:???
>>865
スレ違い。こっちで
http://pc8.2ch.net/test/read.cgi/php/1140027592/145
0868nobodyさん2006/02/22(水) 14:13:45ID:???
>>864
あそこは凄いね。ある意味勉強になるよ。
SQLインジェクションとかがやり放題なスクリプトとか放置されてるし
(確かここで指摘されて知ったんだが)
0869nobodyさん2006/02/22(水) 14:16:36ID:???
>>866
スレ違い。こっちで
http://pc8.2ch.net/test/read.cgi/php/1118799352/
0870nobodyさん2006/02/22(水) 16:51:33ID:25ErppZd
print関数内の変数を全て htmlspecialchars を使ってエスケープ処理をする、といった場合にはどうするのが一番簡単でしょうか?

print関数内の変数名の全てを htmlspecialchars($hoge) のように変更すれば良いのですが、
それだとコードが汚くなってしまうので・・・。

よろしくお願いします。
0871nobodyさん2006/02/22(水) 16:54:39ID:???
apacheの最新版と PHP 5.1.2 の最新版をソースをDLしてコンパイルしてインストールしました。(OSはLinuxです)

それで正常に動作しているのですが、make uninstall には対応していないようですので、
例えば新たに PHP 5.1.3 が公開された場合には、どうやってアップグレードするのがよいのでしょうか?

1. Apacheの設定ファイル httpd.conf から 「LoadModule php5_module modules/libphp5.so」 を削除
2. Apacheの再起動
3. make install 時に作成されたファイルを全部手動で削除(rm, rmdirコマンド)
4. 新しいバージョンを落としてきてコンパイル、make install
5. Apacheの再起動

といった手順で問題ないでしょうか。
■ このスレッドは過去ログ倉庫に格納されています