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

【PHP】下らねぇ質問はここに書き込みやがれpart13

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/11/25(金) 21:16:56ID:???
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
【PHP】下らねぇ質問はここに書き込みやがれpart10
http://pc8.2ch.net/test/read.cgi/php/1127581425/
【PHP】下らねぇ質問はここに書き込みやがれpart11
http://pc8.2ch.net/test/read.cgi/php/1129582431/
【PHP】下らねぇ質問はここに書き込みやがれpart12
http://pc8.2ch.net/test/read.cgi/php/1130835396/
05585532005/12/08(木) 19:12:45ID:???
>>555
setuidとかsuexecにするということでしょうか?
useridを動的に変えたいので、その方法だとユーザ分スクリプトを作る必要が
出てきてかなり厳しいかなと。

色々とぐぐって見たのですが、sudoしろとかいった内容しか見つかりません。
sshでアクセスする場合などのパスワードなんかを聞いてくるような
場合の処理はphpでは不可能でファイナルアンサーでしょうか?
0559nobodyさん2005/12/08(木) 19:16:29ID:???
>>558
PHPでスクリプトファイルを書き出す
0560nobodyさん2005/12/08(木) 19:16:57ID:???
mail()関数のadditional_headersにFromなどを入力する際、
ヘッダの改竄を防ぐためにどのようなサニタイズを行ったら良いのでしょうか?
0561nobodyさん2005/12/08(木) 19:19:20ID:???
>>557
http://www.php.net/manual/ja/language.types.integer.php
整数のサイズはプラットフォームに依存しますが、 約20億(32ビット符号付)が一般的な値です。
0562nobodyさん2005/12/08(木) 21:38:33ID:uvzNzscr
>>531
ありがとうございました。
0563nobodyさん2005/12/08(木) 22:33:20ID:???
>>559
恐ろしくアンセキュアな悪寒
0564nobodyさん2005/12/09(金) 00:57:30ID:???
まぁ、要求は満たせるな
0565nobodyさん2005/12/09(金) 10:40:28ID:???
for($s=0; $s<count($d_file); $s++){
 echo "<FORM ACTION='next.php' METHOD='POST'>";
echo "<CENTER><INPUT type='submit' name='add$s' value='ぽち'></CENTER></FORM>";
}

とした場合、ぽちボタンが押された時〜を実行するという記述をしたいのですが、

if ($_SERVER["REQUEST_METHOD"]=="POST"){
if (isset($add$s)){
〜実行部分〜
}

としても、エラーを吐くみたいです。
$add$sあたりが怪しいと思うのですが、どう書けばいいでしょうか?
}

とした場合、ぽちボタンが押された
0566nobodyさん2005/12/09(金) 10:41:21ID:???
表示ばぐったみたいです。

if ($_SERVER["REQUEST_METHOD"]=="POST"){
if (isset($add$s)){
〜実行部分〜
}
}

です。
0567nobodyさん2005/12/09(金) 10:46:10ID:???
http://www.infotek.co.jp/product/pdflib/pdflib_nyumon.html
ここのサイトの簡単なプログラム例というのを実行したんですが、
エラーが出てしまいます。どなたか解決方法分かる方おられますか?
ちなみに、php.iniのextension=php_pdf.dllの部分は有効にしています。
0568nobodyさん2005/12/09(金) 10:47:15ID:???
http://www.php.net/manual/ja/language.variables.external.php
0569nobodyさん2005/12/09(金) 10:48:44ID:???
>>567
どんなエラーが出てるかも分からないのに
何を解決しろと言うのか
05705672005/12/09(金) 10:59:23ID:???
>>569すいません、そうですよね。
25行目のdie("Error: " . PDF_get_errmsg($p));でParse Error
31行目のPDF_begin_page_ext($p, 595, 842, "");でFatal error: Call to undefined function: pdf_begin_page_ext()
33行目の$font = PDF_load_font($p, "KozMinPro-Regular-Acro", "Ext-RKSJ-H", "");で上と同じエラー
今のところこういう感じです。
0571nobodyさん2005/12/09(金) 11:11:32ID:???
>>570
PDFlibをインクルードしてないからじゃねーの?
0572nobodyさん2005/12/09(金) 11:13:20ID:???
>>565
おまえもどんなエラーだか明記しろよ。

