【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
抜けているものがあったら補足願います
0730nobodyさん
04/08/02 23:17ID:lHZ4GoiW千通ちかいメールを送る必要があります。
Mail::send()を使おうと思ってるんですが、sendmailで送るのと、smtpで送るのとで、速度面ではどちらが高速でしょうか?
ちなみに、MTAはqmailです。
0731nobodyさん
04/08/02 23:41ID:d5GNjYEUfor分を使ってカウントしようとしたのですが、文字そのものをカウントできなくて困ってます。
よろしくお願いします。
0732nobodyさん
04/08/02 23:42ID:8RF4q1S0$to = '[email protected]';
$bcc = "[email protected]";
$from = "[email protected]";
$title = "sampletitle";
$headers = "From: $from\r\n";
$headers .= "Bcc: $bcc\r\n";
$msg = file("./mailtxt.txt");
$msg = implode("",$msg);
mb_send_mail($to,$title,$msg, $headers);
のように書いてtoの他にbccでも送信したいのですが
送信されません、マニュアルをみるとmb_send_mail()はヘッダの区切りが\nになっていましたが
mail()の方は\r\nになっていましたので両方試しましたがダメなのはそこではなさそうなのですが
どこがおかしいかご指摘いただけますか。
旧サンのコバルトのraQ550、Apache/1.3.20+php4.0.6です。
0733nobodyさん
04/08/02 23:47ID:???スクリプト内部に"->"という記述があるのだけども
これってどんな意味があるのかどうかご教授を...
余りにも漠然としたワードなんで
ググっても全くヒットしなかったデスん('A`)
0734nobodyさん
04/08/03 00:00ID:7JP71wHzhttp://www.php.net/manual/ja/language.oop.php
0735nobodyさん
04/08/03 00:02ID:???出てくるんでないかあい?
0737nobodyさん
04/08/03 00:57ID:???なるほど!
クラスを用いた時のメンバ変数やメソッドにアクセスする為の
演算子という事が少しずつ分かってきました
激しく目から鱗です、謝々!!
0738nobodyさん
04/08/03 01:30ID:???0739nobodyさん
04/08/03 02:10ID:OM2Aei59$this->オブジェクト->メンバ名
としても
Object->メンバ名
となってしまうんですが、どこがおかしいのでしょうか?
0740nobodyさん
04/08/03 02:22ID:Q+9yurzP具体的なエラーメッセージor挙動を書きなさい
0741739
04/08/03 02:29ID:OM2Aei59設定情報を格納するクラスをつくっていて、
他のクラスのメンバにそのクラスのオブジェクトを生成・代入し、
print "なんたらかんたら$this->オブジェクト->メンバ名";
みたいな感じで出力させたところ、何故か出力が
Object->メンバ名
になってしまうのです。
一応C++をやっていたのですが、PHPではpublicなメンバみたいなのは使えなかったりするのでしょうか?
0742軟式PHP
04/08/03 09:13ID:???/*-----親クラス-----*/
class Oya{
//メンバ変数
var$musukoObj;
//メンバ関数
function Oya(){
$this->musukoObj = new Musuko;
print$this->musukoObj->GetData();
}
}
/*-----子クラス-----*/
class Musuko{
//メンバ変数
var$data;
//メンバ関数
function Musuko(){
$this->data = 100;
}
function GetData(){
return $this->data;
}
}
//--クラス定義終了
$objOya = new Oya();
?>
100が出力されるけど、こういうことではない?
0743軟式PHP
04/08/03 09:14ID:???適当なところにスペースよろしく。
0745nobodyさん
04/08/03 13:20ID:WVIz7NicPHPのバージョンを4.3.8に上げる前に、
プログラムは前もって4.3.8に修正したヤツを
現行のサーバーに入れようと思ってます。
文法をより適切に修正しただけで、新しい関数などは用いてはいないので
4.3.8用に修正したプログラムでも4.1.2で動くかと思ったら、
一箇所ダメなところが。
「mb_ereg()」関数が4.1.2時代にはまだ「mbereg()」としてしか存在していなかったようで、
mb_ereg()関数を呼び出しても未定義と怒られる。
なので、
function mb_ereg($str1,$str2,$str3){
return mbereg($str1,$str2,$str3);
}
のような感じで関数をとりあえず定義してバージョンアップ前まではお茶を濁そうと思っていたら
三番目の引数が問題でうまく動かない。
mb_eger("(hoge)$",$data,$regs);
とした場合に正規表現にマッチした部分を$regs[1]として
取り出すことができなくなってしまうのでお手上げ。
なので、「mb_ereg()」と自作した関数をそのまま「mbereg()」関数に
リンク(エイリアス?)するような方法はないでしょうか?
0746739
04/08/03 13:36ID:???レスどうもです!
>>742,743
やっちゃいますよね、それ。
内容は大体そんな感じです。
結局のところ、原因は・・・
>>744
まさにこれでした!
便利さには危険が付きまとうんですね(笑
皆さん、どうもありがとうございました。m(_ _)m
0747Imo ◆.jC7ANgFY.
04/08/03 14:19ID:???たとえばこんな感じ?
function mb_ereg($str1,$str2,&$str3){
return mbereg($str1,$str2,$str3);
}
0748745
04/08/03 14:27ID:???なるほど、参照渡し。
PHPで参照渡しってほとんど使ったことなかったから思い付きませんでした。
ありがとうございます。助かりました。
0749nobodyさん
04/08/03 15:05ID:???0750nobodyさん
04/08/03 15:27ID:KxZQfxxVいままで、結構な規模のPHPプログラムをincludeを使って書いています。
このソースを外部に公開することになったのですが、
functionを使う感覚でincludeを使って処理を別ファイルに書き出していたので、
プログラム的にちょっとみっともないかな、と思っています。
ですが、問題はここではなくて、
includeとfuctionで同じ(ような)処理を呼び出す場合、
処理スピードが違う等のメリットはあるのでしょうか?
functionではメモリにキャッシュされるような気もするのですが、
それに関するドキュメントが見つかりませんでした。
メリットが特になければ、
「スピードには問題ない!」で押し通そうと思っているのですが...
0751nobodyさん
04/08/03 15:41ID:???Set-Cookie ヘッダは session_start() 関数を実行するときに表示されているんでしょうか?
環境は 4.3.6 + FreeBSD のレンタル鯖です。
0752nobodyさん
04/08/03 16:03ID:BfqwKzi+HTMLに<?php include("test.jsp"); ?>と記述してみたのですが、
test.jspのソースがそのまま表示されてしまいます。
Apacheのhttpd.conf中のAddType application/x-httpd-phpに
「.jsp」を追加してみたのですがだめでした。
JSPのファイルからJSPをインクルードする方法なら簡単なのですが、
どうしてもHTMLからJSPをインクルードしたいんです。
JSPを表示する方法が分かる方がいたら教えてください。
0755nobodyさん
04/08/03 16:47ID:???取り合えずPHP4が前提でいいのかな?
「メモリにキャッシュ」をどのようにイメージしてるかが
ちょっと不明だが、サブプログラムのincludeでも
メインプログラム上のfunctionでの記述でも実行前に
メモリに取り込まれるのは変わらない。またこれは、
includeの箇所が実際に実行されるされないに関わらない。
スピードに関わるとしたら、includeの場合はファイルのopenや
close等の処理などで、塵も積もれば的な差異が出る可能性はある。
しかしその程度は瑣末な事。
>functionを使う感覚でincludeを使って処理を別ファイルに書き出し
素の処理コードをまんまincludeしてるのかな?
「公開」の目的とするものによっては、きちんと追いやすいコードに直すべきだよ。
includeはライブラリ然としたものを読み込むべし。
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にコンバートしてるのですが、たまーに文字化けしてしまいます。
ご教授よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています