トップページ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
07137122006/02/20(月) 08:23:25ID:???
なんか変に書いてしまた・・
for($i=1;$i<=5;$i++){
 //特定の動作
 if($i==5){ //最後の処理 }
}
0714nobodyさん2006/02/20(月) 10:06:25ID:???
同じ条件式を複数書いてると仕様変更時にバグ出しそうだけどな
0715nobodyさん2006/02/20(月) 10:40:46ID:???
$i=0;
while (TRUE) {
 if (++$i<=5)
  echo '途中';
 else {
  echo '最後';
  break;
 }
}
で良さそうな
0716nobodyさん2006/02/20(月) 10:47:48ID:???
わざわざwhileでなくdo〜while使ってるってことは$iはいくつからスタートするか不定なんだと思うが。
0717nobodyさん2006/02/20(月) 12:03:55ID:???
do-whileを使ってるという事は必ず一回はやりたいって事だな?
0718nobodyさん2006/02/20(月) 12:12:10ID:???
そこまで溜まってません
0719nobodyさん2006/02/20(月) 13:45:09ID:???
俺はやりたい
0720nobodyさん2006/02/20(月) 13:52:42ID:???
素敵な会話中にすみません。
ちょと教えてほしいのですがinputのテキストフィールドなどの値を表示させるとき
<input value='<?=$hoge?>'> だと$hogeに'が入っているとおかしくなるし
<input value="<?=$hoge?>"> だと$hogeに"が入っているとおかしくなるし
<input value=<?=$hoge?> style=〜> だと$hogeが空白だとvalue後のタグが値と認識されて
おかしくなってしまうのですがどうしたらよいのでしょうか?
0721nobodyさん2006/02/20(月) 13:59:22ID:???
変数のスペルミスを防ぎたいのですが。。。

変数の宣言を強制する方法はありますか?
0722nobodyさん2006/02/20(月) 14:06:59ID:???
>>720
URLエンコードしなさい。漢字もね
0723nobodyさん2006/02/20(月) 14:08:52ID:???
>>721
----test.php----
変数aに10を入力し、それを変数bに移し変数bを出力する
====source====
error_reporting(E_ALL);
$a = 10;
$b = $c; // 未宣言としてここは防げる。
$c = 10; // ここは防げない。

echo $d; // 未宣言としてここは防げる
----<test.php>----
0724nobodyさん2006/02/20(月) 14:14:30ID:???
>>722 ありがとう
0725nobodyさん2006/02/20(月) 15:02:51ID:???
>>722
URLエンコード??htmlspecialcharsじゃないのか?
0726nobodyさん2006/02/20(月) 15:27:30ID:???
720の始めの一行につぼったw
07276972006/02/20(月) 15:30:36ID:???
なんだか色々とありがとうございます。

>>713
「特定の動作」は、ループの最後の"$i<=5"が真ならば実行し、偽ならば実行せずにループ終了
というようにさせたいのです。
それですと必ず最初に「特定の動作」を行ってしまうので、申し訳ありませんが趣旨とは少し異なります。
>>715
ちょうどその動作です。
綺麗なコードをどうもありがとうございます。
>>716
$i=0と考えていただいて結構です。申し訳ありませんでした。
>>717
最初にdo...whileを使おうと方針を立てただけで、同じ動作が行われるならば特に問題はないです。

do{
//ループ
}while(条件式) ここに条件が真の場合に行われる動作 ;
このような仕様になれば楽なのですけどね。
0728nobodyさん2006/02/20(月) 15:44:16ID:???
>>727
$i=0から開始なら
for($i = 0; $i <= 5; $i ++, 特定の動作) {
}
でいいじゃん
0729nobodyさん2006/02/20(月) 16:05:20ID:???
キーをID、値をPASSになるように連想配列を作りたいのですがうまくいきません。。
ちょこっとヒント頂けませんかoz

$conn=ocilogon("xxx","yyy","zzz");
$sql = "select id,pass from users";

$stmt = OCIParse($conn, $sql);
OCIDefineByName($stmt, "ID", &$dbid);
OCIDefineByName($stmt, "PASS", &$dbpass);
OCIExecute($stmt);

while(OCIFetch($stmt)){
$idpw[$dbid] = $dbpass;
}

OCIFreeStatement($stmt);
OCILogoff($conn);

0730nobodyさん2006/02/20(月) 16:19:35ID:???
環境書き忘れてました apache2.2 oracle9rs2 php5.1.2
簡単なsql文でデータは持って来れてるのは確認したので
配列に格納するところがおかしいとは思うんですが・・・
0731nobodyさん2006/02/20(月) 16:21:01ID:???
>>729
問題なく動きそうな気が駿河…
結果として$idpwの中身ってどういう状態になるんだ?
07327292006/02/20(月) 16:44:05ID:???
ありゃ・・今確認してみたら格納できてました。てことは他のとこか

聞く前にまだ自分にできることあったのに気づかなかったのがセンスなさ過ぎますね(TT
ありがとうございました またしばらく悩んでみます
07336972006/02/20(月) 17:27:15ID:???
>>728
・・・。
自分が情けなさすぎます・・・。
ありがとうございました。
0734nobodyさん2006/02/20(月) 18:07:32ID:???
>>733
Cやれば?
おまいなら3ヶ月ぐらいで初級並みの実力なら超えられそうだが。
0735nobodyさん2006/02/20(月) 18:19:28ID:???
訳わからん。このままPHPでいいじゃんw
0736nobodyさん2006/02/20(月) 18:41:07ID:???
PHPプログラマーになりたいのか、プログラマーになりたいのかで違うな
0737nobodyさん2006/02/20(月) 18:54:32ID:E2kZov7h
PHPでContent-type: text/plain;なページを出すにはどうしたらいいですか?
PHPの最初で header('Content-type: text/plain;'); としてもうまくいきません。
0738nobodyさん2006/02/20(月) 18:56:12ID:???
headerの前で何か出力をすると意味ないよ。
header前でechoとかprintとか使ってない?
0739nobodyさん2006/02/20(月) 18:56:36ID:???
preg_match_allで、n回マッチしたら処理を終了させるよう
なことはできますか?
例)
preg_match_all('([0-9]+?)', '1,2,3,4,5,6,7,8,9', $matches);
この例では5までマッチしたら正規表現による検索を中止したい。
07407372006/02/20(月) 19:02:18ID:???
>>738
> headerの前で何か出力をすると意味ないよ。
> header前でechoとかprintとか使ってない?

使ってないです。
ちなみにheader()の前でheaders_sent()してみるとFalseでした。
php.iniの設定の問題ですかね…
0741nobodyさん2006/02/20(月) 19:04:14ID:???
>>740
改行や空白など一切のデータがheaderの前で出力されていない必要が
あります。
0742nobodyさんNGNG
>>738に補足
<?php の前に(たとえ空行でも)何かあってはならない
0743nobodyさん2006/02/20(月) 19:06:55ID:???
くだらない質問です。

カンマ刻みの「要素,キー」が複数行あるデータをtxtファイルから読み込みasortしたいのですが。
読み込んだファイルから一気に連想配列を作成のしかたを教えてください。

自分では、
$lines = file("test.txt");
で読み込んだあとに、
$i = 0;
foreach ($lines as $value) {
list($a => $b) = explode(",",$lines[$i]);
echo "$a => $b";
$i++;
}
でできるかな…とかおもったんですが無理でした。
勉強中なんですさまじく頭悪い質問だとおもいますがよろしくお願いします。
0744nobodyさん2006/02/20(月) 19:58:21ID:???
>>739
allでは無理。つーかallって言わないだろそれ。
preg_matchはそれを実現するために4.3.3以降でoffset指定ができるようになってるから
ループで回せ。
0745nobodyさん2006/02/20(月) 20:00:30ID:???
>>739
条件にあるループにして途中で
break
die
return
continue
あたりで出来るんじゃね
preg_match_all使ったこと無いけどさ
07467392006/02/20(月) 20:04:30ID:???
回答ありがとうございます。
>allでは無理。つーかallって言わないだろそれ。
うーm、確かに

それでは、ループで回してみます。
0747nobodyさん2006/02/20(月) 20:04:35ID:???
>>745
preg_match_allは一発で全検索結果を返すための関数だよ
0748nobodyさん2006/02/20(月) 20:58:35ID:???
>>743
> list($a => $b) = explode(",",$lines[$i]);
ここで無理せずに
list($a, $b) = explode(〜);
$array[$a] = $b;
にしときなよ。
0749nobodyさん2006/02/20(月) 21:08:16ID:???
>>748
レスありがとうございます。

やっぱ、それしかないんですかねぇ。
問題ないしやっぱりそれでいこうかとおもいます。
回答ありがとうございました。
0750nobodyさん2006/02/20(月) 22:01:47ID:???
利用可能なPEARパッケージを全てインストールしたいんですが、
一発でインストールできるコマンドは無いんですか?
落としたパッケージを一つ一つ入れる方法しか見つかりません。
Fedora core4です。
0751nobodyさん2006/02/20(月) 22:04:06ID:???
綺麗なコードなんて書かなくていい。
見やすいコードを書くんだ。
0752nobodyさん2006/02/20(月) 22:08:30ID:???
綺麗なコードって見やすいコードじゃないの?
それを言うなら「かっこいいコードなんて書かなくていい。分かりやすいコードを書くんだ」だと思う。
バグを生まない鉄則だよね。
07536972006/02/20(月) 22:34:44ID:???
>>734
実はCからPHPに移ったクチでして・・・
今度はVS2005が手に入ったのでC++に挑戦するつもりです。
0754nobodyさん2006/02/20(月) 22:58:13ID:???
タブ区切りのデータファイルの任意の行の任意の列にある文字列を参照して表示するにはどう記述すればいいんでしょうか?

hoge.csv の2行目,6列目の文字列を表示
<?echo
0755nobodyさん2006/02/20(月) 22:59:20ID:???
      ______       ______
     r' ,v^v^v^v^v^il    /          ヽ
     l / jニニコ iニニ!.   /  ジ  き  ぼ   l
    i~^'  fエ:エi  fエエ)Fi  !   ャ  れ  く    l
    ヽr      >   V  !   イ  い  は   l
     l   !ー―‐r  l <.   ア  な       l
 __,.r-‐人   `ー―'  ノ_ ヽ  ン         /
ノ   ! !  ゙ー‐-- ̄--‐'"ハ ~^i \_       _ノ
 ヽ ! ヽ、_     _.ノ  i  \    ̄ ̄ ̄ ̄
ヾV /              ! /.入
0756nobodyさん2006/02/20(月) 23:00:39ID:???
>>750
それってソフトやOSの設定でしょ?
Linux板行けば?
0757nobodyさん2006/02/20(月) 23:05:58ID:???
>>754
$fl = file ("hoge.csv");
$sp = split ("\t", $fl[1]);
$target = $sp[6];
かな。
0758nobodyさん2006/02/21(火) 00:09:51ID:???
>>757
なんで split を使わせるんだ? 正規表現じゃないなら explode で充分
0759nobodyさん2006/02/21(火) 00:26:57ID:???
perl上がりと見た
0760nobodyさん2006/02/21(火) 00:28:32ID:???
>>758
なるほど。
そうだよな。
スマン。
0761nobodyさん2006/02/21(火) 01:46:35ID:???
つfgetcsv
0762nobodyさん2006/02/21(火) 01:54:56ID:???
>>757>>758
ありがおう
>>761
> fgetcsv
csvファイルはタブ区切りでも使えますかね?
0763nobodyさん2006/02/21(火) 01:55:32ID:???
だあああああああめだあああああああああああああ
fgetcsvなんて運頼みの関数使っちゃああああああああ
0764nobodyさん2006/02/21(火) 01:56:44ID:???
マジでfgetcsvは危ないぞ

これ試してみ

"ソ","あああ"
0765nobodyさん2006/02/21(火) 02:49:36ID:???
fgetcsvは、確かにカンマとダブルクォートのデフォルトだと危ないけど、
タブ区切りだけのものとかにこう使うと問題無く使えて便利だよ。
$line = fgetcsv($fp, 1024, "\t", '');
0766nobodyさん2006/02/21(火) 05:12:01ID:???
PHPからZIP圧縮、またはJAR圧縮して標準出力に出力する場合にはどの関数を使えばよいですか?
ZIP解凍関数ならあるのですが…
0767nobodyさん2006/02/21(火) 06:25:49ID:???
>>766
関数はないのではないかな。
execかsystemを使って外で圧縮すればよいかと。
0768nobodyさん2006/02/21(火) 07:13:05ID:???
>>737
どううまくいかないのかわからないが
IEはContent-type無視するから意味ないよ
0769nobodyさん2006/02/21(火) 08:41:11ID:???
>>766
>>469-473
>>767のやり方も、方法のひとつ。
0770nobodyさん2006/02/21(火) 10:26:49ID:9X8UKVFd
SESSIONについて質問します。

ショッピングカートの原型を作っているのですが、
$nameにtestが入っていて送信すると、$_SESSION['test']=$testになるようにし、
header('Location')で次のページで表示します。

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

次のページではforを使って、$_SESSION['test']に入っているデータをすべて
出すようにしたのですが、1つしか入らないみたいです。


説明が下手で済みませんが、セッション変数に次々とデータを入れて
すべて表示させるような事はできるのでしょうか?
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"){
  〜
}
■ このスレッドは過去ログ倉庫に格納されています