つーか、POSTされたものは$_POST[]だろ。
ま、register_globals=onなら別だが。
0573nobodyさん2005/12/09(金) 11:20:47ID:???
syntax err
05745672005/12/09(金) 11:21:57ID:???
>>571
すいません、どのようにすればインクルードできるのですか?
何分素人なもので、よく分からなくて…。
0575nobodyさん2005/12/09(金) 11:28:06ID:???
>>574
あ、ちと勘違いだ。
PDF PHP インストールでぐぐってみて。
要するに、PDFlibで使えるようになる関数がundefined functionなわけ。
つまりちゃんといんすとーるされてないってことだから。

0576nobodyさん2005/12/09(金) 11:29:24ID:???
dl("libpdf_php.dll");
05775672005/12/09(金) 11:39:26ID:???
>>575
ありがとうございます。それでやってみます。
0578nobodyさん2005/12/09(金) 11:48:46ID:???
>>577
libpdf_php.dllってファイル持ってるのかよ
そもそもphp.iniを読み込めてないんじゃないの
phpinfo();で確認しろ
0579nobodyさん2005/12/09(金) 11:55:35ID:???
>>567
そこの記述は古いのでエラーがでるのが正常です
もう使えない関数を使ってます
0580nobodyさん2005/12/09(金) 11:58:15ID:???
他のwebから指定されたタグ以降を取得するような
サンプルソースってどこかないですかね?
05815672005/12/09(金) 12:05:53ID:???
>>578
libpdf_php.dllは、PHPのextensionsフォルダにあります。今確認しましたが、
認識はしてくれているようです。

>>579
そうなんですか…。では、なんとか他の方法を探ってみます。

お二人ともありがとうございました
0582nobodyさん2005/12/09(金) 12:07:39ID:???
最初にマニュアルを読んでない時点でお前は負け組みなんだよ
0583nobodyさん2005/12/09(金) 12:12:02ID:???
>>581
phpinfoでPDFlibのバージョンチェック

PDFlib GmbH Version が6以上ならPDF_begin_page_extが使える
5なら使えないのでDF_begin_page関数に変える
0584nobodyさん2005/12/09(金) 12:13:05ID:???
>>580
file()で配列にしちゃえば後は簡単なんじゃ。
配列にタグ入ってるかチェックしてそれまでを削除で完了
0585nobodyさん2005/12/09(金) 12:13:07ID:???
>>581
PDFlibでぐぐればほかにもいろいろあるから探して。
で、これって有償なのは分かっている?
0586nobodyさん2005/12/09(金) 12:20:11ID:???
指定したサイトに自動でジャンプってphpでできますか?
05875802005/12/09(金) 12:22:24ID:???
>>584
�d、いけそうですわ。

>>586
レッツPHP嫁
0588nobodyさん2005/12/09(金) 12:26:25ID:???
>>586
できます。
05895672005/12/09(金) 12:39:51ID:HHj6b6mW
>>583
バージョンは6.0.1でしたが、PDF_begin_pageしか動かないようでした。

>>585
ありがとうございます。それは承知しています。
05905652005/12/09(金) 13:26:31ID:???
すみません、説明不足です。

next.php内で

