【PHP】下らねぇ質問はここに書き込みやがれpart13
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/11/25(金) 21:16:56ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>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/
0611nobodyさん
2005/12/09(金) 17:27:38ID:???意見ありがとうございます。
add0でポストされていても、i=2になっていたりするので、上手くいかないのですorz
breakしてないからかもですが・・・。
現状で上手く動作してるので妥協してるのですが、もう少しいじってみます。
0612nobodyさん
2005/12/09(金) 17:36:35ID:???となっていて、配列$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:???配列$fruitにぶどうがある場合って、"いちご/ぶどう/なし"が要素にある場合も含めるの?
だったらpreg_grepかな。
0616nobodyさん
2005/12/09(金) 17:52:21ID:???ぶどうのみなのでin_arrayかな・・・。
となると、
$fruit =array("りんご","ばなな","めろん","いちご/ぶどう/なし"); で、
if(in_array("ぶどう","$fruit)){
echo "ぶどうあり。"
}
だと、trueって事ですか・・・。
しらなかったです。ありがとう!
0617nobodyさん
2005/12/09(金) 17:54:16ID:???0618nobodyさん
2005/12/09(金) 18:04:33ID:???in_array()のマニュアルよく読んでみ
0620nobodyさん
2005/12/09(金) 18:30:08ID:???特殊な法則みたいなの覚えないと駄目みたい・・・。
取り合えずはexploadで分解してチェックする事にしますorz
0621nobodyさん
2005/12/09(金) 18:42:56ID:JUWxzeIo画像のサイズは指定し縮小はできますが、画像の容量を指定し
縮小する方法はありませんでしょうか?
50KB 横240 縦180
↓
10KB 横* 縦*
0622nobodyさん
2005/12/09(金) 18:43:28ID:???0624nobodyさん
2005/12/09(金) 22:18:50ID:???ご存知の方やり方を教えて頂けると幸いです。
0627nobodyさん
2005/12/09(金) 22:24:52ID:???0629nobodyさん
2005/12/09(金) 22:42:42ID:???既にボタンを設置した後だと駄目なんですかねぇ・・・。
0630nobodyさん
2005/12/09(金) 22:45:31ID:???0631nobodyさん
2005/12/09(金) 22:58:44ID:???意味不明な事言ってたらすみませんm(._.)m
0633nobodyさん
2005/12/09(金) 23:46:12ID:???ありがとうございます!
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:???連鯖だとセッションを同じところに保存するかもしれないので無理かも
phpinfoでsession.save_path見てみれ。/tmpなんぞになってると他人に
GCされてる可能性蟻
.htaccessでphp_valueが設定できるならsession.save_pathを指定するか
session_save_path()して変更して確認してみれ
0638nobodyさん
2005/12/10(土) 12:03:17ID:A5Y35bGz(例えば生徒の点数を入力すると点数の分布の折れ線グラフが出るとか)
イメージを表示するファイルの変数をdefineとかで記して、
直接ファイルを書き換える以外に方法はありますか?
できたらファイルを弄らずに関数みたいに出来たらと思うんですが。
0640nobodyさん
2005/12/10(土) 12:28:52ID:???症状:
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で自分でビルドする方が楽だと思う今日この頃。
0643nobodyさん
2005/12/10(土) 12:45:10ID:???さんくす、ビンゴだった。
Win版は、C:\WinNT に php.ini 置かないといけないのね…。
Linux, Unixでしか環境作ったことないから、php.ini は、
インストールディレクトリで良いとばっかり思ってたよ。
0644nobodyさん
2005/12/10(土) 13:01:37ID:???俺はいちいちコピーするのがめんどくさいので
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); を呼び出すと・・・?どうなる?
0646645
2005/12/10(土) 13:06:23ID:9PXirItw関数の引数はdefineで定義したものも入れたいこともあるでしょうから
すべて function setValue($strValu)と&無しで書いて
呼び出し元の方で参照を渡すのか参照を取得のか↓したほうが混乱しないと思うんですが・・・
// 呼び出し
setValue(&$strTest);
// 取得
$strVal = &getValue();
0648nobodyさん
2005/12/10(土) 13:51:16ID:???call_time_pass_reference はそのうちサポートされなくなるらしいよ。
その呼び出し時に参照を渡すって奴ね。
0650638
2005/12/10(土) 14:40:59ID:???やー、何かファイル作ったりとか怖いんで。
初心者につきビビリーです。
>>641
便利そうなのかな。ちょっと試してみますね。
0651nobodyさん
2005/12/10(土) 15:49:35ID:???1番参照
2番はコピー
3番は上は参照、下はコピー
4番どちらもコピー
5番参照
6番コピー
7番コピー
8番コピー
マニュアルにある通り、参照を受け取っても=演算子を使えばコピーされる
>>646はphp4で書くなら悪くない選択
ちなみに「リファレンスが高パフォーマンス」はよくあるガイセビア
これが正しいのはメソッド内でパラメータを「書き換える」場合のみ
その他の場合ではコピーオンライトなPHPでは参照を使ったほうが
遅いしメモリ喰い
参照で受けたパラメータをコピーすると(6番のケース)値コピーで
渡す場合にくらべて1000倍ほど時間がかかってビビるのは初心者に
ありがち
駄目なコーディング規約を嘆きつつ、次のプロジェクトでは規約の
改定に挑みましょう
0653nobodyさん
2005/12/10(土) 16:17:13ID:???setValue($strVal) {
$this->val =& $strVal;
}
}
$obj->setValue($strMyVal); or $obj->setValue(MY_CONST);
まあ実行コストの話は置いておいて、関数がなぜデフォルトで
値渡しなのか小一時間考えたほうがいいかもね。
0654645
2005/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ここのログイン、解説通りに設定したけど。ログインしようとすると、ソースが表示されてしまうん
だけど。原因なんだろ。?
0660nobodyさん
2005/12/10(土) 17:01:01ID:???0661nobodyさん
2005/12/10(土) 20:05:54ID:UVx/Wp+9もし、専用のスレがあれば誘導をお願いします。
現在、RedHatEnterpriseLinux3 ES を使っています。
Apache : 2.2.0
php : 4.4.1
をソースからのコンパイルでインストールしています。
上記環境で、SimpleXMLを使用したく、phpのconfigureオプションに--enable-simplexmlを追加して
コンパイル→インストールを行ったのですが、simplexml_load_file(FILE)関数が"undefined function"となってしまいます。
コンパイル時やインストール時には、エラーの類は出ておりません。
phpinfo()のConfigure Commandにもちゃんと--enable-simplexmlが表示されています。
PHP4でのSimpleXMLの情報が少なく行き詰ってしまいました。
php-4.4.1にてSimpleXMLを使用するにはどうすればいいのでしょうか?
宜しくお願いします。
0662nobodyさん
2005/12/10(土) 20:30:09ID:???SimpleXMLってPHP4にバックポートされたの?PHP5のみだと思うけど。
マニュアルのsimplexml_load_file()の項とか
configureオプション(マニュアルじゃなくてソースの方)を確認してみな。
0663nobodyさん
2005/12/10(土) 20:41:55ID:???configureオプションのソースにはありませんでした・・・
しかし、SimpleXMLを調べている時に
http://sb.xrea.com/showthread.php?t=10288
を見つけて、PHP4でもインストールできるような感じがしたので、、、
また、手持ちのPHP本にもPHP5からデフォルトでインストールされるが、
PHP4系ではconfigureオプションで指定するように書いてあります。
使えないのでしょうか??
0664nobodyさん
2005/12/10(土) 21:28:03ID:???質問者の勘違いというより勉強不足による間違いだと思うよ。
因みに「手持ちの本」って何?
PHP4でのSimpleXMLライクな試みは、あるにはあるみたいだけどね
http://www.ister.org/code/simplexml44/index.xhtml
http://minixml.psychogenic.com/
中身見てないけど。
0665nobodyさん
2005/12/10(土) 21:39:40ID:???すみません。ありがとうございます。
今、手持ちの本を見返して見た所、
「SimpleXMLを使用するにはconfigureオプションで組み込むか、PHP5からは標準で組み込まれた・・・」
というような書き方がされていまして、てっきりconfigureオプションで組み込めるものだと思い込んでいました。
>>663のサポートボードの質問に対して、
xreaのWebmasterが4.4.2に入れ替える時に検討します。って返事かいているもんで、完全に勘違いしておりました。
そのサポートボードにも、他のPHP4系へのSimpleXML導入してください。ってメッセージもありました・・・
0666nobodyさん
2005/12/11(日) 00:07:12ID:CWApnEja0667nobodyさん
2005/12/11(日) 00:11:00ID:CWApnEjaxreaにhttp://php.s3.to/net/kusi.phpsをアップしてパーミッションもちゃんと設定したんですが、
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of fsockopen().
If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer.
in /virtual/アカウント名/public_html/kusi3.php(ファイル名) on line 76
とエラー表示されてしまいます。使用はできるんですが動作が重いような気がします。tok2などの鯖では正常に動作しました。
何が原因でしょうか?スクリプトに文法的な間違いがあるのでしょうか?
0668nobodyさん
2005/12/11(日) 00:16:15ID:???(;゚ Д゚) 俺にはwarningに見えるんだが?
0669nobodyさん
2005/12/11(日) 00:16:35ID:???0670nobodyさん
2005/12/11(日) 00:17:07ID:???エラーメッセージに書いてあるそのまんまなんだけどな。英語読めないとか言うなよ。
元々xreaではその手のCGIは歓迎されておらず、制限が厳しめになっている。
0671nobodyさん
2005/12/11(日) 00:21:12ID:CWApnEjaallow_call_time_pass_referenceを設定すればOK?ただし推奨しない?
わからん・・・つまりxreaに嫌われてて対処法はないってことですか?
0672nobodyさん
2005/12/11(日) 00:24:04ID:???0673667
2005/12/11(日) 00:25:07ID:???0674nobodyさん
2005/12/11(日) 00:34:38ID:???エラー吐いてる人って居ない?。必ずエラーはくんだが・・・・。
0675667
2005/12/11(日) 00:36:01ID:CWApnEjaいねーよ。
0676nobodyさん
2005/12/11(日) 00:38:37ID:???エラーのまんまじゃん、そのソースの76行目
$fp = fsockopen($host, 80, &$errno, &$errstr, $time_out);
実体参照使っている。xreaのPHPは実体参照時にWarningがでる。
実体参照を使わずに、一時変数を使って場を凌げ。
0677nobodyさん
2005/12/11(日) 00:45:13ID:???一時変数っていうか、&とればいいのでは?
0679nobodyさん
2005/12/11(日) 01:18:40ID:???0680nobodyさん
2005/12/11(日) 01:24:29ID:???まぁどのみち>>667のスクリプトでは、改良しない限り書き込みできないがw
0682nobodyさん
2005/12/11(日) 02:58:35ID:???で1〜4をランダムに削除したい場合どんな方法があるでしょうか?
例:$a = 1,3,4
考えたのが$aを配列に返還して、要素を抜き取るって
再度結合というのなんですが、一部の要素を抜き取る方法がわかりません。
お助けを。
0683682
2005/12/11(日) 02:59:30ID:???0684nobodyさん
2005/12/11(日) 03:08:25ID:???それならexplode。
0685nobodyさん
2005/12/11(日) 03:16:16ID:???配列から一部の要素を削除するには
array_splice(), array_shift(), array_pop(), unset()
のいずれかを使えばOK
0686nobodyさん
2005/12/11(日) 03:22:35ID:???$b = explode(",",$a);
array_splice($b,array_rand($b),1);
$c = implode(",",$b);
0687nobodyさん
2005/12/11(日) 07:06:00ID:???1度入力したものが計算と同時にリセットされてしまいます。
クッキーを使う以外の方法で直前にポストしたものを、
また表示するというようなことはできないでしょうか?
<option>タグでプルダウン形式にしてるので、
クッキーを使う方法だと難しそうなのでできないのです。
0688nobodyさん
2005/12/11(日) 07:28:40ID:???どうやっているのかが書かれていないので想像するしかないんだが、
> 計算と同時にリセット
つーのが考え違いしてるんじゃないかな?
フォーム要素に初期値(デフォルト値)を設定していないものを
単に"新しく"読み込んでいるだけっしょ。
ならば、"適切に"初期値を設定してやればいいっしょ。これはHTMLレベルの知識っしょ。
0689687
2005/12/11(日) 07:42:22ID:???レスどうもありがとうございます。
わかりづらくてすみません。
入力フォームと、結果を表示するフォームをわけているんですが、
計算実行のボタンを押して、
結果を表示しつつも、入力フォームを残すようにしています。
計算実行のボタンをおした時に、
入力フォームの値がデフォルト値に戻ってしまうので困っています。
ソースですが
$a=$_POST['a'];
$b=$_POST['b'];
$c=$a+$b;
print $c;
html側は
<form method="post" action="$_SERVER['PHP_SELF']">
<select name="a">
<option value="1">1</option>
<option value="2">2</option>
</select>
+
<select name="b">
<option value="1">1</option>
<option value="2">2</option>
</select>
こんな感じです。
デフォルトでは1+1になりますが、
2+2を選択して計算を実行したあとに、1+1に戻ってしまいます。
これを2+2のままにしたいということです。
0690nobodyさん
2005/12/11(日) 07:49:44ID:???そうすれば、まるで選択したものが残っているかのように見えるから。
0691nobodyさん
2005/12/11(日) 07:52:12ID:???688さんが言われるとおり,HTMLの問題だよ.
option要素にselected属性を使う.
a,bの値で条件判定して,初期選択にしたい方に
<option value="N" selected="selected">N</option>
となるようにPHPを書けばOK.書き方はいろいろあるから,考えてみて.
0692687
2005/12/11(日) 07:57:30ID:???皆様どうもありがとうございます。
1をselectedにして、2を選択したところ、
selected(1)に戻ってしまいました。
どうも考え方が間違ってるようなので
頑張って考えて方法を探したいと思います。
0693691
2005/12/11(日) 08:03:41ID:???>1をselectedにして、2を選択したところ、
>selected(1)に戻ってしまいました。
…当たり前じゃん.1が初期選択になっているんだから.
$_POSTの値によって,どれをselectedにするかをPHPで書くんだよ.
2だったら,1じゃなくて,2にselectedを指定しなきゃ.
0694687
2005/12/11(日) 08:06:11ID:???>$_POSTの値によって,どれをselectedにするかをPHPで書くんだよ.
これはいいヒントをどうもありがとうございます!
頭が固いもんでorz
早速書き直してみたいと思います。
0695nobodyさん
2005/12/11(日) 08:34:13ID:???0696nobodyさん
2005/12/11(日) 11:20:07ID:???publicやprotected、privateと宣言した方がパフォーマンス良いの?
書き換えていったら動作が機敏になった・・・
0697nobodyさん
2005/12/11(日) 11:33:42ID:???0698nobodyさん
2005/12/11(日) 13:34:34ID:???0699nobodyさん
2005/12/11(日) 13:39:28ID:???0700nobodyさん
2005/12/11(日) 14:03:12ID:???0701nobodyさん
2005/12/11(日) 14:59:39ID:???いっそ入力フォームのページと結果のページを分けてしまって、
別targetのウインドウで結果ページを出してしまうとか。
そうすれば入力側のリロードは発生しないから入力内容を再現する必要なし。
ブラウザが別に立ち上がってしまうのがイヤならframeかiframeで。
0702nobodyさん
2005/12/11(日) 15:06:13ID:???俺はむしろPHPコードの中にHTMLタグが埋め込まれてるのが嫌いなので
echoでHTMLタグを出力するのは絶対禁止派。
あと、HTMLの中に<?〜?>を埋め込むスタイルならPeggyとかで
閉じタグジャンプが使えるので、閉じ忘れなどのミスも防ぎやすい。
0704nobodyさん
2005/12/11(日) 15:28:44ID:???俺は普段こう書いてる
<OPTION VALUE="1"<?php if($a == 1) { ?> checked<?php } ?>>あ</OPTION>
0705nobodyさん
2005/12/11(日) 15:44:25ID:???たくさん必要なら関数作るだろうからあんなの何行も書くことはないだろ。
プルダウンやテキストボックスなんかはフォーマットが決まっているから関数にし易いし。
0706nobodyさん
2005/12/11(日) 16:07:05ID:???0707nobodyさん
2005/12/11(日) 17:27:24ID:???selectedじゃね?
0709nobodyさん
2005/12/11(日) 19:26:18ID:???$file_name = "sample.jpg";
$size = filesize("$file_name");
$im_in = ImageCreateFromJPEG("$file_name");
$ix = ImageSX($im_in);
$iy = ImageSY($im_in);
print "サイズ:{$size} 横縦:{$ix}x{$iy}";
0710nobodyさん
2005/12/11(日) 19:37:38ID:???大きさだけ
■ このスレッドは過去ログ倉庫に格納されています