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

【PHP】質問スレッドpart19【php】

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん04/07/16 07:12ID:KvHeypq/
・PHP全般の質問スレです。
・新規質問の方は上げてください。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


抜けているものがあったら補足願います
0809nobodyさん04/08/04 18:50ID:???
日本語の添削始めちゃったよ
0810nobodyさん04/08/04 18:56ID:???
うわぁぁぁん;;文字サイズ13pxなのにかなりデケーヨ;;
0811nobodyさん04/08/04 19:01ID:???
[<A href="<?php echo "$script?action=new"; ?>" target="_self">新規投稿</A>]
[<A href="<?php echo "$script?action=search"; ?>" target="_self">検索</A>]
[<A href="<?php echo "$script?action=admin"; ?>" target="_self">管理室</A>]

にしているのですが、$actionに変数が格納されません、なぜでしょうか?
0812nobodyさん04/08/04 19:09ID:oguY/FCP
>>811
実際のブラウザ上でアンカーのhrefは何になってる?
081381104/08/04 19:10ID:???
ごめんなさい、”いつのまにか”ちゃんと表示されました・・・
本当迷惑かけてごめんなさい・・・釣ってきます、、
0814nobodyさん04/08/04 19:20ID:???
なんだ register_globals の問題かと思った。
0815nobodyさん04/08/04 19:36ID:5xfxrndz
入力されたデータをDBに書き込みたいんですが、
普通にINSERT文をクエリー発行すると
複数ユーザに同時に書き込みされた時に
DBアクセスが著しく遅くなってしまいます。
同時アクセスを防ぐ方法として、
一個のフラグのようなファイルを作ってみたのですが
どうも確実に同時書き込みを防いでくれません。
その辺を便利に防いでくれる関数はないでしょうか?
それか、便利な防ぎ方が載っているサイトがあれば教えて下さい。
0816nobodyさん04/08/04 19:53ID:???
テーブル構造が悪いんじゃなかろうか?
0817nobodyさん04/08/04 19:55ID:???
ぽまいら、>>791はXPでテトラプログラミングをしている先進的な学校の生徒でつよ

>>807
ついでにcookieもssl-secureにしておけば多い日も安心。

>>815
まずはDBのチューニングかな。
その前にスクリプトのチューニングが必要かも知れんけど:-p
その後で、使っているDBのロック機能を調べてみれ。
PHP側だけで排他制御するのはあんまりお勧めできない。
一箇所でも忘れたら全部パー。それでもあえてやるならflock関数かな。
0818nobodyさん04/08/04 19:57ID:???
同時アクセスの制御自体はデータベースサーバがやってくれるわけだし
俺もテーブル構造が悪いんだと思う
0819nobodyさん04/08/04 20:09ID:???
ていうか
テーブルのロックするsql文あったでしょ
0820nobodyさん04/08/04 20:11ID:???
みんな他人の回答も読もうぜ。
0821nobodyさん04/08/04 20:27ID:???
あくまでアクセスブロックで防ぐとして、

ブロックされた人には
「只今、混みあっています。少々時間が経ってから再度アクセスください。」
とかってエラー出すのだろうか?
082280704/08/04 20:55ID:+l+GCo7r
SESSION機能を使っている時にIPの確認は毎回行っているのですが、
他に個人を識別するのに役に立つ情報などは何かあるのでしょうか?。

>>808
ハード一台で複数のドメインを管理している貧乏サーバーとか
あるかな、とひねくれた発想を^^;。
サーバー上でSESSIONがファイルとして保存されている場所が
同じであればドメインが異なってもアクセス出来てしまうのでは
ないかという事も考えてみました^^;;。
ひねくれすぎですね・・・。

0823nobodyさん04/08/04 20:59ID:???
IPアドレス+UserAgent+MACアドレス

とか。