if ($_SERVER["REQUEST_METHOD"]=="POST"){
for($i=0;$i<20;$i++){
if (isset($add$i)){
       実行部分

のように、POSTされてきたのが、$add0だったら〜、$add1だったら〜、$add2だったら〜・・・
としていきたいのですが、$add$iの書き方がまずいらしく、エラーが出ます。

$add[$i]と書くとエラーは出ませんでしたが、上手く作動しませんでした。

一つ手前のphpのフォームの部分は

for($s=0; $s<count($d_file); $s++){
 echo "<FORM ACTION='next.php' METHOD='POST'>";
echo "<CENTER><INPUT type='submit' name='add$s' value='ぽち'></CENTER></FORM>";
}

といった感じで、ボタン毎にadd0 , add1 , add2・・・となっています。

といった感じです。
下記エラー内容です。

「Parse error: parse error, unexpected T_VARIABLE, expecting ',' or ')' 」
ラインは、「 if (isset($add$i)){」この部分でした。

解決策があれば、教えて下さい。
0591nobodyさん2005/12/09(金) 13:31:01ID:???
>>590
http://jp2.php.net/manual/ja/language.variables.external.php
0592nobodyさん2005/12/09(金) 13:49:39ID:hr0We1go
文字列連結すりゃいいんじゃねーの?
0593nobodyさん2005/12/09(金) 14:03:15ID:???
>>591,592
ありがとうございます。
しかし、色々試行錯誤するも出来ないのです
もう少しヒントを下さい
0594nobodyさん2005/12/09(金) 14:06:53ID:???
>>593
今回だけだぞ。
ヒント: $add{$i}

ホントに下らない質問だから、次回からはきちんと調べるようにwww
0595nobodyさん2005/12/09(金) 14:08:49ID:???
>>590
確かめてないけど
for($s=0; $s<count($d_file); $s++){
echo "<FORM ACTION='next.php' METHOD='POST'>";
echo "<CENTER><INPUT type='submit' name='add[$s]' value='ぽち'></CENTER></FORM>";
}

isset($add[$i])
0596nobodyさん2005/12/09(金) 14:42:56ID:???
>>594,595
出来ました、ありがとうございましたm(_ _)m
0597nobodyさん2005/12/09(金) 14:59:48ID:???
>>596
つーかさ、さっきも書いたけどregister_global=onでプログラムするなって。
0598nobodyさん2005/12/09(金) 15:09:37ID:AOiVoXBq
MySQL+PHPでやってます。

SQLのint型のフィールドに放り込んである値を
mysql_fetch_arrayで取り出してそのまますぐにtypegetに入れたらstring
ってでるんですけど、これはいったい・・・。
型変換すればいいんですけど、どういう時にこういうことがおきるんすか?
05995982005/12/09(金) 15:10:43ID:???
あ、先にSQLの方で質問したらどうもPHPの方の問題だと言われたので、
こっちで改めて質問しなおしてます。マルチっぽくてスイマセン。
0600nobodyさん2005/12/09(金) 15:30:29ID:???
DBからレコードを取り出すとき
0601nobodyさん2005/12/09(金) 15:43:19ID:???
>>597
あら、PHP5で register_globalをonにした覚えが無いのでoffのはずなんですがorz
デフォでoffですよね
06025982005/12/09(金) 15:44:28ID:???
うへ。

じゃあDBでどのような型に入ってたとしても、
PHPに読み込むと必ず文字列になると認識をして無いと危険と言うことですね。
0603nobodyさん2005/12/09(金) 15:48:36ID:???
>>601
じゃ、add$iでポストされた変数はを$add$iじゃなくて、
$_POST['add{$i}']だろ。
0604nobodyさん2005/12/09(金) 15:50:10ID:???
>>603
無茶言うな
0605nobodyさん2005/12/09(金) 15:53:00ID:???
キャストする理由が思い浮かばないが
0606nobodyさん2005/12/09(金) 15:58:07ID:???
>>603
何故かそれだと出来なくて、 add[$i]でポストされたのを、

if ($_SERVER["REQUEST_METHOD"]=="POST"){
for($i=0;$i<count($rp);$i++){
if (isset($add[$i])){

で受け取れています・・・。
globalはoffなんですが、どうしてでしょうかorz
0607nobodyさん2005/12/09(金) 15:58:37ID:???
失礼しました、add[$s]でポストされたのです。
0608nobodyさん2005/12/09(金) 16:16:49ID:???
最初あたりでextractしてんじゃないの?そこらじゅうにサンプルとしてあるから真似したくなるけど、よくあるダメソース。
0609nobodyさん2005/12/09(金) 16:20:31ID:???
>>602
危険も何もPHP自体に型がないから
0610nobodyさん2005/12/09(金) 16:32:26ID:???
>>606
add[$i]でポストされたものなら、
$_POST['add'][$i]
だろ。
0611nobodyさん2005/12/09(金) 17:27:38ID:???
>>610
意見ありがとうございます。
add0でポストされていても、i=2になっていたりするので、上手くいかないのですorz
breakしてないからかもですが・・・。

現状で上手く動作してるので妥協してるのですが、もう少しいじってみます。
0612nobodyさん2005/12/09(金) 17:36:35ID:???
$fruit =array("りんご","ばなな","めろん","いちご/ぶどう/なし");
となっていて、配列$fruitにぶどうがある場合、falseにしたいんですけど、
これって、list($f[0],$f[1],$f[2]) = expload("/",$fruit[3]);
みたいに分解してからチェックするしかないですかね?
スマートなやり方があれば教えて欲しいんですけれど、公式でarrayの関数順番に見るもそういう関数が見当たらないので(´д`)
0613nobodyさん2005/12/09(金) 17:39:15ID:???
よし俺がスルー
0614nobodyさん2005/12/09(金) 17:40:43ID:???
>>612
配列$fruitにぶどうがある場合って、"いちご/ぶどう/なし"が要素にある場合も含めるの?
だったらpreg_grepかな。
0615nobodyさん2005/12/09(金) 17:44:56ID:???
>>614
でもって、「ぶどう」のみならin_arrrayと。
0616nobodyさん2005/12/09(金) 17:52:21ID:???
>>614615様

ぶどうのみなのでin_arrayかな・・・。
となると、
$fruit =array("りんご","ばなな","めろん","いちご/ぶどう/なし"); で、
if(in_array("ぶどう","$fruit)){
echo "ぶどうあり。"
}

だと、trueって事ですか・・・。
しらなかったです。ありがとう!
0617nobodyさん2005/12/09(金) 17:54:16ID:???
先生、ぶどうありって出ません゜ + 。・゜・(ノД`)
0618nobodyさん2005/12/09(金) 18:04:33ID:???
HAHAHA!
in_array()のマニュアルよく読んでみ
0619nobodyさん2005/12/09(金) 18:06:49ID:???
>>617
だから、
614が"いちご/ぶどう/なし"が要素にある場合も含めるのかって書いてるじゃん。

0620nobodyさん2005/12/09(金) 18:30:08ID:???
正規表現まだ勉強してなかったんですけれど、これむずいですね(ノД`)
特殊な法則みたいなの覚えないと駄目みたい・・・。
取り合えずはexploadで分解してチェックする事にしますorz
0621nobodyさん2005/12/09(金) 18:42:56ID:JUWxzeIo
ImageCopy関数で、
画像のサイズは指定し縮小はできますが、画像の容量を指定し
縮小する方法はありませんでしょうか?

50KB 横240 縦180
↓
10KB 横* 縦*
0622nobodyさん2005/12/09(金) 18:43:28ID:???
無い
0623nobodyさん2005/12/09(金) 19:32:08ID:???
>>620よ expload じゃない。explode だ。英語頑張ろうな。
0624nobodyさん2005/12/09(金) 22:18:50ID:???
設置したsubmitボタンをある条件を満たすと他のボタンに取り替えるという事はできますでしょうか?
ご存知の方やり方を教えて頂けると幸いです。
0625nobodyさん2005/12/09(金) 22:24:25ID:???
>>624
小人さんにでも頼んでください。
0626nobodyさん2005/12/09(金) 22:24:29ID:???
>>624 Ajax
0627nobodyさん2005/12/09(金) 22:24:52ID:???
$_GETや$_POST、$_SESSIONなどの変数の値に応じて変更させるとか。
0628nobodyさん2005/12/09(金) 22:39:06ID:???
>>621
MLでの回答を気長に待ってください。
0629nobodyさん2005/12/09(金) 22:42:42ID:???
ありがとうございます。
既にボタンを設置した後だと駄目なんですかねぇ・・・。
0630nobodyさん2005/12/09(金) 22:45:31ID:???
(゚Д゚)ハァ?
0631nobodyさん2005/12/09(金) 22:58:44ID:???
いえ、submitのようなボタンにも、str_replaceのような関数があればいいなと思ったんです。
意味不明な事言ってたらすみませんm(._.)m
0632nobodyさん2005/12/09(金) 23:20:00ID:???
>>631
それはJavaScriptでできるだろうが
0633nobodyさん2005/12/09(金) 23:46:12ID:???
あぁぁ、JavaScriptですか、なるほど!
ありがとうございます!
0634nobodyさん2005/12/10(土) 00:39:08ID:???
アホだ・・・
0635nobodyさん2005/12/10(土) 01:46:07ID:???
ログイン後の各ページで、ログイン状態か否かをセッションで
判定してます。

[login.php]
ini_set('session.gc_maxlifetime', "3600");
session_start();

$_SESSION["lid"] = $hogehoge;
header("Location: index.php");

[各ページ]
ini_set("session.gc_maxlifetime", "3600");
session_start();

if (!isset($_SESSION["lid"])){
header("Location: login.php");

}

gc起動して掃除→login.phpへリダイレクトされるまで 3600秒のハズですが、
なぜかデフォルトの1440秒でセッションが切れ、login.phpへリダイレクトしてしまいます。

session.gc_maxlifetimeの内容をdumpしてみたのですが、ローカルでは3600に
なっているようです。

共用サーバーなのでphp.iniの直接変更はできません。
どうにも原因がつかめません。
解決の糸口はありますでしょうか…

0636nobodyさん2005/12/10(土) 03:30:32ID:???
>>635
連鯖だとセッションを同じところに保存するかもしれないので無理かも
phpinfoでsession.save_path見てみれ。/tmpなんぞになってると他人に
GCされてる可能性蟻
.htaccessでphp_valueが設定できるならsession.save_pathを指定するか
session_save_path()して変更して確認してみれ
0637nobodyさん2005/12/10(土) 05:18:00ID:???
>>633-634ワロス
0638nobodyさん2005/12/10(土) 12:03:17ID:A5Y35bGz
GDライブラリを使って動的に画像を変更させたいです。
(例えば生徒の点数を入力すると点数の分布の折れ線グラフが出るとか)

イメージを表示するファイルの変数をdefineとかで記して、
直接ファイルを書き換える以外に方法はありますか?

できたらファイルを弄らずに関数みたいに出来たらと思うんですが。
0639nobodyさん2005/12/10(土) 12:23:40ID:???
>>638
画像ファイルをいじるのではなく、その都度生成すれば?
0640nobodyさん2005/12/10(土) 12:28:52ID:???
Win版 PHP5 + Apache2で環境作っててハマってます。

症状:
GDやMb_Stringなど追加モジュールが、Apacheから php5apache2.dllモジュール経由だとロードできてないが、
同じスクリプトを、コマンドラインから php.exeで実行すると追加モジュールのロードはできる。

環境: Apache 2.0.55 + PHP 5.1.1および5.1.2-dev

※httpd.conf
LoadModule php5_module D:\php\php5apache2.dll
AddType application/x-httpd-php .php

※php.ini #php.ini-distからの変更点
magic_quotes_gpc = Off
extension_dir = "D:/php/ext"
upload_tmp_dir = "C:/tmp"
extension=php_exif.dll
extension=php_gd2.dll
extension=php_mysql.dll
extension=php_mbstring.dll

Linuxで自分でビルドする方が楽だと思う今日この頃。
0641nobodyさん2005/12/10(土) 12:34:10ID:???
>>638
グラフ作りたいならjpgraph
ttp://www.aditus.nu/jpgraph/
0642nobodyさん2005/12/10(土) 12:36:29ID:???
>>640
php.ini自体が読み込めてないんじゃないの
phpinfo()で確認してみ
0643nobodyさん2005/12/10(土) 12:45:10ID:???
>>642
さんくす、ビンゴだった。
Win版は、C:\WinNT に php.ini 置かないといけないのね…。
Linux, Unixでしか環境作ったことないから、php.ini は、
インストールディレクトリで良いとばっかり思ってたよ。
0644nobodyさん2005/12/10(土) 13:01:37ID:???
>>643
俺はいちいちコピーするのがめんどくさいので
httpd.confに
PHPIniDir "C:\php5.1"
と書いてる
0645nobodyさん2005/12/10(土) 13:02:21ID:9PXirItw
参照渡しについて質問なのですが
仕事で見せられた規約には「なるべく参照渡しを使え、理由は値渡しよりパフォーマンスがあがるから」ということです。
理由付けはどうでもいいのですが、既存の他の人のコードを見ると参照渡しの実際の書き方についていくつか方法があるようで私なりに意味を考えたのですがおかしいところがあればつっこんで欲しいのです

1番 $obj = &new Object();
$objには(どこかに実体が存在している名前無しのnew Object()の)参照が入る

2番 function &getValue() { return $obj;}
$objは実体(インスタンス)だが $retObj = getValue();で取得した$retObjは$objの参照となる

3番 function &getValue(){}を呼び出すとき
$retObj = &getValue();
$retObj = getValue();
のどちらでも変わらない 両方とも結果の参照が入る(2番と同じ状態になる)

4番 function getValue(){}を呼び出すとき
$retObj = &getValue(); は結果の参照が入る(2番と同じ状態になる)
$retObj = getValue(); は結果のコピーが入る

5番 $strVal1 = &$strVal2; 参照が入る?

6番 function setValue(&$strVal){$this->val=$strVal} 5番と同じ状態になる?

7番 function setValue(&$strVal){$this->val=$strVal} となっている状態で
$strMyVal = "abc"; setValue($strMyVal); とやると、$strMyValの参照が自動的に渡される

8番 上記7番の状態で setValue(&$strMyVal); を呼び出すと・・・?どうなる?
06466452005/12/10(土) 13:06:23ID:9PXirItw
という風に、双方向から&を使うとわけがわからなくなるので

関数の引数はdefineで定義したものも入れたいこともあるでしょうから
すべて function setValue($strValu)と&無しで書いて
呼び出し元の方で参照を渡すのか参照を取得のか↓したほうが混乱しないと思うんですが・・・
// 呼び出し
setValue(&$strTest);
// 取得
$strVal = &getValue();
0647nobodyさん2005/12/10(土) 13:09:35ID:???
>>644
そっちの方がスマートなんで、それ採用。
ありがとです。
0648nobodyさん2005/12/10(土) 13:51:16ID:???
>>646
call_time_pass_reference はそのうちサポートされなくなるらしいよ。
その呼び出し時に参照を渡すって奴ね。
0649nobodyさん2005/12/10(土) 14:26:17ID:???
>>646
マニュアルにもそう書いてあるしね。
一番の解決法はPHP5を使う
06506382005/12/10(土) 14:40:59ID:???
>>639
やー、何かファイル作ったりとか怖いんで。
初心者につきビビリーです。

>>641
便利そうなのかな。ちょっと試してみますね。
0651nobodyさん2005/12/10(土) 15:49:35ID:???
>>45
1番参照
2番はコピー
3番は上は参照、下はコピー
4番どちらもコピー
5番参照
6番コピー
7番コピー
8番コピー

マニュアルにある通り、参照を受け取っても=演算子を使えばコピーされる
>>646はphp4で書くなら悪くない選択

ちなみに「リファレンスが高パフォーマンス」はよくあるガイセビア
これが正しいのはメソッド内でパラメータを「書き換える」場合のみ

その他の場合ではコピーオンライトなPHPでは参照を使ったほうが
遅いしメモリ喰い

参照で受けたパラメータをコピーすると(6番のケース)値コピーで
渡す場合にくらべて1000倍ほど時間がかかってビビるのは初心者に
ありがち

駄目なコーディング規約を嘆きつつ、次のプロジェクトでは規約の
改定に挑みましょう
0652nobodyさん2005/12/10(土) 16:15:27ID:???
> >>646はphp4で書くなら悪くない選択

えぇぇぇぇ!?
0653nobodyさん2005/12/10(土) 16:17:13ID:???
同じ理由でこれも遅い。

 setValue($strVal) {
  $this->val =& $strVal;
 }
}

$obj->setValue($strMyVal); or $obj->setValue(MY_CONST);

まあ実行コストの話は置いておいて、関数がなぜデフォルトで
値渡しなのか小一時間考えたほうがいいかもね。
06546452005/12/10(土) 16:19:23ID:???
皆さん
ありがとうございます

>参照で受けたパラメータをコピーすると(6番のケース)値コピーで
>渡す場合にくらべて1000倍ほど時間がかかってビビるのは初心者に
>ありがち

あーなんか始めたばっかりのころ、
ぜんぜん画面が出ないなぁと思って 「&」 消したら直ったことがあったのですが
そういう理由だったんですねぇ
そのときから、「&」に対して避けて通ってきた

関数に渡すときに、その値を関数内で変更する必要があるとき以外は普通に書いておいたほうがよいのでしょうかね?
0655nobodyさん2005/12/10(土) 16:36:01ID:???
マニュアルにはそう書いてある
http://php.net/manual/ja/language.oop.newref.php
> 逆に多くの場合、参照を使うよりも単純にコピーを使った方が良い結果となります

破壊的関数はデバッグしにくい原因になるし、パフォーマンスの
改善が見込まれる部分だけ参照に変更するのが一般的だと思う
基本的に参照を使うのはオブジェクトの受け渡しのみ

ただしコーディング規約がある以上そっちが優先だけどね
0656nobodyさん2005/12/10(土) 16:48:52ID:???
半角スペースを区切り文字としてそれぞれ文字列に格納したいのですが、
(例:「1 2 3」を$a=1,$b=2,$c=3といった具合)
半角スペースが区切り文字だと何か不安です。
環境によっては上手く動作しないような。杞憂でしょうか?
0657nobodyさん2005/12/10(土) 16:49:21ID:vDRN2V5d
http://www.kent-web.com/pwd/login.html

ここのログイン、解説通りに設定したけど。ログインしようとすると、ソースが表示されてしまうん
だけど。原因なんだろ。?
■ このスレッドは過去ログ倉庫に格納されています