【PHP】質問スレッドpart19【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/07/16 07:12ID:KvHeypq/・新規質問の方は上げてください。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
抜けているものがあったら補足願います
0757nobodyさん
04/08/03 17:31ID:???750です。
回答ありがとうございます。
メモリにキャッシュ、というのは、2度目以降の読み込みを想定していました。
functionだとメモリ上に常駐してくれるのかな、と。
includeはテンプレートを読み込むっていうイメージがあるもんで。
> 素の処理コードをまんまincludeしてるのかな?
そうです。
よく考えると、functionの方がコードとしては追いやすいですよね。
外部へは時間の関係で今のまま出しますが、
少しずつ、手直ししていくことにします。
重ねてありがとうございました。
0759nobodyさん
04/08/03 18:08ID:???1文ずつ覚えていったり一つ何かを作ろうとしたり・・・
俺の場合は本買ってまず掲示板作ろうととりかかりましたが
勉強のやり方はあっているでしょうか?
0761759
04/08/03 19:06ID:???ロックのかけ方もわからないし、クッキーすら全く・・・
出来たものも微妙です・・・
0762軟式PHP
04/08/03 19:13ID:???ロックの概念とか頭に入れてるだけでもマシな方かと。
0764Imo ◆.jC7ANgFY.
04/08/03 19:27ID:???「掲示板に書き込む」
「内容のチェック」
「必須項目チェック」
「内容が空欄であればエラー」
「最大文字長チェック」
「それぞれにあった文字数以上であればエラー」
「不正文字チェック」
「\x00を除去する」
「改行を\nに統一する」
「\r\nを\nに、\rを\nに置換する」
「問題のある文字(タグなど)を置換する」
「改行をタグに変換」
「ファイルの書き込む」
「ファイルを開く」
「ファイルをロックする」
「ファイルを読み込む」
「データを追加する」
「ファイルに書き込む」
「ファイルのロック解除」
「ファイルを閉じる」
1つ1つの細かいところは簡単。でも、漠然としてるから難しく感じる。
まぁとはいってもロックはちゃんと理解していないとだめだけどね。
# でもちゃんとしたロックをできている人はphpプログラマーでは少数
# 今度ホームページでも作ってそれについて書こうかな、
0765nobodyさん
04/08/03 20:12ID:???0766nobodyさん
04/08/03 20:16ID:???>メモリにキャッシュ、というのは、2度目以降の読み込み
この辺あたりから同じプログラムが連続して処理された場合の
キャッシュのようなものがあると考えてるのだと思われるのだが、
PHPはJavaのように何らかのアプリケーションサーバが常に
起動してる訳じゃなくて、基本的には1回こっきりで閉じている。
但しその1回の中での同一の処理については、効率化のための
処理が行われている。
httpdのモジュールとして運用した場合は若干違うのだが、
CGI版の挙動を調べてみると判りやすいだろう。
# CLIの方がもっと判りやすいか。
「同じプログラムが連続して処理された場合のキャッシュ」については
PHP Accelerator、Zend Performance Suite(Zend Accelerator)、
PECLに移された APCなどのプロダクトが関連するので、それを調べること。
0767745
04/08/03 20:47ID:???第三引数を指定しない場合にエラーになってしまいます。
function mb_ereg($str1,$str2,&$str3=""){
とするとエラーになってしまうし。
どうしたものでしょう?
参照渡しの場合は初期値の設定は不可?
0768Imo ◆.jC7ANgFY.
04/08/03 21:19ID:???完全な実現は無理だと思うのですが、とりあえず
mb_eregを呼び出すときにmb_ereg($str1, $str2, &$str3);
定義の方をfunction mb_ereg($str1,$str2,$str3="")
にすることによってある程度実現は可能です。
0770nobodyさん
04/08/03 21:34ID:29Vzu5Ve0771nobodyさん
04/08/03 21:42ID:???わざわざ日本語に訳してくれてんだし
0773770
04/08/03 21:49ID:29Vzu5Ve0774nobodyさん
04/08/04 15:24ID:???でロックかけたあと、ロックを外すにはどうすればいいのですか?
0776774
04/08/04 15:32ID:???0777nobodyさん
04/08/04 15:39ID:+l+GCo7r0780nobodyさん
04/08/04 16:43ID:T7C0bXmt0781nobodyさん
04/08/04 16:47ID:???$no = 5;
for ($i=$no ; $i >= 0; $i--){
print $i;
}
?>
これでダメなのか?
0782nobodyさん
04/08/04 16:54ID:T7C0bXmtフォームの処理は
<?php
echo $_POST["名前"];
?>
でいいんですよね
0783軟式PHP
04/08/04 16:59ID:???method属性指定してなかったらデフォはGETで送られるし。
0784nobodyさん
04/08/04 17:03ID:???フォームで入力した値を取得して、
適正な値(正の数値、整数等々)かどうか確認して、
for構文を使って初期の値(0)から、入力値まで
カウントアップ(例示のでは+1)して、echoする。
初期値とカウントアップ、適正値の条件などは容易に
変更できるようにパラメータ設定としておくのが定石。
0785軟式PHP
04/08/04 17:03ID:???$iNo = intval($_REQUEST["名前"]);
for( $i = 0; $i <= $iNo; $i++ )
{
print $i."<br>";
}
?>
一応答えおいとく。
0786nobodyさん
04/08/04 17:04ID:T7C0bXmtフォームから正の整数を入力して送信すると、1からその数字までの整数の
並び方を表示するPHPスクリプトを作れ。フォームの入力はテキストフィール
ドやメニューを使ってもよい。入力が0以上かどうかのチェックも行え。
0787軟式PHP
04/08/04 17:05ID:???0788nobodyさん
04/08/04 17:07ID:T7C0bXmtさっきのできました!
でも”5”の指定なしはどうすればいいんでしょう・・・?
0789nobodyさん
04/08/04 17:08ID:T7C0bXmtできました!!どうもありがとうございました!!
0790nobodyさん
04/08/04 17:14ID:???こチな!のAA貼っとけや
0791nobodyさん
04/08/04 17:16ID:T7C0bXmt4人で・・・
すみません。
0792nobodyさん
04/08/04 17:16ID:???課題を貰ってるのは君らだけなんだから、
授業を受けてる生徒内で解決するか
その課題に書いてある条件をここに列挙しろよ。
マルチ先にしか書いてない条件なんて、他の人は判らん。
でも先生も、このスレとPHP-usersと丸投げMLぐらいは読んでると思うぞ。
0794nobodyさん
04/08/04 17:41ID:???http://pc5.2ch.net/test/read.cgi/php/1047225437/420-421
0795nobodyさん
04/08/04 17:59ID:???0796軟式PHP
04/08/04 18:09ID:???0797nobodyさん
04/08/04 18:11ID:???普通はCとかスタンドアロンアプリケーションなんだけどな
0798nobodyさん
04/08/04 18:12ID:???0799nobodyさん
04/08/04 18:16ID:???0800nobodyさん
04/08/04 18:17ID:???0801軟式PHP
04/08/04 18:19ID:???0802nobodyさん
04/08/04 18:20ID:???IDENTIFICATION DIVISION
0803nobodyさん
04/08/04 18:28ID:???0804nobodyさん
04/08/04 18:30ID:???加齢臭オヤジども
0806nobodyさん
04/08/04 18:38ID:???誰かに教えてもらう時代になったんだな
0807nobodyさん
04/08/04 18:41ID:+l+GCo7r盗まれた場合に同一ドメインまたはサーバー上のPHPが利用出来れば
$_SESSIONの内容を拾得する事が可能であると想うのですが、
このリスクをさける為にはsession.use_only_cookies=1にする以外の
手はないのでしょうか?
0808nobodyさん
04/08/04 18:48ID:???>同一ドメインまたはサーバー上のPHPが
この辺の日本語がおかしい
0809nobodyさん
04/08/04 18:50ID:???0810nobodyさん
04/08/04 18:56ID:???0811nobodyさん
04/08/04 19:01ID:???[<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実際のブラウザ上でアンカーのhrefは何になってる?
0813811
04/08/04 19:10ID:???本当迷惑かけてごめんなさい・・・釣ってきます、、
0814nobodyさん
04/08/04 19:20ID:???0815nobodyさん
04/08/04 19:36ID:5xfxrndz普通にINSERT文をクエリー発行すると
複数ユーザに同時に書き込みされた時に
DBアクセスが著しく遅くなってしまいます。
同時アクセスを防ぐ方法として、
一個のフラグのようなファイルを作ってみたのですが
どうも確実に同時書き込みを防いでくれません。
その辺を便利に防いでくれる関数はないでしょうか?
それか、便利な防ぎ方が載っているサイトがあれば教えて下さい。
0816nobodyさん
04/08/04 19:53ID:???0817nobodyさん
04/08/04 19:55ID:???>>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:???ブロックされた人には
「只今、混みあっています。少々時間が経ってから再度アクセスください。」
とかってエラー出すのだろうか?
0822807
04/08/04 20:55ID:+l+GCo7r他に個人を識別するのに役に立つ情報などは何かあるのでしょうか?。
>>808
ハード一台で複数のドメインを管理している貧乏サーバーとか
あるかな、とひねくれた発想を^^;。
サーバー上でSESSIONがファイルとして保存されている場所が
同じであればドメインが異なってもアクセス出来てしまうのでは
ないかという事も考えてみました^^;;。
ひねくれすぎですね・・・。
0823nobodyさん
04/08/04 20:59ID:???とか。
仕様的にはMACアドレスだけでも(ルータレベルまでは)識別できるはずだけど、
インターネット上には同じMACアドレスが山ほどあるみたいだからね。
08241
04/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:???> Postgresの方には、同じような役割の関数はないのでしょうか?
sybase_data_seek
0827nobodyさん
04/08/04 21:25ID:???PEARのDB.php使って結果を配列に格納すれば無問題
0829nobodyさん
04/08/04 22:29ID:???文字コードもEUC-JPにコンバートしてるのですが、たまーに文字化けしてしまいます。
ご教授よろしくお願いします。
0831nobodyさん
04/08/04 23:23ID:???PostgreSQLを使うのにsybaseの関数を何故使うのか、ということだと思うのだが。
元質問の話に戻すと、まぁ、なんだ。おまいもマニュアル嫁。
PostgreSQL関係の関数って高々70個くらいだろ。
0832nobodyさん
04/08/05 00:46ID:jHqBsTPNとりあえずここ見て設定確かめろ
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:???特にミスっている場所ないのですが・・・
0838836
04/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>";
}
}
?>
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>";
}
}
}
?>
0841836
04/08/05 03:23ID:???(ちなみにexplodeてなんだろ)
0842nobodyさん
04/08/05 03:31ID:???http://php.s3.to/man/function.explode.html
0843836
04/08/05 03:33ID:???しかしエラーが一向に消えない・・・
0844nobodyさん
04/08/05 03:34ID:???0845836
04/08/05 03:36ID:???89 </TBODY>
90</TABLE>
91</FORM>
92</CENTER>
93</BODY>
94</HTML>
_| ̄|○
0846nobodyさん
04/08/05 03:38ID:???ちなみに838のソースはforを閉じてないぞ
0848nobodyさん
04/08/05 04:34ID:???どうだっけ?w
0849848
04/08/05 04:37ID:???print "あいうえお";
print "かきくけこ";
上の二つを呼び出す文
0850836
04/08/05 04:47ID:???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に変数が格納されません・・・。
0852850
04/08/05 05:01ID:???forの不等号が反対でした!
0853初心者
04/08/05 05:02ID:???0855初心者
04/08/05 05:07ID:???2ページ目で変数を$Bに入れる
3ページ目で$Aと$Bを表示させる
$Aはカラッポ、$Bにはちゃんと入ってる。。。
という現象です・・・
■ このスレッドは過去ログ倉庫に格納されています