【PHP】初心者コーナー 2 Released
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/03/24 03:06ID:???PHPに関するアホな質問はここでやれ。今回からMySQLも受付開始。
アホな質問であっても詳しく質問すること。
PHPが大嫌いなPerl信者もぜひご参加ください。
前スレ
http://pc2.2ch.net/test/read.cgi/php/1011550860/l50 関連>>2-10
普通の質問はこっちな、【PHP】質問スレッド Part7
http://pc2.2ch.net/test/read.cgi/php/1044478561/l50
0319nobodyさん
03/04/13 04:28ID:???C++とかJavaとかは
if(hoge)
{
int a;
}
とかするとaは自分の生まれたブロックとその子孫ブロックでのみで生きられる。
0322nobodyさん
03/04/13 18:22ID:???Part8立てようと思ったけど、ホスト規制で立てられなかったので
誰か親切でエロイ人立ててください。
おながいします。
↓現行スレ
【PHP】質問スレッド Part7
http://pc2.2ch.net/test/read.cgi/php/1044478561/l50
0325nobodyさん
03/04/13 20:37ID:???0326nobodyさん
03/04/14 00:55ID:???【PHP】質問スレッド Part8
http://pc2.2ch.net/test/read.cgi/php/1050249148/
0328キッチン排他@職場
03/04/14 02:39ID:nGNbFDFK卵が先か鶏が先かって状態ですよね?
今の所、そんな複雑なスクリプトを書くスキルがないので、デッドロックで
困った時に、困る事にします。
ところでファイルロックについて更に質問なのですが、
$fp = fopen($filename,"a");
ならばロックした方が良いって思うのですが、
$file = file($filename);
とかの場合もロックした方が良いのでしょうか?
今作ってるスクリプトが、おおまかな流れとして以下のような感じなのです。
1. file()関数で現在あるデータを配列に代入
2. foreach()関数でpostされたデータと現在あるデータを照合
3. なければfopen()関数で開いて排他ロック
4. fputs()関数で書き込んでから、ロック解除してクローズ
やはりfile()関数を使った直後にロックを掛けた方が良いのでしょうか?
0329キッチン排他@職場
03/04/14 02:47ID:nGNbFDFKって事は、file()関数の直後でロックする事自体ムリって事ですか・・・
マニュアルちゃんと嫁ですね。
すいません。
0330nobodyさん
03/04/14 03:31ID:???で、その例だと重い処理やユーザが多い場合トラブる。
Aがデータ読む→Bもデータを読む→Aがデータ更新→Bもデータ更新
の時、BはAによる変更がなされていない古いデータを参照、処理している事になる。
fopen→施錠→読む・処理・書き込み→close が正解。
開錠は?と思ったなら手元の本のロック関係の項目を読み返せ。
0331キッチン排他@職場
03/04/14 04:52ID:nGNbFDFKレスどうもです。
> 開錠は?と思ったなら手元の本のロック関係の項目を読み返せ。
実はまだPHPの本を持ってないんです。(webだけでなんとかやってるんですが)
近い内に、一冊PHP本を買ってみます。
修正前と修正後のソースを晒してみます。
[before]
http://www.kari.to/upload/source/d/1444.txt
[after]
http://www.kari.to/upload/source/d/1443.txt
こんな感じになってますが、ヤバイでしょうか?
0333nobodyさん
03/04/14 11:19ID:f50BSraCchomd関数だとどうやらファイルしか扱えないみたいだし、mkdir関数は既存
のディレクトリに対してしかパーミッションの設定が聞かないようなので。
やりたいことは、ファイルのアップロード時に一時的にディレクトリのパーミッションを変更し、
アップが終了したら元に戻すってことです。環境はredhat Apache php4.3.1です。
0334nobodyさん
03/04/14 11:21ID:???ファイルをオープンしながらその中でいろいろ処理しつつ、
ファイルに書き込んでいくなんて処理はまずいかな?
例えば親記事に返信できる掲示板とかで、
・listでログを配列に全部読み込む。
・wでログファイルオープン
・forで配列をまわす。
・すでにあるログ書き込み。
・返信の親記事発見。
・いろいろと処理(置換したり、入れ替えたり)して親記事と子記事書き込み。
・残り書き込み
・close
こういう場合は予め配列操作しておいた後で、一気に書き込んだ方が
いいのかな?
0335動画直リン
03/04/14 11:45ID:ri8n5kTm0336キッチン排他
03/04/14 16:04ID:kFyvhyAaレスどうもです。
http://www.kari.to/upload/source/d/1445.txt
クローズしてからメール送信するようにしました。
postされたデータ(A)と現在あるデータ(B)を照合して、BにAがある場合は
エラーを表示させてBにAを反映させず、BにAがない場合は、BにAを追加して
メールを送るというのがやりたかったのですが、やりたい事は出来ました。
施錠・開錠の位置は、これで問題ないのでしょうか?
それと、ちゃんとロックされているかの確認って皆さんどうされてるのでしょうか?
>>333
1.一時的にディレクトリを作って、その中にアップロード
2.アップ完了したら、ファイルを任意のディレクトリへ移動
3.1.で作ったディレクトリを削除
ってのはどうでしょう?
スマートじゃないし、PHP始めたばかりの人間の戯言なので的外れなレスを
返しているかもしれませんが・・・
既存のディレクトリのパーミッションを変える関数があったらごめんなさい。
0337nobodyさん
03/04/14 16:17ID:R0bR1Nwj0338nobodyさん
03/04/15 08:49ID:???同じ変数名を使うことを前提としているかどうかだと思うんだが。
また、変数を定義する順番も。
仮にスベテのブロック内でスコープが適用されるとしても、
$hoge = NULL;
function foo(){
if (true) {
}
}
という形の時に、if内に$hogeという局所変数を追加するような書き方
(たぶん>>293の書き込みがあったから、
こういう書き方をしたいと思ってると決めつけてるんだと思うが)
をするのは問題外だが、
function foo(){
if (true) {
$hoge =256;
}
}
というような形が先にあった場合、
$hogeのスコープを最小限に出来れば、
今後foo()内にスコープを持つ変数や
グローバルスコープの変数を追加する時に、
"うっかり"名前が重複してエラーになる可能性は低くなる。
特に複数人で開発を行う場合はありえない事ではない。
(もちろん注意して、重複しないようにするのが好ましいが)
0339nobodyさん
03/04/15 18:01ID:???0340nobodyさん
03/04/16 00:54ID:???>グローバルスコープの変数を追加する時に
>複数人で開発を行う場合はありえない事ではない
関数名が重複しないように悩むことはあっても、
ローカル変数が把握できなくて悩んだことはないね。
それに、関数内に追加したくなるglobal変数なら全員把握するもんでは ?
大体、何のために関数化しているの ? php の開発が特殊なのかな...
0341nobodyさん
03/04/16 01:18ID:???>大体、何のために関数化しているの ? php の開発が特殊なのかな...
複数人で作業を分担すると、個々の能力が違うわけで
開発規模が大きくなればなるほど、いびつなコードになっていく…ことがあった。
0343nobodyさん
03/04/16 07:32ID:???最初の設計が悪いんだよ。
0344nobodyさん
03/04/16 09:48ID:???0345山崎渉
03/04/17 12:01ID:???0346nobodyさん
03/04/18 02:01ID:???0347佐々木健介
03/04/18 02:05ID:???/_ |
/. \ ̄ ̄ ̄ ̄|
/ / ― ― |
| / - - |
||| (5 > |
| | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | | | ┃─┃| < こんなサイトを見つけた
|| | | | \ ┃ ┃/ \ 正直、スマンカッタ
| || | |  ̄ \_________
http://freeweb2.kakiko.com/mona/
0349nobodyさん
03/04/19 13:53ID:PcDRg1R2その配列にメソッドから要素を追加したいのです。
class Mona {
var $arr = array();
function Mona(){
}
function setValue($value){
//array_push ($this->$arr,$value);
$this->$arr[] = $value;
echo(count($this->$arr));
}
}
$m = new Mona();
$m->setValue("si");
$m->setValue("giko");
どうすればよいのです。
0350nobodyさん
03/04/19 14:07ID:???$this->arr[] = $value;
0351nobodyさん
03/04/19 14:32ID:???array_push ($this->$arr,$value);でもエラーだということは、
$arr = array();じゃだめぽですか?
0352nobodyさん
03/04/19 14:49ID:???$this->$arr[] = $value;
$this->arr[] = $value;
0354nobodyさん
03/04/19 17:55ID:UAxx4/l2abc.htmlに、改めて指定してあるHTMLタグを
書き込んで、
そのファイルを閉じるにはどうすればいいのでしょうか?
いろいろ調べたが分からんので誰か教えてください〜
0356354
03/04/19 18:09ID:UAxx4/l2要はabc.htmlというファイルに指定のタグを書き込み
たいんです。
たとえば、100とかいう数字程度なら分かるんだけど、
タグみたいに長い文字数の場合はどうすればいいのか・・・。
0357nobodyさん
03/04/19 18:12ID:???$data = file("abc.html");
$fp = fopen("abc.html","w");
fwrite($fp,"<html>");
foreach($dat as $data)
{
fwrite($fp,$dat);
}
fwrite($fp,"</html>");
fclose($fp);
ぱっと思いついたのはこれ。
0358356
03/04/19 18:32ID:UAxx4/l2レスサンクスです。
ただ、perlでは下記みたいな簡単な感じで出来るみたいなんだけど、
phpでもできないですかね?
マジでPHP初心者なんでforeachを使う理由がわからないっす。
open (INDEX, ">index.html") ;
print INDEX "<HTML>\n<HEAD>\n";
print INDEX "<TITLE>$title</TITLE>\n";
print INDEX "</HEAD>\n";
print INDEX "</html>\n";
close (INDEX) ;
0359nobodyさん
03/04/19 18:34ID:???やっぱり意味不明だよね。
>>たとえば、100とかいう数字程度なら分かるんだけど、
じゃ、この分かるんだけど。っていう分かるを書いてみてよ。
0360356
03/04/19 18:38ID:UAxx4/l2$count = "100";
fputs($fp, $count);
fclose($fp);
じゃねーの?
0361動画直リン
03/04/19 18:40ID:PZJVQOkw0362356
03/04/19 18:42ID:UAxx4/l2『<HTML><HEAD><TITLE>title</TITLE>
</HEAD></html>』っていうタグを入れたいんだけど。
0363nobodyさん
03/04/19 18:44ID:???>マジでPHP初心者なんでforeachを使う理由がわからないっす。
file() を調べてみたら、分かるよ。
>>357
は、とあるデータに、htmlタグで囲むだけのサンプルであって、無理に
file を使うこともないし、foreach() を使うことも当然なし。
中に何書きたいか?でしょ。
たんに、
>>358
のようにしたきゃ、fopen() して、fwrite() して fclose() すりゃいい。
ここは、PHP初心者というレベルのものでもないと思うけどね。
だから、PHP初心者ではなく、全部初心者なんでしょ?
なら、素直に、そう書けば、それなりなフォローもつくでしょう。
0364nobodyさん
03/04/19 18:48ID:???$fp = fopen("abc.html","w");
$data = "<HTML><HEAD><TITLE>title</TITLE></HEAD></html>";
fwrite($fp,$data);
fclose($fp);
エラー処理はしてないけど、まぁ。
0365nobodyさん
03/04/19 18:52ID:???0366356
03/04/19 18:54ID:UAxx4/l2なるほど。ありがTO〜〜。
ちなみにまぁPHP初心者をプログラム初心者と同義で使ってたよ。
言葉足らずってやつだ。
0368356
03/04/19 18:57ID:UAxx4/l2ま、これは本かなんかで調べるダス。
教えてくれたらうれP〜が
0370nobodyさん
03/04/19 18:58ID:???http://www.php.net/manual/ja/
0371356
03/04/19 19:02ID:UAxx4/l2たとえばタグが<FONT size="5">とかだったら、
$data = "<FONT size="5">";
という風に""がゴッチャにならないのでしょうか?
0372356
03/04/19 19:04ID:UAxx4/l2なるほど、そうなんだ。勉強なりました。どもです。
0375356
03/04/19 19:06ID:UAxx4/l20378nobodyさん
03/04/19 19:09ID:???データベース接続中にエラー表示でexit;すると、
自動的に切り離ししてくれるんですか?
0380nobodyさん
03/04/19 19:11ID:???0381bloom
03/04/19 20:10ID:PZJVQOkw0382nobodyさん
03/04/19 21:23ID:+e8LI5YY素敵な お相手が貴方を待っています!
もちろん 女性は完全無料です!
http://www.sweet.st
0383動画直リン
03/04/19 21:41ID:PZJVQOkw0384tantei
03/04/19 22:15ID:???●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●別れさせ工作
あらゆる手段を使ってターゲットを別れさせます!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
その他人生相談からどんなお悩みでも解決いたします!!
直通 090−8505−3086
URL http://www.h5.dion.ne.jp/~grobal/
メール hentaimtt@k9.dion.ne.jp
■グローバル探偵事務所
0385山崎渉
03/04/20 05:58ID:???( ^^ )< ぬるぽ(^^)
0386山崎渉
03/04/21 00:46ID:???( ^^ )< ぬるぽ(^^)
0387nobodyさん
03/04/21 12:56ID:AYv3e7jaNAME指定がないので$HTTP_POST_VARSで受信できません。
なにかPOST使用で方法ないですか?
0388nobodyさん
03/04/21 14:21ID:5cXc42kkphpの処理後に特定のページに強制的にジャンプさせる方法はないでしょうか?
html側での話かもしれませんが関連本を読んでも分かりませんでした。
0389nobodyさん
03/04/21 14:48ID:6OPNxtTdhttp://www.php.net/manual/ja/function.header.php
見よ
0390nobodyさん
03/04/21 14:56ID:???0392動画直リン
03/04/21 15:41ID:ukRLYPuy0393nobodyさん
03/04/21 15:55ID:AYv3e7ja携帯からのPOSTなんでして
ただphpinfo();だけをかいたら携帯の方に
出力してしまってエラーになると思います。
結果をファイルに保存とか可能でありますか?
0394nobodyさん
03/04/21 17:08ID:???php.ini
; Always populate the $HTTP_RAW_POST_DATA variable.
always_populate_raw_post_data = On
0395nobodyさん
03/04/22 10:24ID:XwTWu/DF当方phpinfo();を使用してバージョンみてみますと
PHP Version 4.2.3となります。
php.iniをみてもalways_populate_raw_post_dataと
いう項目が存在しません。
追加して書いてもよろしいでしょうか?
データベースにある得点のランキングを作ろうと
してましてそのランキングに対して順位をつけるには
上位からカウントすればいいんですが同じ点数があった
時の処理の方法がわかっておりません。ご教授して
いただければうれしいです
0396bloom
03/04/22 10:26ID:+bjLBjB/0397nobodyさん
03/04/22 14:14ID:XwTWu/DFよりPOSTでもGETでも読み込めるようになりました。
今データベースの値の最大値を取得する構文を考えて
います。MySQLのコマンドプロンプトからでは
select max(SCORE) from rankで最大値が求められますが
これをPHPから取得するにはどうのようにするのでしょうか?
0398nobodyさん
03/04/22 14:22ID:???mysql_connect()
mysql_select_db()
mysql_query()
mysql_fetch_***()
マニュアル嫁
0399bloom
03/04/22 14:27ID:+bjLBjB/0400nobodyさん
03/04/22 14:45ID:XwTWu/DFSQLでMAXとかCOUNTとか
の結果を取得方法がわからないんです。
0401nobodyさん
03/04/22 15:07ID:???http://jp.php.net/manual/ja/ref.mysql.php
の例で分かりませんか?
0402nobodyさん
03/04/22 15:15ID:XwTWu/DFよくみてるんですがね。今のところ
$TOP=mysql_query("select max(SCORE) from rank");
$TOP=mysql_fetch_object($TOP);
print_r($TOP);
という構文で
stdClass Object ( [max(SCORE)] => 15 )
と最大の15はとりだせてるのですが
欲しい値は15だけですからsplitを
つかって分解しないといけないんですかね。
もっとスマートなやり方があるとは思いますが。
0404nobodyさん
03/04/22 15:33ID:???$TOP=mysql_query("select max(SCORE) as max from rank");
$TOP=mysql_fetch_object($TOP);
echo $TOP->max;
もしくは、
$TOP=mysql_query("select max(SCORE) as max from rank");
$TOP=mysql_fetch_array($TOP);
echo $TOP['max'];
あるいは、>>403
0405nobodyさん
03/04/22 15:34ID:XwTWu/DFすごいすごい、やっと表示できました。
これで先にすすめることができる。
ありがとうございます。
次の目標的にはPOSTで送られてきた
データが現在何位という表示をさせることです。
また、時間かかりそう
0406nobodyさん
03/04/22 22:32ID:tN1GJC+tそのPHPファイルにたどり着かせることは可能でしょうか?
HTTP_REFERERを使うというところまではご教授してもらったのですが
だんだんずれてきたんで移動してきました。
ご教授ください
0408PHPよろ
03/04/23 17:59ID:???・BBBB
・CCCC
とあり、AAAAをクリックすると
・AAAA
内容内容内容内容内容
内容内容内容内容内容
・BBBB
・CCCC
さらにCCCCをクリックすると
・AAAA
内容内容内容内容内容
内容内容内容内容内容
・BBBB
・CCCC
内容内容内容内容内容
内容内容内容内容内容
となり、AAAAをクリックすると
・AAAA
・BBBB
・CCCC
内容内容内容内容内容
内容内容内容内容内容
となるPHP教えてください。
javascriptで可能ですが、できるならばPHPで、と思っての質問です。
0409nobodyさん
03/04/23 19:05ID:???<a href="myself.php?flag_a=on&flag_b=off&flag_c=off">AAAA</a>って感じでフラグ付きで呼び出して、
myself.phpではflag_aの値をチェックして、
<a href="myself.php?flag_a=off&flag_b=off&flag_c=off>AAAA</a>を生成。
これをBBBB,CCCCに対しても行う。
DDDDが出てきた時に面倒だと感じたらもっとキレイなやり方を次に考えてみる
0410nobodyさん
03/04/23 21:25ID:???アホ
0412質問さん
03/04/23 22:53ID:m9D4gJ4YPerlであったqq();のような関数はPHPにはないのでしょうか?
エスケープシーケンスで\"とかやるのはHTMLが見にくくなって嫌なのですが・・・。
よかったら誰か教えてくださいお願いします。。。
0413nobodyさん
03/04/23 23:41ID:???0414nobodyさん
03/04/23 23:48ID:pKnrziPvない(と思う)。
つかHTMLのクォートは''とシングルクォートでは駄目なの?
文法的にはどっちでも構わないから。
折れダブルクォートの変数展開も使わないで、基本的にドットで
結合するスタイルだから、エスケープがどうとかあんまり気になんない
0416nobodyさん
03/04/24 04:51ID:vt0uN1CMデーターベースの持続的接続ってどんな状態だ?
CGI=リクエストごと
サーブレット=常駐
PHP=KEEP_ALIVE が終了したらexit?
なんでしょうか。PHP本を何冊も立ち読みしたけどわからない。
使用した感じではリクエストごとにdb切断されているように感じるのですが。
0417nobodyさん
03/04/24 04:54ID:x2ip/9xn■ このスレッドは過去ログ倉庫に格納されています