仕様的にはMACアドレスだけでも(ルータレベルまでは)識別できるはずだけど、
インターネット上には同じMACアドレスが山ほどあるみたいだからね。
0824104/08/04 21:00ID:???
クッキーについて教えてください
0825nobodyさん04/08/04 21:02ID:+6UXuj/L
すいません、ちょとお聞きしたいのですが、
今、PHPとPostgresSQLとで、プログラムを作ってるんですが、
DBから得たresultから、1行づつデータを読み込む部分での質問です。

たとえば、5行のresultがあるとして、
3行目まで読み込んだところで、ポインタをまた1行目に戻したい場合、
関数は何を使えばいいのですか?

sybase_data_seek を使ってもうまくいかず(PHPのバージョンが足りてないのかも知れませんが)
MySQLなら、mysql_data_seekという関数があるようですが、
Postgresの方には、同じような役割の関数はないのでしょうか?

開発環境を変えることができないことを前提で、
どなたか教えてほしいです。
0826nobodyさん04/08/04 21:11ID:???
> MySQLなら、mysql_data_seekという関数があるようですが、
> Postgresの方には、同じような役割の関数はないのでしょうか?

sybase_data_seek
0827nobodyさん04/08/04 21:25ID:???
質問読まずに書き込む
PEARのDB.php使って結果を配列に格納すれば無問題
0828nobodyさん04/08/04 21:57ID:???
>>824
ttp://www.mr-ito.com/guide.html
0829nobodyさん04/08/04 22:29ID:???
PHP+MySQLで掲示板作ったのですがコメントの部分がたまに文字化けするのはなぜでしょうか?
文字コードもEUC-JPにコンバートしてるのですが、たまーに文字化けしてしまいます。
ご教授よろしくお願いします。
083082504/08/04 23:12ID:???
>>826
それは、PHPのバージョンがいくつから使えるんですか?
試してみたのですが、エラーでたんですけど・・・。

0831nobodyさん04/08/04 23:23ID:???
>>830
PostgreSQLを使うのにsybaseの関数を何故使うのか、ということだと思うのだが。
元質問の話に戻すと、まぁ、なんだ。おまいもマニュアル嫁。
PostgreSQL関係の関数って高々70個くらいだろ。
0832nobodyさん04/08/05 00:46ID:jHqBsTPN
>>829
とりあえずここ見て設定確かめろ
http://tsuttayo.sytes.net/php/char_trn/
0833nobodyさん04/08/05 01:20ID:???
会員制の掲示板を作ったとして、
その人がログインしているかどうか確かめることってできますか?
ID、PASSを入力してログインするとログインしている人の名前が出るとか・・・
またブラウザを閉じるとその人の名前が消えたり・・・
0834nobodyさん04/08/05 01:38ID:???
何もかもダメダメだな
0835nobodyさん04/08/05 02:45ID:???
マニュアルから逆引きの方法教えてください・・・
0836nobodyさん04/08/05 03:06ID:???
Parse error: parse error, unexpected $ in 94って何すか?
特にミスっている場所ないのですが・・・
0837nobodyさん04/08/05 03:14ID:???
>>833
cookieかsession
083883604/08/05 03:15ID:???
ちなみに文はこれです
<?php
$data = file($gdata);
$count = count($data);
for ($i=0;$i<=$count;$i++){
list ($idr,$passr,$lvr,$expr,$char,$winr,$loser,$hpr,$atcr,$defr,$masr,$dexr) = split( ",", $data[$i]);
if ( $id != $idr ){
if ($i == 1){
print " <OPTION value=$idr selected>$idr</OPTION>";
}else{
print " <OPTION value=$idr>$idr</OPTION>";
}
}
?>
0839nobodyさん04/08/05 03:15ID:???
>>836
ミスってなきゃエラーでねぇよ
0840nobodyさん04/08/05 03:19ID:???
これで満足?

<?php
$data = file($gdata);
$count = count($data);
for ($i=0;$i<=$count;$i++){
list ($idr,$passr,$lvr,$expr,$char,$winr,$loser,$hpr,$atcr,$defr,$masr,$dexr) = explode( ",", $data[$i]);
if ( $id != $idr ){
if ($i == 1){
print " <OPTION value=\"$idr\" selected>$idr</OPTION>";
}else{
print " <OPTION value=\"$idr\">$idr</OPTION>";
}
}
}
?>
084183604/08/05 03:23ID:???
まだまだ欲求不満ヽ(;´д`)ノ
(ちなみにexplodeてなんだろ)
0842nobodyさん04/08/05 03:31ID:???
正規表現いらないときはsplitよりexplodeのほうが高速

http://php.s3.to/man/function.explode.html
084383604/08/05 03:33ID:???
なるほどさんくす!
しかしエラーが一向に消えない・・・
0844nobodyさん04/08/05 03:34ID:???
94行目付近がこのソースなんだろ?
084583604/08/05 03:36ID:???
88 </TR>
89 </TBODY>
90</TABLE>
91</FORM>
92</CENTER>
93</BODY>
94</HTML>


_| ̄|○
0846nobodyさん04/08/05 03:38ID:???
どこかの } が足りないと思われ
ちなみに838のソースはforを閉じてないぞ
084783604/08/05 03:45ID:???
>>846
あり! '}'忘れてました(*´д`)
ifとforが同じ列だったんで分かりづらかったようです><
有難うございました^^
0848nobodyさん04/08/05 04:34ID:???
一つのプログラム文を複数にわたって使うやりかた・・・
どうだっけ?w
084984804/08/05 04:37ID:???
例えば

print "あいうえお";
print "かきくけこ";

上の二つを呼び出す文
085083604/08/05 04:47ID:???
<?php
print " <TD bgcolor=#ffffff align=center><SELECT size=1 name=getyou>";
$data = file($gdata);
$count = count($data);
for ($i=0;$i>=$count;$i++){
list ($idr,$passr,$lvr,$expr,$char,$winr,$loser,$hpr,$atcr,$defr,$masr,$dexr) = split( ",", $data[$i]);
print $idr;
if ( $id != $idr ){
if ($i == 0){
print " <OPTION value=$idr selected>$idr</OPTION>";
}else{
print " <OPTION value=$idr>$idr</OPTION>";
}
}
}
?>


ヒロシです。
上の文を作ってみましたが、$idrに変数が格納されません・・・。
0851nobodyさん04/08/05 04:53ID:???
>>848
何したいのかわからん

>>850
データに、 $idr に対応する部分あるか?
085285004/08/05 05:01ID:???
解ケツ!
forの不等号が反対でした!
0853初心者04/08/05 05:02ID:???
変数はブラウザを閉じない限りはずっと格納された状態なんでしょうか?
0854nobodyさん04/08/05 05:05ID:???
>>853
スクリプトが実行されている間のみかと(初期化しない限りは
0855初心者04/08/05 05:07ID:???
1ページ目で、変数を$Aに入れる
2ページ目で変数を$Bに入れる
3ページ目で$Aと$Bを表示させる
$Aはカラッポ、$Bにはちゃんと入ってる。。。
という現象です・・・
0856nobodyさん04/08/05 05:08ID:???
>>855
ページを切り替えるときにPOSTなりGETなりCOOKIEなりで渡してやらねば・・・
0857初心者04/08/05 05:10ID:???
ごめんなさい、GET、COOKIEについてはサッパリです・・・
POSTはこの状況じゃ使えないです。
0858nobodyさん04/08/05 05:12ID:???
>>857
とりあえず何がやりたいのかわからんが
example.php?A=$A&B=$B
こんな感じで呼び出してやればいいんでない?
0859nobodyさん04/08/05 05:13ID:???
>>853
サーバサイドとクライアントサイド・スクリプトの
違いについて勉強してこい。してきた上で
「シリアライズしてファイル化」について調べると
幸せになれるかもしれぬ。
0860nobodyさん04/08/05 05:20ID:???
>>855
それも課題なのだろうか…という疑問がちょっと沸いた。
それなら「セッション変数」「hidden」だな。
0861初心者04/08/05 05:27ID:???
とりあえずhiddenで解決できました。
しかしなぜ3ページ目まで変数が渡らないんだろう・・・
0862nobodyさん04/08/05 05:31ID:???
あたり前田のクラッカー
0863nobodyさん04/08/05 05:44ID:???
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting ']' in 〜 on line 35
0864nobodyさん04/08/05 05:58ID:???
print " <CENTER>$idrrが$dmgに餌をあげた!</CENTER><BR>";

この文何かおかしいかな?
これがエラーの原因なんだが
0865nobodyさん04/08/05 06:08ID:???
{$foo}
0866nobodyさん04/08/05 06:49ID:???
sjis馬鹿は死んでも治らない。
0867nobodyさん04/08/05 07:25ID:???
for文を使って数回同じ文を使いたいのですが
$Aが0または$Bが0になった場合抜け出したいのですが
どうすればよいですか?
086886704/08/05 07:34ID:???
for ($i=0;$i<=$A || $i<=$B;$i=$i+0){}
こんな文が使えるなんて初めて知りました><
0869nobodyさん04/08/05 08:08ID:???
> $i=$i+0
キモッ
while(...) でいいじゃん
0870nobodyさん04/08/05 08:15ID:???
>869
お前の方がよっぽどきもいわパゲッ!
0871nobodyさん04/08/05 08:24ID:???
> $i=$i+0
コスモを感じる
0872nobodyさん04/08/05 08:29ID:???
(=゚ω゚)ノィョゥ
クッキーの使い方教えてくださいおながいします

P.S マニュアル読んでもわかんねーよヽ(`д´)ノウワァァァァン
0873nobodyさん04/08/05 08:43ID:???
>>872
これ嫁
http://www.sra.co.jp/people/t-ishii/php_new/php4_new.html
087453604/08/05 09:04ID:???
おはよー。今日もマニュアルひき頑張ろうぜ。

>>869
>>871
お前ら言い過ぎw
0875nobodyさん04/08/05 09:06ID:???
while ($A != 0 and $B != 0)
0876軟式PHP04/08/05 09:07ID:???
>>874
他スレでの名前になってた。・゚・(ノ∀`)・゚・。
0877nobodyさん04/08/05 09:10ID:???
クッキーにa'b"cという文字を保存してそれを出力するとa\\\\\\\'b\\\\ってなってしまうのですが
どうしたらいいでしょうか?
0878nobodyさん04/08/05 09:14ID:???
$data = file($gdata);
$count = count($data);
$fp = fopen($gdata,"w");
flock ($fp,LOCK_EX);
for ($x;$x<=$count;$x++){
list ($idx,$passx,$lvx,$expx,$chax,$winx,$losex,$hpx,$atcx,$defx,$masx,$dexx) = split( ",", $data[$x]);
if ($x == $i2){
$expx = $expr;
$winx = $winr;
$losex = $loser;
fputs($fp, $data[$x]);

}elseif($x==$i3){
$expx = $exprr;
$winx = $winrr;
$losex = $loserr;
fputs($fp, $data[$x]);
}else{
fputs($fp, $data[$x]);
}
fclose ($fp);
}

データが消えてしまう・・・
何がおかしいんだろうか・・・
0879軟式PHP04/08/05 09:14ID:???
magic_quotes_gpcをOFFにしてみれ。
0880軟式PHP04/08/05 09:19ID:???
とりあえず添削を。
for ($x;$x<=$count;$x++)
$x=0ぐらいしる。

で、データが消えてしまうってどういう意味で言ってるのか分からないけど
fopen($gdata,"a")でやってみれ。
0881軟式PHP04/08/05 09:22ID:???
あとsplit(",",rtrim($data[$x]));も試してみちょくれ。
0882nobodyさん04/08/05 09:49ID:???
クッキーに保存されたa"b'cを抽出して出力するとa\\\\ になってしまうのはなじぇ?
0883軟式PHP04/08/05 09:56ID:???
>>882
エスケープされるから( ´−`)
0884nobodyさん04/08/05 09:59ID:???
どうやったらうまく出力できるでしょうか?
0885nobodyさん04/08/05 10:15ID:???
magic_quotes_gpcをoffにすることは できません。
で、stripslashesを使ってもうまくいきません。。。
0886nobodyさん04/08/05 10:21ID:???
>>862
懐かしいよ・・
0887nobodyさん04/08/05 10:23ID:???
>>886 >>862
学校の先生が言ってた
0888軟式PHP04/08/05 10:26ID:???
>>885
\だけ消したいならreplace使って消すといいよ。
0889nobodyさん04/08/05 10:35ID:???
>>885
>>magic_quotes_gpcをoffにすることは できません。
他の処理で使うからかな?それともoffにしたくてもphp.iniをいじれないからかな?

後者なら.htaccessで
php_flag magic_quotes_gpc Off
これも.htaccessが使用可能だければだけど
0890nobodyさん04/08/05 10:38ID:???
はい。クッキーにはa'b"cが保存されていて
$a = str_replace("\\","",$a);とやってみましたが
表示される文字はa'b になってしまう。。だぶるくおーてーしょん以降が表示されないのです。。
0891nobodyさん04/08/05 10:49ID:???
除去してもいいんじゃない?
$a = str_replace("\"", "", $a);
0892nobodyさん04/08/05 10:52ID:???
( ´゚д゚`)えーーー
除去でいいの?
なんか不安なんだけど
クッキーの文字自体に\があった場合はどうするのよ
0893nobodyさん04/08/05 11:03ID:???
ちなみにみなさんはフォームからの入力データをクッキーに保存させるときってどうしてますか?
0894nobodyさん04/08/05 11:10ID:???
俺は全てDB任せですが
0895nobodyさん04/08/05 11:13ID:???
>>894
クッキーもDBにお任せですか?
0896nobodyさん04/08/05 11:14ID:???
>>895
クッキーには最低限の情報を与えます
例えばID
あとはクッキーからIDを読み取り、そのIDの情報をDBから取り出します
0897nobodyさん04/08/05 11:15ID:???
ID変えたら終わりだろ
0898nobodyさん04/08/05 11:18ID:???
>>896
ホームラン級のバカだな
0899nobodyさん04/08/05 11:18ID:???
>>893
大事な情報なら自作暗号化アルゴリズムで暗号化します
0900nobodyさん04/08/05 11:19ID:???
>>896
コスモを感じる
0901nobodyさん04/08/05 11:24ID:???
あとは空気から雰囲気を読み取り、その雰囲気の情報を経験から取り出します
0902nobodyさん04/08/05 11:25ID:???
COOKIE嫌いなん?(俺も嫌いだが…)
PHP3か?
4ならSESSIONでも良いじゃないか。
0903nobodyさん04/08/05 11:37ID:???
俺もクッキーは大嫌いだね。
セッションが一番いい。
まぁセッションもクッキー使ってるわけだけど
0904nobodyさん04/08/05 12:27ID:???
何で嫌いなん?の何が嫌いなん?
090588204/08/05 12:38ID:???
どうやっても無理でしたので896さんの方法でやることにします。
結果は同じなのでま、いいか
0906nobodyさん04/08/05 12:43ID:???
>>892
urlencodeでも汁
0907nobodyさん04/08/05 12:45ID:???
>>905
これでどう?
if (get_magic_quotes_gpc()) {
$a = stripslashes($a);
}
0908nobodyさん04/08/05 12:48ID:???
>>878
}
fclose ($fp);
}
  ↓
}
}
fclose ($fp);
レス数が900を超えています。1000を超えると表示できなくなるよ。