【PHP】下らねぇ質問はID出して書き込みやがれ 82at PHP
【PHP】下らねぇ質問はID出して書き込みやがれ 82 - 暇つぶし2ch526:nobodyさん
09/03/22 11:49:05 dhNIUg3n
多次元配列へのアクセスを動的にやりたいのですが、
どうすればいいですか?

get_multi_array($array,array('hoge','fuga','poge'))
→$array['hoge']['fuga']['poge']を取得

こういう動作をさせたいのです

527:nobodyさん
09/03/22 12:30:00
>>492=499=521=523=524
立場が悪くなって第三者のフリをしようとしてるけど外してるの図

528:nobodyさん
09/03/22 12:43:51
>>527
邪魔なんだよね~
これ以上やるなら専用スレ立ててやるからそっちで共食いしてくれ

529:nobodyさん
09/03/22 12:56:54
>>528
無視できない時点で同類だって教わらなかったの?
というより自演バレバレだよ初級者君(笑)

530:nobodyさん
09/03/22 12:57:11
おまえらケンカしろ byひきこもり塾っぽいの

いいんだよ byスレ回り先生

自作自演する若者はためが無い by湯浅誠

自作自演格差社会 ~492のレス能力格差がスレッドを引き裂く

>>528は、新自由主義者
何でも排除して、格差を作ろうとする


531:nobodyさん
09/03/22 13:10:43
>>529
邪魔なんだよね~
これ以上やるなら専用スレ立ててやるからそっちで共食いしてくれ

532:nobodyさん
09/03/22 14:07:27 ofSdd/CM
モバイルからなのでID固定できませんが質問です
"<a href='".$value."'>"などとしたときに
htmlspecialcharsだけでは変数にscript:~が含まれていた場合に回避できませんが
変数の前に"URLリンク(sample.com)"とURLがあれば問題ないのでしょうか
実際Firefox,safariなどでは普通にnot foundになります

533:nobodyさん
09/03/22 14:09:38
>>526
こんなのどう?連想配列でも多分問題ないと思う。

<?php
function get_multi_array(array $a, array $keys) {
$tmp = &$a;

foreach ($keys as $key) {
if (! is_array($tmp) || ! array_key_exists($key, $tmp)) return null;
$tmp = &$tmp[$key];
}

return $tmp;
}

// 以下テスト
$array =array(
array(
array(1,2,3), array(4,5,6),
),
array(
array(7,8,9), array(11,12,13), array(14,15,16)
)
);

var_dump(get_multi_array($array, array(0, 1, 2)));


534:nobodyさん
09/03/22 14:32:22
>>529は見えない敵と戦ってるとみた

535:nobodyさん
09/03/22 14:33:52
こんな過疎板で煽り合って自分が上にしたい奴ってうつ病だろな

536:nobodyさん
09/03/22 15:07:18
>>535
よくぞ見抜いた・・

社会不適合者な俺万歳

537:nobodyさん
09/03/22 17:29:33 XWTxCtFo
test

538:nobodyさん
09/03/22 17:35:05 XWTxCtFo
<form action="log/200902.htm" method="POST">
<input type="text" name="title" value=""><br>
<textarea cols="80" rows="7" name="text"></textarea>
<input type="submit" value="send">
</form>
<?php
$title="<h2>".$_POST["title"]."</h2>";
$text='<div class="text">'.$_POST['text'].'</div>';
if ( get_magic_quotes_gpc()) {
$title = stripslashes($title);
$text=stripslashes($text);}
$text = nl2br($text);
$log = 'log/200902.htm';
$lock = 'lock.txt';
$lock_fp = fopen($lock,"w");
flock($lock_fp,LOCK_EX);
$old_log = file_get_contents($log);
$fp = fopen($log,"w");
fwrite($fp,$title);
fwrite($fp,$text);
fwrite($fp, $old_log);
fclose($fp);
flock($lock_fp,LOCK_UN);
fclose($lock_fp);
?>
これ、とあるサイトから引用してきたスクリプトなんですけど、どうやっても$_POSTの値を取得できずにlog/200902.htmの内容が<h2></h2><div class="text"></div>と内容が空になってしまいます。
POSTの値を取得するにはどうしたらいいんでしょう?どなたか知識のある方、ご教授下さい。

539:nobodyさん
09/03/22 17:37:44
とりあえず、<?php の直後で
var_dump($_POST);exit;

540:nobodyさん
09/03/22 17:39:58
それと form のアクションプロパティはそれでいいのか?>action="log/200902.htm"
自身に送るなら空白

541:nobodyさん
09/03/22 17:50:34
>>535
よくぞ見抜いた・・

社会不適合者な君万歳

542:nobodyさん
09/03/22 17:52:24 XWTxCtFo
早速ありがとうございます。var_dump($_POST);exit;としてみたのですがarray(0) { }としか表示されません...
formのアクションプロパティは合ってるかと思いますが…。log/200902.htmというファイルに書き込みたいので。

543:nobodyさん
09/03/22 17:55:25
formのactionには
データを渡すスクリプトのパスを書くんだよ

どのファイルに書き込むかとかは、
スクリプトの方で処理すること

$_POSTの中身が空の配列ってことは、
データが渡されてないってこと

544:nobodyさん
09/03/22 18:02:21 XWTxCtFo
あ!formのaction属性を空にしてみたらこんな表示が出ました。
array(2) { ["title"]=> string(4) "test" ["text"]=> string(4) "test" }

これはデータが渡されてるということなんでしょうか。しかしlog/200902.htmの中身は相変わらずです…。

545:nobodyさん
09/03/22 18:09:39
exitしてるからログは書き込まれないよ
それはそうとまずHTMLを理解しないと

546:nobodyさん
09/03/22 18:12:30 XWTxCtFo
すみません…。あまりにも無知でした。exitすると処理が終了するということはリファレンスサイトで見たはずなのに…。恥ずかしいです。
HTMLにも理解がありませんでした。重ね重ね恥ずかしいかぎりです…。

547:nobodyさん
09/03/22 18:17:48 XWTxCtFo
できました!ご教授下さった方のいう通りにしたらlog/200902.htmに書き込むことができました!
本当に無知な私にここまで親身になってくれてありがとうございました。本当に感謝します。
また何かわからないことがあったら自分で調べて、それでもわからなかったらまたこのスレにお世話になると思います。その時はどうか暖かい目で見てやってください…

548:nobodyさん
09/03/22 18:27:06
ログファイルがhtmってのなんだかな~

549:nobodyさん
09/03/22 18:34:08 XWTxCtFo
はい。htmlにさせて頂きました...

550:nobodyさん
09/03/22 18:45:54
いやそういうことをいってんじゃないんだけど
まあいいや

551:nobodyさん
09/03/22 19:52:51
普通はログはテキストのまま、つまり記事本文だけを保持する。
例えば2chは、以下のようなテキスト形式でデータを保存している(本当は違うんだが、まあ割愛)。
 nobodyさん<><>2009/03/22(日) 18:34:08 ID:XWTxCtFo<> はい。htmlにさせて頂きました... <>
そのログファイルの内容を読み込んで、HTMLとして整形して書き出すPHPで本文を表示させるわけだ。

HTMLで保持しない理由はいくつかある。パッと思いつくのは
柔軟性
 例えば、表示されるHTMLを別の形にしたいとか、RSSも書き出したい、という時に再利用しづらい。
 記事削除passをつけたいとか、データ保持先をDBにしたいとか、色んな拡張性が失われたりもする。
セキュリティ
 本文に<script>alert('うけけけけけ');</script>と書かれたらどうなる?とか。
 どちらにせよ対策は必要なのだが、ログをHTMLとして持っていると、どこで対策すりゃいいのかが曖昧になりやすい。
容量
 無駄にデカくなる。大した問題じゃないが。

552:nobodyさん
09/03/22 20:56:06
実体参照化してからHTML化すれば?

553:nobodyさん
09/03/22 23:17:35
やり方にもよるかな
ログをhtmlとして書き出す掲示板はkentも作ってたな

554:nobodyさん
09/03/22 23:23:17
やり方にもよるって・・

ログをHTMLとして書き出しておくのは
論外といったら失礼かもしれないけど、
明らかに保守性なさすぎじゃないか?


555:554
09/03/22 23:29:53
書き出しておく・・じゃなくて
保持しておくだった

556:nobodyさん
09/03/22 23:30:00
テンプレートとログを分けておいて、記録するときにテンプレートを元にhtml化すればおkだけどな

557:nobodyさん
09/03/22 23:30:47
XMLみたいなもんと思えば、アリじゃないかとも思う。
一件一行で、ヘッダとフッタを除いた状態で保存するなら、そんなに保守性もわるくないと思うが。

558:nobodyさん
09/03/22 23:34:55
閲覧が多くて書き込みが少ないのならhtml化してもいいかな

559:nobodyさん
09/03/22 23:43:37
あめぞうスクリプト見れ

560:nobodyさん
09/03/22 23:49:52 cLpptsUH
現在自分が作成しているPHPとMySQlを使ったログイン認証システムで
穴がないか不安になってきたので、質問します。
要点のみを記載します。

・ID(又はメールアドレス)とパスワードをフォームに入力して、
 MySQL内の情報を照合
・正しければトークン用のコードを発行し、ユーザ情報を更新
 (テーブルのtokenフィールドに作成した値を追加)
・その他、セッション変数にはログイン時のUAとIPアドレスを代入
・各ページアクセス毎にセッション情報が正しいかをIFで調べる
(会員情報編集などの場合、ユーザIDとトークンコードが正しいか照合)
・パスワードはmd5で保存

と言うことをしています。他に「これもしろ」と言うことはありますでしょうか?

561:nobodyさん
09/03/22 23:50:51
ソースを見せるのが早い

562:nobodyさん
09/03/22 23:51:39
ID(又はメールアドレス)とパスワードをフォームに入力して、
 MySQL内の情報を照合


(1)この時に、SQLインジェクション対策はされているのか?

563:nobodyさん
09/03/22 23:52:30
md5は破られるのでsha2にしたほうが無難

564:nobodyさん
09/03/22 23:52:40
>>560
そういうしつもんすると>>562みたいな質問がきりがなく出てくるのでソース出したほうが早い

565:nobodyさん
09/03/23 00:10:54
>>533
やっぱり再帰ですね
ありがとうございました

566:560
09/03/23 00:16:39
>>562
しています。まず入力値にhtmlspecialcharsをかけて
DBアクセス時にmysql_escape_stringをしています。

ソースに関してですが、莫大な量になるので掲載を控えます。
それにソースや構文の組み立てを聞きたいのではなく、
自分の足りない知識・誤っている知識を指摘していただきたく思い、質問しました。

567:nobodyさん
09/03/23 00:29:46
( ゚д゚)

568:nobodyさん
09/03/23 01:02:57
>>566
>まず入力値にhtmlspecialcharsをかけて

らめぇええええ

569:nobodyさん
09/03/23 01:35:27
>>565
否。ただのループ。

570:nobodyさん
09/03/23 02:53:59 RPfvHZ0v
test.txt
> 0123456789

test.php
> $fp = fopen("test.txt", "r");
> while(!feof($fp)) {
>   print fread($fp, 1);
>   flush();
>   sleep(1);
> }
> fclose($fp);

test2.php
> $fp = fopen("test.txt", "w");
> fwrite($fp, "aaaaaaaaaa");
> fclose($fp);
>
> $fp = fopen("test.txt", "r");
> print fread($fp, 10);
> fclose($fp);

test.phpが走ってる最中にtest2.php走らせても
test.phpの出力にtest2.phpの書き換えは反映されなかった。

読み出しに関してはルーズな実装してもOKって事?

571:nobodyさん
09/03/23 05:27:55
flushされるタイミングの都合で、たまたまじゃないかなぁ。

572:nobodyさん
09/03/23 05:29:12
良く見たら明示的にflush は、してるのか。
ごめん。

573:nobodyさん
09/03/23 22:30:27
>>560とは別人で悪いんだけど、気になったからよこやり入れさせて。

>>568
ID(もしくはメールアドレス)は、必ずしもブラウザで表示するわけじゃないから、
 ・DB内の情報と照合する時 → mysql_escape_string(mysql_real_escape_string)
 ・ブラウザに表示する時   → htmlspecialchars
みたいにする、ってことでおk?
じゃないと、ID(もしくはメールアドレス)を更新する際に、'<'が'<'って保存されてしまうからっていうことかな。
見当違いだったらすまん。

574:nobodyさん
09/03/23 22:33:45
連続書き込みスマソ

>>573訂正
じゃないと、ID(もしくはメールアドレス)を更新する際に、'<'が'&lt;'って保存されてしまうからっていうことかな。

575:nobodyさん
09/03/23 22:38:01
そうやって保存されてしまうからっていうのと、
保存されてしまうことによって再利用するとき不便になるからだね

576:nobodyさん
09/03/23 22:58:16
test

577:nobodyさん
09/03/23 23:07:14
>>575
なるほど、いい勉強になった。
ありがとう。

578:nobodyさん
09/03/23 23:45:08 uVBii4+5
サーバを再起動したらapacheのerr.logに
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\PHP\\ext\\php_curl.dll'
と同じようなログがたくさん出ます。
でも、該当のファイルは存在します
何が原因でしょうか?

579:nobodyさん
09/03/23 23:53:02
>>573-575
でもさ、ID・メールアドレスを更新する時に<を使う場合ってあるの?
IDはだいたい半角英数字だし、メールアドレスもそうでしょ?

580:nobodyさん
09/03/24 00:01:55
どこでサニタイズするかは勝手だが、
100%ってことはないので出口でサニタイズしろってエロい人が言ってた

581:nobodyさん
09/03/24 00:17:34
サニタイズニダ!

582:nobodyさん
09/03/24 00:41:05
>>578
PHPのバージョンは?

DOS窓から、php -mや、php -iって打っても、エラー出る?

5.2.9-1なら
> Please note that the cURL related function is disabled when open_basedir or safe_mode enabled.
ってニュースが出てたけど、関係しそうなとこある?

583:nobodyさん
09/03/24 04:21:02
すいません。PHP勉強して半年になります。順調に進んでいたのですが
echo $a[0] = 'aaa';
echo $a[0][0] = 'news';
こうすると、なぜかバグルのですが、なぜですか?


584:nobodyさん
09/03/24 04:25:00
そりゃechoですからね
出力だけしてくださいよ

585:nobodyさん
09/03/24 04:25:16
それは、君が>>1を読めない子ちゃんだから。

586:nobodyさん
09/03/24 04:26:30
すいません、なぜこれでバグになるかわからないんです
echo $a[0] = 'aaa';
echo $a[0][0] = 'news';
print_r($a);
↓結果
Array ( [0] => jaa )

587:nobodyさん
09/03/24 04:26:58
>>584
おまいさんは、輪をかけてドアホーみたいだけどな

588:nobodyさん
09/03/24 04:28:52
>>586
バグってないじゃん。仕様通り
文字列の1文字目を置換してる

589:nobodyさん
09/03/24 04:30:23
バグって増すよ
<?php

$a[0] = 'aaa';
$a[0][1] = 'jjjjk';

print_r($a);
Array ( [0] => aja )

590:nobodyさん
09/03/24 04:32:35
>>589
バグじゃないよ。
$a[0]は文字列
$a[0][1]はその2文字目を代入しようとしてる文字列の1文字目で置換せよ
だから、$aは1要素配列のまま。
そんだけ。

591:nobodyさん
09/03/24 04:34:04
>>590
そうなるんですか。知りませんでした。今までやってきて
そんな配列あったんですか 適当に使ってました

592:nobodyさん
09/03/24 04:34:50
>>591
マニュアルに書いてあるよ。

593:nobodyさん
09/03/24 04:35:22
自分は初心者なので、配列=箱としか書いてあるものをみたことが
なかったんです。助かりました>>1-589

594:nobodyさん
09/03/24 04:39:30
変数を array で初期化しないで、いきなり配列として使うのは、どうも生理的・本能的にダメ。

595:nobodyさん
09/03/24 04:42:07
arrayで初期化しても置き換えられますよ
自分初心者だったのでこんなのあったんだとびっくりしました

596:nobodyさん
09/03/24 04:46:27
残念ながら>>594が言ってるのは次元の違う話だ
PHP使いは適当がモットーだから気にしなくていい

597:nobodyさん
09/03/24 04:49:11
>>596
そうですか。今まで掲示板とブログ作ったんですか
そのような配列の使い方を書いてあるのがみたことなくて
気になりました

598:nobodyさん
09/03/24 07:45:46
2重配列って呼び方であってる?

599:nobodyさん
09/03/24 07:53:32
2次元配列じゃないよ。そのケース。
単に、1次元配列の要素が文字列で
その文字列にstring offsetでアクセスしてるだけ

600:586
09/03/24 08:34:05
難しいなあそんなの出てこなかった
初心者本には、
あくまで 配列は個々の箱だと意識してました
データ型を指定しなくていいように、箱も好きに使っていいと
思ってました。


601:nobodyさん
09/03/24 08:34:37
そりゃ初心者本だからだろ

602:nobodyさん
09/03/24 08:52:05
>>589
バグ

>>590は下のコードと勘違いしてるんじゃないのかね
$str = "12345";
$str[0] = "a";
echo $str; // a2345

603:nobodyさん
09/03/24 08:55:32
>>602
いや、だからそれとやってることは一緒だろ

604:nobodyさん
09/03/24 08:56:49
602が勘違いしてるんじゃないのかね

605:nobodyさん
09/03/24 09:01:48
コンパイラ言語はデータ型ちゃんと指定するから
静的な変数(配列)の型定義というのは
型に応じたメモリ領域を確保するということ(Javaでint型なら4バイトlong型なら8バイト等)
PHPはインタプリタだからその辺を動的にやってるわけ
この辺をちゃんと理解してないと正しいイメージはわかない
配列は箱ではなく連続したデータというイメージが正しい
メモリ上ではそのように配置されている

606:nobodyさん
09/03/24 09:45:45 VfITkfEn
>>582
versionは5.2.3だったと思います
C:\php>php -m としたら、「isqlt09a.dllが見つからなかったため、このアプリケーションを開始できませんでした。
インストールし直すと解決する場合があります」 とアラートが出ました

C:\php>php -m
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_ifx.dl
l' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_oci8.d
ll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pdo_oc
i.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pdo_oc
i8.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pspell
.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_sybase
_ct.dll' - 指定されたモジュールが見つかりません。

C:\php>php -pでも同じ結果です
見つからないって言われてるモジュール、extの中にちゃんと存在してるんですが、、

607:586
09/03/24 19:06:44
誰かプロの人
$aiueo[0] = "a";
$aiueo[0][0] = "aa";
とPHPで入れると置き換わったりする理由を書いて下さい


608:nobodyさん
09/03/24 19:09:04
>>606
記憶違いかも知れんが、依存関係の都合でライブラリを読み込む順序によって、
そんなメッセージがでたかも。

以前、Windows版のPHPってサンプルのphp.iniの順番だとエラーが出てずいぶん
悩んだことがある。

609:nobodyさん
09/03/24 20:03:31
>>607
>>1

610:nobodyさん
09/03/24 20:04:24
>>606
書いてないから確認しとくけどinclude_pathの設定は?

611:nobodyさん
09/03/24 20:09:50
>>607
置き換わる理由は仕様だから。それだけ。

$a[0] = 'abc';
$as = 'abc';
if ($a[0][0] === $as[0]) {
echo ' $a[0][0] equal $as[0]' . " <br />\n";
}
echo "target :" . $as . " = " . $a[0] . " <br />\n";
echo "offset0:" . $as[0] . " = " . $a[0][0] . " <br />\n";
echo "offset1:" . $as[1] . " = " . $a[0][1] . " <br />\n";
echo "offset2:" . $as[2] . " = " . $a[0][2] . " <br />\n";

$as[1] = $a[0][1] = 'xxxxxxx';
if ($a === array($as)) {
echo ' $a is array of $as' . "<br />\n";
}

echo "replaced:" . $as . " = " . $a[0] . " <br />\n";
echo "offset0 :" . $as[0] . " = " . $a[0][0] . " <br />\n";
echo "offset1 :" . $as[1] . " = " . $a[0][1] . " <br />\n";
echo "offset2 :" . $as[2] . " = " . $a[0][2] . " <br />\n";


612:nobodyさん
09/03/24 20:14:05
>>606
併せて、php.iniで、extension_dirがC:¥PHP¥extになってるか確認してみて。

613:nobodyさん
09/03/24 20:15:53
すまんinclude_path関係ないね

614:nobodyさん
09/03/24 20:36:16
>>606
phpinfo()を実行してみて、php.iniをどこから読み込んでいるのかも確認してみて。

以前、WINDOWSディレクトリと、phpの展開先の両方に異なる設定のphp.iniを置いていて、はまったことがあるので。

615:nobodyさん
09/03/24 20:37:10
始めの頃ありがちw

616:nobodyさん
09/03/24 21:07:22 /zsLtnA9
クラスの数が多くなってきたので(__autoloadで読み込み)
複数クラスを一つのファイルにまとめたら速くなるのではと
思うのですが、それって実際どの程度の効果があるでしょうか?
まとめなくても、元来OSがファイルキャッシュするので、
あんまり変わらない気もします

617:nobodyさん
09/03/24 21:09:24
計れば良いのでは?

618:nobodyさん
09/03/24 21:18:30
>複数クラスを一つのファイルにまとめたら速くなるのではと
再利用とか無視して一人で使うんだろうから別にいいとは思うけど
それでも基本どおり1クラス1ファイルにしときな

619:606
09/03/25 00:12:15 4yhBz/QX
みなさんたくさんのレスありがとうございます

>>612
そうなってました
>>614
C:\WINDOWS  でした。正しいですよね…

>>608さんの書いてる原因かなぁ
もうwindowsで作るの自体やめよっかな

620:nobodyさん
09/03/25 00:32:37
>616
ボトルネックがわかっていない状態でチューニングをしてはいけない。
まずは測定。

ファイル数云々というより、__autoload()の呼び出し回数が減ることによる高速化は一応期待できるかな。
マジックメソッドの類は総じて重い。
まあ、DBやファイルへのアクセスがあるならそっちがボトルネックになってるとは思うけど。

621:nobodyさん
09/03/25 01:59:46
>>616
環境いじれるなら、APCとか使うのが良いんじゃないかなぁと思う。
ソースコードは扱いやすい単にしておいた方が、いろいろ良いし。

自分ははクラスはモジュールぐらいの単位の方が扱いやすいんで、
1クラス1ファイルにはしてないけど。

622:nobodyさん
09/03/25 11:16:26 yQlt60AA
PDOで永続接続を使っている場合、prepareを使うと2回目以降の実行が効率化するんでしょうか
それとも実行のたびに毎回prepareステートメントを発行するから意味無いんでしょうか

623:nobodyさん
09/03/25 11:18:39
prepareって接続してんの?

624:nobodyさん
09/03/25 15:06:05 Ijn9qBql
htmlspecialchars($var, ENT_QUOTES, 'utf-8')
でhtmlエスケープしていたのですが、
アンパサンドがエスケープされるので、
数値実体参照が「&#~;」という文字列として表示される
ということが分かりました。
数値実体参照の場合は生で表示するにはどうしたらいいですか?

625:nobodyさん
09/03/25 15:15:24
出力するときに&に置換すればいいじゃん

626:nobodyさん
09/03/25 16:45:47
フォームの処理でmethodがpostの場合、
一度submitで送信した後、更新ボタンを押すと
再度送信するようなアラートが出ますが、
これを出さないようにする方法はないでしょうか?

header関数で送信元のページにリダイレクトして戻す方法以外で教えて下さい。

627:626
09/03/25 16:47:05 7ip+uIiL
すみません、ID隠してました・・・

628:nobodyさん
09/03/25 17:24:35
>>626
ブラウザの仕様なのでPHPでどうこうできる問題じゃない

629:nobodyさん
09/03/25 19:52:08 Ut4OfJaE
俺のマシンはwinXPの32ビットで4Gのメモリを積んでます。
システムのプロパティで見ると3.25GB認識してるのですが
PHPでどんなに重い処理をしてもタスクマネージャで見ると700MB位しか使っていません。
PHPのメモリリミットは-1の無制限にしてるのに何で?
もっとメモリ使ってくれたら速くなりそうなんだが。

スペックはアパッチ、PHP5

630:nobodyさん
09/03/25 20:13:46
>>629
んなこたーない

631:nobodyさん
09/03/25 20:38:00
メモリ使ったら速くなる?

632:nobodyさん
09/03/25 20:47:09
>>626
「リロード対策」というキーワードでググると
情報が出てくる。

だが、自分には複雑すぎて理解できなかったが。

633:nobodyさん
09/03/25 21:30:14 POBIuYee
問題の切り分けレベルですいませんが
URLリンク(kokusan.syokuryo.jp)
このblogパーツですが中身のjs↓
URLリンク(kokusan.syokuryo.jp)
を機能丸ごと再現してみたいのですが(用途は勉強、兼遊びで)

再現するのに
■サーバサイドの技術は何が必要か
■ローカル側は.jsだからとりあえずはコピペで十分?
という所で(入口ですが)詰まってます。
どなたかご助言plz


634:nobodyさん
09/03/25 21:32:29
まずJavaScriptの基礎から学ぶといいかと

635:nobodyさん
09/03/25 21:50:38
>>629
画像データをメモリ上に読み込んだりしない限り
そんな使うことはないだろ
重い処理なんていってもPHPの場合たかがしれてる

636:nobodyさん
09/03/25 23:08:42
>>625
そうですね
そもそも&までエスケープする仕様はやりすぎのような・・
2chでも&はエスケープしてないし。googleも。

637:nobodyさん
09/03/25 23:23:27
>>636
xmlデータにおいては、&は実体参照必須だけどね。

638:nobodyさん
09/03/26 00:04:21
>636
気に食わないなら文句言ってないで自分で実装すりゃいいじゃん。
単純に置換するだけだから、str_replace一発でできるぞ。

俺はやりすぎとは思わないな。入力文字列をそのまま画面に出力したいなら、&の置換もしたほうがいい。

639:nobodyさん
09/03/26 00:25:15 l1PHOXdz
数値を0.5刻みでフォーマットしたいのですが、
何かスマートな方法はありますでしょうか?

(例)

1.0以上1.5未満 => 1.0
1.5以上2.0未満 => 1.5
2.0以上2.5未満 => 2.0

よろしくお願いします。

640:nobodyさん
09/03/26 00:35:55
>>639
2倍にして切り捨てて半分にする

641:nobodyさん
09/03/26 00:39:42
>>639
四捨五入じゃなくて?

642:nobodyさん
09/03/26 00:39:59
>>638
安全にこしたことはないですが、今回は実体参照を頃されてしまうのが問題なので・・
それにしても、エンコードを意識せず、単に置換したらいいだけなんですか?
だとしたら、htmlspecialcharsのエンコード指定は何に使われているんだろう

643:nobodyさん
09/03/26 00:55:11
>>639
round

644:nobodyさん
09/03/26 01:05:32 fG8U3yBv
MySQLのSQL文のWHEREを
$where_ary = array("id"=>"1","name"=>"あああ");
foreach($where_ary as $key=>$value){
$array[] = $key."='".$value."'";
}
$where = join("&",$array);

と言うように連想配列を使って生成しています。
上記のようにすると、変数に値が入っている場合は大丈夫なのですが、
MySQLの関数(NOWやDATE_FORMATなど)を使いたい時、使えません。
かといって値の部分に関数を記述しても文字列となります。

もっと効率よく生成するには、どのようにすれば良いのでしょうか?

645:nobodyさん
09/03/26 01:07:24
>>642
指定はできるけど、何も使われていない、って情報が
どっかのブログに書いてあった

646:nobodyさん
09/03/26 01:23:03
>>644
Zend_Dbの実装はこんな感じ
URLリンク(framework.zend.com)

647:nobodyさん
09/03/26 01:52:56
URLリンク(framework.zend.com)

648:644
09/03/26 02:06:29
>>646-647
これは非常に参考になります。
実際に自分もSQL文の生成にはクラスを使っているので
Zend Dbを参考に、独自の仕様にしてみます。

649:nobodyさん
09/03/26 11:39:12 p1YkL4wy
WindowsにCLIでインストールされたPHPでphp -a ではなく、
ある程度インラインで入力してからまとめて実行したいのですが、
どうすればできますか?


650:nobodyさん
09/03/26 13:22:22
>>649
C:\>php

651:nobodyさん
09/03/26 18:55:54 JIscrcVE
phpで、「何時間毎に」とか、「何月何日に」とかいう指定で、プログラムを走らせたりメールおくったりするにはどうすればいいでしょうか?

652:nobodyさん
09/03/26 19:01:47
>>651
cron

653:nobodyさん
09/03/26 19:02:58
>>651
それか、そのファイルに対する最終アクセス時刻を記録しておいて、
「前回のアクセスは3日前だな、、、
だったらよし、今回は3日分の処理を一気にやればいいんだな」
とかってプログラムで判断させて、アクセスするたびに
その処理を実行するとか。

もちろん、この場合、アクセスがなければ処理も実行されない。

654:nobodyさん
09/03/26 19:03:41
Windowsだったら、タスク スケジューラ
それがUNIXのcronと同じ。

655:nobodyさん
09/03/26 19:08:12
>>651
こういうこと?
URLリンク(phpspot.org)

656:nobodyさん
09/03/26 19:31:31
クソサイトの宣伝すんなや
web cron

657:nobodyさん
09/03/26 20:06:05
すぐ吠えるDQNって・・・どこまで底辺なんだよ

658:nobodyさん
09/03/26 20:59:43 JIscrcVE
ありがとう、普通にcronすればよかった、トンクス

659:nobodyさん
09/03/26 21:05:33
>>649
STDINを使えという話ではなくて?
URLリンク(jp.php.net)

660:nobodyさん
09/03/26 21:23:14 ih4lRG32
PHPのソースを読んでコメントを抽出する正規表現を書きたいのですが
どうにもうまくヒットさせることができません
/**  */  */
の時に長い方がマッチされてしまいます
どう書けばいいですか?

661:nobodyさん
09/03/26 21:32:53
"!/\*(.*?)\*/!s"

662:nobodyさん
09/03/26 21:48:28
>>661
できました!ありがとうございました。
*?で最短にマッチさせられるんですね

663:nobodyさん
09/03/26 23:16:05 46RAjvuH
fgetcsv関数って基本的にwhileとセットで使うの?

664:nobodyさん
09/03/26 23:23:56
retunr値が配列なだけだろ

665:nobodyさん
09/03/27 07:08:11 viybN2w6
symfonyにあるような、
ディレクトリを再帰的にさらってクラスをリストアップする機能が欲しいのですが
どうしたらいいですか?
PEARのPHP Parserを使ってみたのですが
エラーが出まくって使い物になりませんでした

666:nobodyさん
09/03/27 08:05:52
>>665
既に検討したとは思うが、クラス名を取得する程度なら、Tokenizerで処理しても、
大した手間でもなんじゃないの。

URLリンク(jp.php.net)

667:nobodyさん
09/03/27 09:19:56 DtOzsPN+
rename関数でフィアルを移動するプログラムを書いています
移動先に同名のファイルがある場合に上書きさせたいのですが
一度unlinkしてからrenameしないと駄目なのでしょうか?

668:nobodyさん
09/03/27 09:23:54
うん

669:nobodyさん
09/03/27 15:04:57
>>666
こんな便利そうなものがあったとは!
まさに欲しかったものです
ありがとうございました

670:nobodyさん
09/03/27 15:35:49 LbT/oMC/
ただ今MVCにてアプリケーションを作成していて
モデル部分にデータベース関係の処理(selectやdelete)を全てまとめてますが
フォームの項目チェックなどのバリデーション関係は
モデルではなくコントローラーに記述するべきですかね?

671:nobodyさん
09/03/28 00:29:13
>670
MとCならばC。Cからバリデーション専用クラスを呼び出せ。
ただし、Cにベタ書きで実装するのはオススメできない。Visitorパターンで実装するのが割と良く見る形。
バリデートはほぼ全てのフレームワークに存在する機能なので、おとなしくフレームワークのマニュアルを読んで構成をパクったほうが速いけどな。

672:nobodyさん
09/03/28 00:34:00
バリデーションがC??

673:nobodyさん
09/03/28 02:42:46
画面やテーブルごとにチェックする項目が異なるのに
バリデーションがCはありえない

674:nobodyさん
09/03/28 06:25:24 xuBHT5om
newしたオブジェクトを変数に代入せずにメソッドを呼びたいのですが
そういう書き方ありますか?
{new Hoge()}->method()
みたいなイメージです

675:nobodyさん
09/03/28 06:46:27
>>674
URLリンク(74street.ddo.jp)
これかな?

ちなみに、インスタンス化せずメソッドを使う場合、宣言時にメソッドに「static」を付け、「クラス名::メソッド名」で呼び出す。。

class SampleClass {
public static function func($a,$b){
return $a + $b;
}
}
$ans = SampleClass::func(1,2);

676:nobodyさん
09/03/28 08:45:03
>>674
それは不可能

677:nobodyさん
09/03/28 08:49:24
>>676
お前、馬鹿だろ
前のレスで完結してるのにわざわざくだらん横槍を入れる必要はない

678:nobodyさん
09/03/28 08:56:18
静的メソッドしか呼び出せないじゃん

679:nobodyさん
09/03/28 08:58:31
>>676じゃないが、>>675 は別モンだと思うけどな。

>>674は何でそんなことしたいんかナゾだけど。目的も書くべきだろ。
ただの興味ということなら、それはそれで良いけど。

680:nobodyさん
09/03/28 11:44:19
というか何の意味があるんだろう

681:nobodyさん
09/03/28 12:52:45 0oeFWAvW
マニュアルを見てもいまいちわからないのですが
$a = 2;
$b = $a * 2;
echo $b;
$a = 4;
echo $b;
期待する結果は48ですが実際は44になります。($bには2行目の結果が入ったままってことでしょう)
2行目を$b = &$a * 2;のようにすると24になります。(*2は無視?)
期待する結果を表示するにはどのように記述すればいいのでしょうか。
PHP5.2.6

682:nobodyさん
09/03/28 14:13:07
>>681
言いたい事は理解できた
$b は常に $aに入れた値を2倍にする変数にしたいという事だな

2行目の $b = $a * 2 は $bに$aの値を2倍した値を入れるという命令だ
だから2行目では$bで$a(2)*2で4が入って3行目で4が出力、
4行目で$aに4を代入しているが5行目では$bは変化無しの4が表示されるから44となる

そして $b =& $a * 2 は変数の参照という事になって $b に入れた値は $a にも反映されるという事だ
2行目で変数&bは$aを参照しているとしているから3行目で2が表示されて
4行目で$aに4を入れているが$aと$bは参照の関係にあるから$bは4となり24となる

変数でそんな事が出来るか記憶を辿ってみたが…出てこない
件を解決する簡単な方法は関数を作ることだと思うんだが?

683:nobodyさん
09/03/28 14:21:32
>>681
掛け算の結果にまで参照変数を反映させるのは無理。もう一回掛け算するしかない
$a = 2;
$b = $a * 2;
echo $b;
$a = 4;
$b = $a * 2;
echo $b;

684:nobodyさん
09/03/28 14:30:41 jCCBzDpK
pChartを使ってレーダーチャートを描いています。
デフォルトでは縦軸にラベル(目盛?10、20、30...など)が表示されるのですが、
これを表示しないようにするにはどうすればよいのでしょうか?
公式のドキュメントを読んだのですが、わかりませんでした。

どなたか分かる方がいましたら、よろしくお願いします。

685:681
09/03/28 15:12:28 0oeFWAvW
>>682-683
ありがとうございます。
変数のみでは求めることは無理なんですね。関数で処理することにします。

686:nobodyさん
09/03/28 15:25:27
多分681がイメージしているような、「$aを2倍して返す処理」自体を$bに変数として格納するような仕組みはクロージャという。
関数をその場で組み立てるイメージだな。普通に関数を使う場合と違い、「2」の部分を$bの生成時に動的に組み込める。
JavaScriptやRubyでは可能、JavaやPHPでは不可能。PHPでは次のバージョンには盛り込まれる見込み。
これもまあ、関数を作っているわけだけど。
クラスを使ったりグローバル変数を使ったりしていいなら、今のPHPでも同じ処理は一応可能。

687:nobodyさん
09/03/28 16:48:33 y1nm6eda
POSTされた各フォーム毎の項目チェックをする時に、
$_POSTを直接チェックするのは何か問題がありますか?

if(!isset($_POST["name"])){
echo "未記入です";
}

それか全て一旦POSTを変数に代入してチェックした方がいいですかね?

688:nobodyさん
09/03/28 17:15:52
まったく問題ない

689:687
09/03/28 17:25:52
>>688
返信ありがとうございます。
なんとなく自信がなく聞いてみたんですが安心しました。
ありがとうございました。

690:nobodyさん
09/03/28 19:01:42
このスレを見ている人はこんなスレも見ています。(ver 0.20)
【ショタ】3次専ショタスレ 12【女装・美少年】 [Download]

このスレに変態がいる!!

691:nobodyさん
09/03/28 19:31:18
phpの関数名でググった時
公式のドキュメントじゃなくて
phpspotのアフィドキュメントが上位に来るのがむかつくんだけど
どうしたらいい?
googleで除外urlを指定できたらいいんだけど

692:nobodyさん
09/03/28 19:36:20
>>691
>>1

693:nobodyさん
09/03/28 22:31:41
>>690
呼んだ?

694:nobodyさん
09/03/28 22:48:03
URLリンク(journal.mycom.co.jp)

695:nobodyさん
09/03/28 22:52:21
GOTO文wwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

696:nobodyさん
09/03/28 23:16:06
GOTOを否定する奴は例外も使うなよ

697:nobodyさん
09/03/28 23:27:52
gotoよりはfinallyが欲しかったねぇ。
なんか都合があるんか知らんが。

698:nobodyさん
09/03/29 05:04:23
gotoってどういうときにつかうの?

699:nobodyさん
09/03/29 06:25:15
帰ってきてほしくない時

700:nobodyさん
09/03/29 09:35:20
人生をやり直したいとき

701:nobodyさん
09/03/29 13:21:29 EDw1f4T+
define("TEST",realpath("."));

という定数があったとして、TESTの中身が「/home/test/public_html」だとします。
通常は、定数指定して
include_once(TEST.'/test.php');

としてディレクトリ指定代わりに出来ますが、
定数の中身で表示する事って出来ませんでしょうか?上の例で言うと
include_once('/home/test/public_html」'.'/test.php');
と言うように書き出せればと思っています。

702:nobodyさん
09/03/29 13:28:04
表示ってどこに?ソースコード中に?

703:701
09/03/29 13:29:17
>>702
fopenでファイル作成する時に、その出力側のファイル上に

include_once('/home/test/public_html'.'/test.php');

という形で記述されて欲しいのです。

704:nobodyさん
09/03/29 13:31:15
意味が分からない
fopenでtest.phpを作成するってこと?

705:nobodyさん
09/03/29 19:34:50
fopenはファイル開くだけだろ。PHPとしては動かないよ
PHPスクリプトをファイルとして開く理由がわからんが

706:nobodyさん
09/03/29 20:07:08 g6t/L+Oe
URLリンク(atelier-ps3.jp)

このサイトいくらぐらい掛かってると思いますか?


707:nobodyさん
09/03/29 20:07:18 A+4tAAtu
配列で存在しないキーにアクセスするとnoticeが出るはずですが、
以下のようにすると出ません。
これは何故ですか?

error_reporting(E_ALL | E_STRICT);

class Hoge {
protected $_value = array();

public function & getEntity($key){
return $_value[$key];
}
}

$hoge = new Hoge();
var_dump($hoge->getEntity('no_key'));

708:nobodyさん
09/03/29 20:08:51
return $this->_value[$key];
でした
結果は同じですが

709:nobodyさん
09/03/29 20:18:24
参照だから。

710:nobodyさん
09/03/29 20:20:00
リファレンス返してるからだろ

711:nobodyさん
09/03/29 20:23:38
リファレンスだと何故noticeが出ないのですか?

712:nobodyさん
09/03/29 20:34:22
リファレンスって何か知らんで使ってんの?

713:nobodyさん
09/03/29 21:07:35
>>711
参照を張るとzvalが増えて変数を定義したのと同じことになるからな。
計算機の基礎だと思うが。

714:nobodyさん
09/03/29 22:45:02
>>696
強盗みたいだから否定してるのであって例外は問題ない、というのが今の反GOTO派の主流

715:nobodyさん
09/03/29 23:05:06 lmZMeLkn
【OS名】CentOS 5.1
【PHPのバージョン】php5.16
【連携ソフトウェア】mysql
【質問内容】

print'<tr>';
while ($row = mysql_fetch_object($res)){
print'<td>'."$row->NAME".'</td>';
}

MySQL から 特定のフィールドを取得し,HTML のテーブルに5列ずつ表示しようとしております。
5列毎にprint'</tr>';を挿入して
テーブルの行数をかえたいのですが,どのようにすればよろしいでしょうか?

【求める結果】MySQL テーブルのの行数が8行の場合
<tr>
<td>NAME1</td>
<td>NAME2</td>
<td>NAME3</td>
<td>NAME4</td>
<td>NAME5</td>
</tr><td>
<td>NAME6</td>
<td>NAME7</td>
<td>NAME8</td>
</tr>



お手数ですがよろしくお願いします。

716:nobodyさん
09/03/29 23:19:48
pager?

717:nobodyさん
09/03/29 23:21:58
>>713
なるほど、参照を張ると変数定義と同じになるんですね。

718:nobodyさん
09/03/29 23:22:53
雑だけど。

$i = 1;
while ($row = mysql_fetch_object($res)){

print'<td>'."$row->NAME".'</td>';
if($i == 5){
print'</tr>';
$i = 1;
}else{
 ++$i;
}
}

719:nobodyさん
09/03/29 23:28:38
>715
HTMLマークアップが不正な件。
8個の場合、2行目3列目までで終わるが、余った2セルはどう埋めるんだ?

>718
<tr>がない。

720:715
09/03/29 23:39:03 lmZMeLkn
ご回答ありがとうございます。

>>718 を参考にして,
$i = 1;
while ($row  = mysql_fetch_object($res )){
if($i == 1){
print'<tr>';
}
print'<td>'."$row->NAME".'</td>';
if($i == 5){
print'</tr>';
$i = 1;
}else{
++$i;
}
}
としてみました。
>>719 の件については,とりあえず暫定的に MySQL 内の行数を5の倍数にしておきます。


皆様ありがとうございました。

721:nobodyさん
09/03/30 05:37:45 Sq1DK82P
DBなどすべてUTF-8で構築しております。
そのうえで、xmlWriter()をつかって「EUC-JP」で
XMLを書き出したいのですがどうしたらよいのでしょうか?
単にstartDocumentでEUC-JPを指定するだけでエンコードを変更できるのでしょうか?
Firefoxでは表示され、safariだとエラーになってしまいます。

$writer = new xmlWriter();
$writer->openMemory();
$writer->startDocument('1.0', 'EUC-JP');
$writer->startElement('root');
(略)
$writer->endElement();
$writer->endDocument();
return simplexml_load_string($writer->outputMemory(TRUE));

ちなみに各Directiveの値もメモしておきます。
mbstring.http_input auto
mbstring.http_output pass
mbstring.internal_encoding UTF-8
mbstring.script_encoding no value


※もうひとつのスレッドでは答えがわからずじまいで、
 どうしたらよいかヒントだけでもつかめたらと思います。
 どうぞお願いいたします。

722:nobodyさん
09/03/30 08:22:50
マルチ乙

723:nobodyさん
09/03/30 12:12:19 ObvykTsh
初心者ですが質問させて下さい。
URLリンク(www.gen-x-design.com)
このサイトのthumbnail.inc.phpを使って画像をリサイズしてサムネイルを生成したのですが
いまいち仕組みがわからずにいます。
リサイズされた画像はどこかに保存されているんでしょうか?



724:nobodyさん
09/03/30 12:16:26
スクリプトの仕組み解らなくてもOSのファイル検索くらいは使えるだろ

725:nobodyさん
09/03/30 12:28:05 ObvykTsh
OSのファイル検索?
実際にサイトにアップして表示させてみました。
そしたらリサイズされた画像が表示されたんですが
サイトのどこをみても画像が増えた形跡がありません。
リサイズした画像を別に保存するわけではないのですか?

726:nobodyさん
09/03/30 12:41:43
いやだからファイル探したいならファイル検索すればいいじゃん

727:nobodyさん
09/03/30 12:49:44 ObvykTsh
検索したくても、どんな形式でどんなファイル名で保存されてるかわからないので
画像のアドレスをみても
show_image.php?filename=sample.jpg&width=250&height=250
と書いてあるだけなんです


728:nobodyさん
09/03/30 13:07:26
別に保存されてないんじゃねーの?

729:nobodyさん
09/03/30 13:09:40
これしてねーんだろ
$thumb->save('path/to/file.jpg',80);

730:nobodyさん
09/03/30 13:13:48 ObvykTsh
あ、それしてないですね
それをしないとただ大きい画像を縮小してるだけで意味ないんでしょうか?


731:nobodyさん
09/03/30 13:26:05
サムネで表示しただけで保存されるほうがうっとうしいわ

732:nobodyさん
09/03/30 13:53:38
っということは、大きい画像を元に
サイズも容量も小さくして表示ができるってことでいいのでしょうか。
サムネイル画像の保存をせずに

733:nobodyさん
09/03/30 14:28:36 Nai97eUH
頭がこんがらがってしまったので質問させて下さい。
データベースを用いてアプリケーションを作る際
例えば該当するIDを選んでupdate、deleteする時に、
該当するIDがある時は正しく削除され、削除されました。
とメッセージを返すんですが何らかの形で該当しないIDが
投げ込まれた時は一般的にはどのような処理をされていますか?
まず該当するIDがあるかselectで調べて、ある場合はupdateもしくは
deleteで処理みたいな形ですかね?
アドバイスよろしくお願いします。

734:nobodyさん
09/03/30 14:50:52
それでいいよ

735:nobodyさん
09/03/30 15:01:56
>>733
URLリンク(jp.php.net)
とか類似関数で。

736:733
09/03/30 15:12:04
>>734-735
返信ありがとうございます。
これまでなんとなくしか理解できてなかったのですが
今スッキリしました。
本当にありがとうございました。

737:nobodyさん
09/03/30 18:45:52 Gjy/ZAJ6
【OS名】Ubuntu 8.10
【PHPのバージョン】5.2.6-2ubuntu4.1
【連携ソフトウェア】Apache/2.2.9
【質問内容】
PHPをさわり初めて一日目の初心者です。
header ( "HTTP/1.0 404 Not Found" , true , 404 );で、.htaccessで指定した404エラーページを
表示させたいのですが、ブランクページになって表示されません。
確かに404エラーページはファイル自体が存在していない場合のみ表示されますので、Location:で
存在しないファイルにリダイレクトさせて見たところ、見事404エラーページが表示されました。
しかし、この方法はアドレスが変更されてしまうので、できればそのPHPのアドレスで、404エラー
を表示させたいのですが、何か方法はございませんでしょうか。
よろしくお願いします。

738:nobodyさん
09/03/30 23:26:09
>>737
readfileでエラーページの内容をそのまま流しちゃダメなの?
URLリンク(jp.php.net)

739:nobodyさん
09/03/31 06:15:24
クラスについて質問です。
URLリンク(www.m-fr.net)
このサイトで、

>で、こうします。

>obj = new 三角クラス;
>適当な変数 = obj->get_1辺の長さ(); // データの取得
>obj->set_1辺の長さ(適当な値); // データの設定

とあるのですが、下の二行は順序が逆の方がよいのでは?と思いました。
setしてからそのsetした結果得られる値をgetする、みたいに。
その方がしっくりくるというか・・
もしかしたら、何か理由(もしくは自分の勘違い)があって、
getをまず書いておいて、そのsetする一行を書く、という形式にしてるのか
よくわからないので、教えていただけないでしょうか
よろしくお願いします。

740:nobodyさん
09/03/31 08:44:30
2行目で得た値を3行目で使っているわけではないと思うぞ?
getとsetの別々の事例かと
あとスレタイ

741:nobodyさん
09/03/31 10:26:43 MdY2FCLh
WindowsXP上で開発を行っているのですが、
Windowsの絶対パスでrequireで読み込むとエラーになります。

require_once("C:\htdocs\test.php");

failed to open stream: Invalid argument

どうしたら読み込めるようになるのでしょうか?

742:nobodyさん
09/03/31 10:35:59
echo "C:\htdocs\test.php"; やってみそ

743:nobodyさん
09/03/31 10:53:51
>>683
今コード用意しますのでちょっと待っててくださいね

744:nobodyさん
09/03/31 11:14:25
アンカ間違えましたね^^;
>>681さんおすきなほうどうぞ

その1
function cale($a,$b) {echo "<p>" .($a * $b). "</p>";}

$a = 2;
$b = 2;
cale($a,$b);
$a = 4;
cale($a,$b);



その2
function cale($a,$b) {echo "<p>" .($a * $b). "</p>";
}

// $aと$bはそれぞれ別の値を持てる
$a = 2;

$b = 2;
$cale($a,$b);

// $aと$bは常に同じ値になる
$b = &$a;
$a = 100;
cale($a,$b);
$a = 5;
cale($a,$b);

745:nobodyさん
09/03/31 11:20:52
>>737

rewrite

746:nobodyさん
09/03/31 12:20:45
>>737
あなたのやろうとしてることはおすすめできない

747:nobodyさん
09/03/31 13:58:39
>>737
アパッチ「俺の仕事はもう終わってんだからバックパスすんな」

748:nobodyさん
09/03/31 15:08:08 H7khy467
+食べ物
++りんご
++バナナ
++ぶどう


↑の4行を↓のようにhtmlタグとして出力したいのですが
wikiみたいなことがやりたいのですがどなたかヒント頂けないでしょうか?

<ul>
<li>食べ物</li>
<ul>
<li>りんご</li>
<li>バナナ</li>
<li>ぶどう</li>
</ul>
</ul>

749:nobodyさん
09/03/31 15:12:34
wikiのソース見ればいいのでは?

750:nobodyさん
09/03/31 15:19:27
>>749
HTMLソース見てもしょうがないだろw

751:nobodyさん
09/03/31 15:27:10
>>749
そんなんで片付くならこのスレが82代まで行かないでしょw
答えてやればいいじゃんwww

752:nobodyさん
09/03/31 15:27:12 qal8dqXu
>>738,745
ありがとうございます。
>>746-747
本当はファイルが存在しているのに無理矢理サーバーにファイルが存在していないことにして、エラーページを表示させるところが
でしょうか。それとも、「header ( "HTTP/1.0 404 Not Found" , true , 404 );」がおすすめできないのでしょうか。

もし、そうであれば、「header("HTTP/1.0 301 Moved Permanently") ;header("Location: URLリンク(www.example.com)") ;」
などのリダイレクトであれば大丈夫ですか。

753:nobodyさん
09/03/31 15:27:13 WkuOnscP
【OS名】TurboLinux
【PHPのバージョン】4.3.11
【連携ソフトウェア】Apache2
【質問内容】
auto_prepend_fileで指定したファイルが動いてくれません。

.htaccessで、「php_value auto_prepend_file "ap.php"」と記述しました。
ap.phpの中身は「<? echo("test"); ?>」です。

これでURLリンク(hostname)を開くと、
画面上部に「test」と表示されることを期待しているのですが、
TurboLinux + PHP4.3.11のサーバーでは実際は何も表示されませんでした。

もうひとつUbuntu + PHP5.2.4のサーバーがあるのですが、
そちらに同様のコードを設置したところ、意図したとおりに動きました。

何か設定の問題だとは思うのですが、何が問題なのか分からずに困っています。
ひとまず以下のことを試しました。

・phpinfoを確認 ⇒ auto_prepend_fileのLocal Valueは「ap.php」になっている
・auto_prepend_fileの設定をわざと"ap2.php"にした ⇒ ファイルが読み込めないエラー
・ap.phpの中身をわざと文法エラーにした ⇒ 何のエラーも出ない(display_errorsはon)
・ap.php、index.phpの両方でWarningが出るようにした ⇒ index.phpのWarningのみが表示される
・ap.phpの一行目(<?~?>の外側)に「aaaaa」を追加 ⇒ 何も表示されない

どうもauto_prepend_fileでap.phpを読み込んではいるものの、
ap.phpのコードが実行されていないようです。
この現象について分かる人がいらっしゃいましたらご教示下さい。

754:nobodyさん
09/03/31 15:50:33
>>753
>ap.phpの中身は「<? echo("test"); ?>」です。

<?使えるなら<?=使えよ
ていうか<?phpって書く方を推奨

755:nobodyさん
09/03/31 15:53:09
>>753
よくわかんないけど全てのページのヘッダに挿入するならmod_layout
URLリンク(d.hatena.ne.jp)

756:nobodyさん
09/03/31 19:15:21
>>748
質問に対する答じゃないけど、HTMLは
<ul>
<li>食べ物
<ul>
<li>りんご</li>
<li>バナナ</li>
<li>ぶどう</li>
</ul>
</li>
</ul>
こう書いた方がいいと思う。

757:nobodyさん
09/03/31 20:09:26
>>748
URLリンク(d.hatena.ne.jp)

758:nobodyさん
09/03/31 22:31:20
>674
今日めっけた
URLリンク(d.hatena.ne.jp)

function ref($obj){ return $obj; }
ref(new Hoge)->doSomething();

良し悪しはともかく、発想は面白い。

759:nobodyさん
09/03/31 22:32:52
そこまでして1行にして何のいいことがあるんだろう

760:nobodyさん
09/03/31 23:09:23
余計な関数が増えることには何の抵抗もないのかw

761:nobodyさん
09/03/31 23:32:57
一時変数が(複数の場所で)増える事と関数が増える事のトレードオフなら、俺なら関数を増やす。
このためだけにgetInstance()とかfactory()とか定義したら、関数増やすよりタチ悪いしな。
ただ、一般的な書き方じゃないので、ref()の定義を探さないと読めない=コードの可読性が落ちるのが難点。
JavaScript界の$()みたいに、一般的なハックになったらアリかな。

762:nobodyさん
09/03/31 23:35:38
他言語でできるのにPHPでできないのがむかつくんだよな

763:nobodyさん
09/03/31 23:38:29
オブジェクトの基底クラスにstaticなnewが実装できたら
Hoge::new()->doSomething();
ってできるのにな

764:nobodyさん
09/04/01 00:05:10
singletonでいいじゃん

765:nobodyさん
09/04/01 01:36:40
一行にしたいって要求に対して、singleton提案するやつw

766:nobodyさん
09/04/01 01:37:54
>>761
いっしょに仕事したくないタイプだわ。なんだよrefって

767:nobodyさん
09/04/01 02:05:39
>>765
一行になるじゃん

768:nobodyさん
09/04/01 02:20:35
メソッドチェーンがやりたいだけだろ

769:nobodyさん
09/04/01 02:32:15
誰が?

770:nobodyさん
09/04/01 02:51:42
俺!

771:nobodyさん
09/04/01 03:16:29
singletonはウンコすぎ。singleton依存症は治る病気だから通院したほうがいいぞ

1行で書きたいって理由だけでstaticなクラスメソッドを増やすのは流石にナシだろ
だいたい1つや2つならともかく、そういう書き方がしたくなるようなJavaっぽい書き方をしてたら抽象データ型なんて死ぬほどできるわけで
そういうクラス全部にstaticメソッド定義すんのかって話になる。継承も使えないし
コンストラクタが引数を取るような場合さらに面倒くせえしな

まあ、そもそもJavaっぽい書き方なんかするなよ、って言うのが多分正解だけどな
$tmp = new Hoge(); $tmp->fuga();でいいだろ
使いもしない一時変数が増えるのがキモいって気持ちは分かるが

772:nobodyさん
09/04/01 07:15:56 zGetu19r
ファイルをダウンロードできるWebアプリがあって、IE8で保存するフォルダをゆっくり選択してると
サーバ側のPHP(5.2.6/Windows)がタイムアウトしちゃうんですが、そういうもんなんでしょうか。

タイムアウト伸ばすしかないのかなぁ。
ファイルが壊れるだけで、一見したところ気がつかないのが、またいやらしい。

773:nobodyさん
09/04/01 07:21:55
てか、singletonは全く別次元の話だろ

774:nobodyさん
09/04/01 07:26:35
>>771
ひとつひとつのクラスにstaticメソッドを実装するってことではなく
rubyみたいにすべてのオブジェクトの先祖になるクラスにstaticを実装するって意味。
今でもrunkit使えば可能なのか、どうか知れないが、
標準で出来たらいいなぁ

775:nobodyさん
09/04/01 08:25:46 wwrEQ3GF
WindowsXPで開発しているのですが、
echo realpath(".");

とすると、C:\Program Files\Apache Group\Apache2\htdocs

のように\が付きます。これを/に置換すれば良いだけでしょうが、
最初から\ではなく/にして、ディレクトリ名を取得する方法はないでしょうか?

776:nobodyさん
09/04/01 08:34:02
>>771
じゃsingletonじゃなくて普通にインスタンス返すメソッドでいいじゃん

777:nobodyさん
09/04/01 08:43:29
レンたるサーバーなのでMysqlのmax_connectionを増やせまえん。
たまにMysqlへの接続数が多すぎてエラーになります。
そこで、
if(){
通常通りMysqlへ接続}
{接続エラー時の対処}

こんな感じにしたいと思ってるんですが、いい関数ありますか?

778:nobodyさん
09/04/01 09:25:38
>>771でいいだろ。気持ち悪いコードやメソッド増やしたいやつ多すぎ

779:nobodyさん
09/04/01 09:28:10
>>777
die

780:nobodyさん
09/04/01 09:29:50
そもそも、newしてメソッドを一つだけ実行ってのは設計がダメだな。
staticで十分か、コンストラクタに仕事させすぎ。

781:nobodyさん
09/04/01 09:54:46
>>775
Windowsをunixベースにする

782:nobodyさん
09/04/01 11:02:36
>>775
nai

783:nobodyさん
09/04/01 11:04:49
>>777
こっちのほうおすすめ

function errorMysql() {
エラー処理
exit;
}

if (!接続) errorMysql


784:nobodyさん
09/04/01 11:49:45
例外使えよ

785:nobodyさん
09/04/01 17:33:12
最近書き込み減ったに
貴様らなにしてんのかね

786:nobodyさん
09/04/01 18:09:20
もう一つの某巨大掲示板に移動したんじゃね?

787:nobodyさん
09/04/01 18:21:05
>>786
それってどこよ?

788:nobodyさん
09/04/01 18:36:52
>>785
PHPの仕事を他の人に任せてコーディングの仕事するようになった

789:nobodyさん
09/04/01 21:00:24
>>787
おしえてグー

790:nobodyさん
09/04/01 23:06:31
>774
絶対言われると思った。俺もそれは考えたが、5.3.0より前のPHPでは無理。
親クラスで定義された静的メソッドで、子クラスのインスタンスは生成できない。つまり

class Parent{
static function getInstance(){
 //do something
}
}
class Child extends Parent{}

とあった場合、Parent::getInstance()の実装がどんなだろうと、Child::getInstance()がChildのインスタンスを返すのは不可能。
Childというクラス名すら取得できない。

>780
{ new UrlString("スレリンク(php板)") }->domain();

コンストラクタによる依存性注入をしてる場合も、newしてすぐメソッドを呼ぶだけでじゅうぶんな事がある。
引数なしのコンストラクタならばたいていの場合不要ってのは同意。

791:nobodyさん
09/04/02 09:51:30 ij3728yl
URLリンク(pear.php.net)

これって日本語は対応してないの?

792:nobodyさん
09/04/02 10:31:00
ソース見りゃ分かんべ

793:nobodyさん
09/04/02 10:35:42 ij3728yl
>>792
いやいや、、、
まだそこまでレベルいってないですよ
だからあなたが代わりに見て判断してください

794:nobodyさん
09/04/02 10:44:44
じゃレベル上げろ

795:nobodyさん
09/04/02 10:56:23
長い文と難しい単語(音節のたくさんある)の割合で計算してるみたいだから、
原理的には日本語でも計算は可能だろうけど、日本語ではMecabとかないと大変だし、
多分計算式に定義されてる係数は日本語の場合を考慮していないので、
信頼出来る結果のためには自分で文献にあたるとか実地調査して決定する必要があるべ。


796:nobodyさん
09/04/02 11:12:51 CfxT7le3
【OS名】windows xp home edition
【PHPのバージョン】php5ぐらい
【連携ソフトウェア】mysql
【質問内容】

フォームのセレクト項目で悩んでいます。
form.phpを表示させるとき、セレクト項目を
mysqlから取り出して表示させているのですが
(idとその名前)
セレクト項目が4つもあるので、何か一気に取り出す方法が
あったりするのですか?それとも、一個一個4つのセレクト用に
select genre_id,genre_name from genre;
(genreはジャンル)
というふうにするしかないですか?


797:nobodyさん
09/04/02 11:30:18 4VqTVZ/0
mysqlの勉強をしてます

以下のようなデータをデータベースに登録してます
id,name,age
1,田中,20
2,木村,31
3,坂下,43


このデータをテーブルに書きだしたいのですが
pearなどのライブラリを使用しない場合、どのようなコードを書くのが効率いいでしょうか?
mysql以外のデータベースは使用しないのでmysqlに特化した書き方をどなたかご教示お願いいたします

798:796
09/04/02 11:40:45
>>797
$link = mysql_connect('localhost','ユーザ名','パスワード名');
mysql_select_db('データベース名');
$sql = "select * from テーブル名";
$result = mysql_query ( $sql );
while ( $data = mysql_fetch_array ( $result ) ) {
$data['id'];
$data['name'];
$data['age'];
}

じゃないの?


799:nobodyさん
09/04/02 11:48:45 e2MYzFKZ
すみません、僕もちょっと似たようなこと?で質問させてください
>>797さんのデータで
id,name,age
1,田中,20
2,木村,31
3,坂下,43
とありますが、たとえばID2の木村さんの行だけを取得する場合、
while ( $data = mysql_fetch_array ( $result ) ) {
if (2==$data['id']) {
$id = $data['id'];
$name = $data['name'];
$age = $data['age'];
break;
}
}
とやってきたのですが、MYSQLではピンポイントで取得することができないってことでしょうか?

800:796
09/04/02 11:59:21
>>799
嘘だよね? select * from テーブル名 where id=2;
あるいは、 where name='木村';

801:nobodyさん
09/04/02 12:07:31
>>796
mysql_fetch_arrayの結果を4回使いまわす

802:796
09/04/02 12:09:54
>>801
違うんです。4つそれぞれ別なんです。
テーブル結合でも想像できないのでやっぱり4回やらないとだめなのかな

803:nobodyさん
09/04/02 12:29:08
XAMPPをインストールしました。
MySQLにパスワードを設定しようとphpmyAdminでuser テーブルを表示させましたが
Hostが%のレコードがありません。localhost と127.0.0.1というのだけです。
パスワードを設定するのはlocalhost と127.0.0.1でいいのでしょうか?

804:796
09/04/02 12:40:16
$xxx[0] = "genre";
$xxx[1] = "property";
$xxx[2] = "actress";

$i=0;
$g=0;
while ( $i < count($xxx) ) {
$sql = "select $xxx[$i]_id,$xxx[$i]_name from $xxx[$i]";
$result = mysql_query ( $sql );
while ( $data = mysql_fetch_array ( $result ) ) {
$xxb[$g][$xxx[$i]]['id'] = $data[0];
$xxb[$g][$xxx[$i]]['name'] = $data[1];
$g++;
}
$i++;
}
これでいい?

805:nobodyさん
09/04/02 12:56:43
気持ちの悪いメンテナンスしづらいコードですね

806:796
09/04/02 12:58:10
>>805
これでいけました
>>796の質問者です。
一回のSQLで4つのテーブルのIDと名前をゲットできました

807:nobodyさん
09/04/02 13:01:43 vfSwYPOW
【OS名】centos
【PHPのバージョン】php5.26
smarty使用
【連携ソフトウェア】mysql
【質問内容】
初めての質問です。
よろしくお願いします。

登録フォームが都合上ページの下部にあるのですが
PHPで入力エラーを同じページの同じ登録フォームのある部分に表示しております。
ページ上部に登録フォームのアンカーへ移動するリンクはありますが
PHPではいたエラー文言付画面の表示時に下部のアンカーへ移動して表示するには
javascript以外に方法はないでしょうか?
要はURLリンク(www.etc.com)
みたいにやるにはどうすればいいのか、よろしくお願いいたします。



808:796
09/04/02 13:05:48
正確に書けば、$xxb[$xxx[$i]][$g]['id'] = $data[0];
かな
for($i=0;$i<count($xxb['genre']); $i++)
で各セレクト分でしよう

809:796
09/04/02 13:26:45
>>804
途中で$g=0;を入れるのを忘れました。
$i++の後

810:nobodyさん
09/04/02 13:51:13
796さん、あなたを下スレ公認回答者に認定いたします

811:nobodyさん
09/04/02 18:28:53
>>807
actionかlocationでの遷移先をそれに設定すればいいのでは?

812:nobodyさん
09/04/02 19:09:54 vfSwYPOW
>>811
ありがとうございます、できました!!


813:nobodyさん
09/04/02 21:54:38 SbciSXr8
すません
pukiwikiとかの既存ソースを使ってるのですが
PHPがサバの設定でポート指定されていて
既存ソースだと、リンク先がPHPの場合、ポート指定が外されてしまうのです

TOPページが :7070 で実行してたら
遷移先が :7070 が外れてしまうという状態です

解決方法とかご教授願えますか。
質問場所が悪ければ、聴ける場所なども教えていただけると助かります

814:nobodyさん
09/04/02 21:56:16
pukiwikiの設定でサイトURL入れるとこあるんじゃ?

815:nobodyさん
09/04/02 22:33:32 SbciSXr8
なるほど…
ちょっと探してみます。

ただ、pukiwikiに限らず、他のPHPでも
同じ状況になってしまうので根本解決するための方法など
ご存知でしたらお願いします。

816:nobodyさん
09/04/02 22:33:55
絶対リンクをやめる

817:nobodyさん
09/04/02 23:10:28
スクリプトの先頭でob_start()。
コールバック関数を指定して出力内容を全部受け取り、URLを全部置換する。

818:nobodyさん
09/04/02 23:15:28
絶対リンク埋め込みだとしてもhttp://で検索すればすぐ書き換えられそうじゃん

819:nobodyさん
09/04/03 01:14:27 QmVSt/Vd
【OS名】win xp sp3
【PHPのバージョン】php5.29
【連携ソフトウェア】mysql
【質問内容】

$val = NULL;
$query = "insert into test (id, comment) value ($val, 'test')";

上記のSQLをダンプしてみると
NULLを代入した変数$valがNULLとして展開されていません。
もぬけの殻となってしまっています。

※ダンプしたクエリ
insert into test (id, comment) value (, 'test')

なのでクエリーを投げるとエラーとなってしまいます。
NULLをinsertしたい場合は変数にいれず、
直接クエリの文に記述しないといけないのでしょうか?

820:nobodyさん
09/04/03 01:28:48
>819
現代人ならプリペアドステートメントを使え。プレースホルダ使える状況でクエリを直接組み立てる奴は原始人。
PDOStatement::bindValue()の第3引数にPDO::PARAM_NULLを指定すれば、NULLをDBに入力できる。

つうか、何もinsertしなければ、デフォルト値であるNULLが入るけどな。
(カラムにnullが許可されており、他のデフォルト値を指定していない場合に限る)

821:nobodyさん
09/04/03 01:33:38
DB上のnullじゃなくて言語上でnullだから無くて当たり前

822:nobodyさん
09/04/03 01:33:52
単にこうするんじゃないか?
$val = 'NULL';

823:nobodyさん
09/04/03 01:34:01
$val = 'NULL';
でNULLをDBに入力できる

824:819
09/04/03 01:37:29
>>820

>プリペアドステートメント
はじめて聞きました。

>何もinsertしなければ、デフォルト値であるNULLが入る
これは理解していたのですが、インサート項目が非常に多く、
そのほとんどが必須ではないので、クエリを組み立てるのがめんどくさく
値がわたってこようがこなかろうがすべての項目をインサートさせてしまう感じで作ってしまいました。

プリペアドステートメント勉強します。
ありがとうございました。

825:819
09/04/03 01:39:55
>>822
>>823
それだと文字列のNULLが入ってしまいました。
間違えてるかもしれないのでまた確認してみます。
ありがとうございます。

826:nobodyさん
09/04/03 01:44:23
されないだろ
insert into test (id, comment) value (NULL, 'test')

827:nobodyさん
09/04/03 02:04:33 7RHF46qi
申し込みフォームの作成について
form1.phpにて記述されたformの内容をPOSTで
form2.phpという確認画面で受け取るような
プログラムを作ってるんですが、
確認画面にて前に戻るボタンと送信ボタン2つを作りたい場合は
それぞれに同じ内容のhiddenを設定するしか方法はないんですかね?
もしスマートな方法がありましたらアドバイスよろしくお願いします。


828:nobodyさん
09/04/03 02:07:57
セッション使えば?

829:827
09/04/03 02:11:24
>>828
返信ありがとうございます。
やっぱりsessionがいいですよね。
もしPOSTでスマートに出来るならと思い聞いてみました。

830:nobodyさん
09/04/03 02:26:52
hiddenとか過去の産物だろ。更新ボタンとか戻るボタンとかでgdgdになるのが目に見えてる

831:nobodyさん
09/04/03 02:29:07
>>827
試してないけど、javascriptでformのactionを変更できるんじゃないの。
URLリンク(msdn.microsoft.com)

このへんは趣味の問題かもしれんが、セッションに値を保持するのは、
同じセッションで複数タブ開かれた場合に動作がおかしくなりやすいから、
あんまりお勧めはできん。

832:nobodyさん
09/04/03 02:30:00
>>830
戻るでグダグダになるのはセッションじゃないかい?

833:nobodyさん
09/04/03 02:38:12
とりあえずhiddenを批判するやつはどこにでもいる

834:nobodyさん
09/04/03 03:42:37
入力、確認を違うファイルにするとエラー処理がめんどい

835:nobodyさん
09/04/03 04:07:02
php5.3rc1使ってる人に質問です。
php.iniに書いたmb_string系の設定って反映されてますか?
あと何故かapcも動かない、、、
いくら設定を見直してもなにが悪いのかわかりません。
解決策をご存知の方いましたら、教えてください。

836:835
09/04/03 06:55:01
解決しましたすみません;ケアレスミスでした・・・

837:nobodyさん
09/04/03 07:27:17
>>783

ありがとうございます。それでいってみたいと思います。

838:nobodyさん
09/04/03 07:28:49 b3GlDVd8
クエリの時のプリペアドステートメントって、どういう効果があるんですか?
一応本では読んだんですがいまいちよくわかりません 簡単に説明お願いします

839:nobodyさん
09/04/03 08:01:16
>>838
繰り返し使われる場合はパフォーマンスが上がることもあるみたいだけど、一番大きいのは
SQLインジェクションみたいな攻撃を受けにくくなることじゃないの。

840:nobodyさん
09/04/03 08:43:25
そんなのクオートすりゃ済む話だろ

841:nobodyさん
09/04/03 08:45:48
>>819
もうプリペアでやってるかもしれないけど
$a = "";
$var = "'".$a."'";
$query = "insert into test (id, comment) value ($val, 'test')";

842:nobodyさん
09/04/03 10:01:31
NULLと空文字は違うだろw

843:nobodyさん
09/04/03 10:05:52
昔Oracleしか知らなくてnullとブランク何が違うか客先で質問して大恥かいたことあるぜ

844:nobodyさん
09/04/03 11:18:56
根拠レスな「このコードはセキュリティがダメだね」発言は居酒屋での「大したことねえなマツザカ(笑」みたいな会話に近い
URLリンク(neta.ywcafe.net)

845:nobodyさん
09/04/03 11:26:15
俺も思う
サンプルコードにこれ見よがしにつっこむ奴なんなの
ある側面から切り取ってるんだから瑕疵がないほうがおかしいだろ

846:nobodyさん
09/04/03 11:29:51
高木先生大の批判は辞めて下さい

847:nobodyさん
09/04/03 11:45:02
>>844
また宣伝か

848:827
09/04/03 15:07:28
返事が遅くなりすいません。
フォームの件ですが色々試しましてSESSIONでいくようにしました。
色々とアドバイス本当にありがとうございます。
それでもう一つ質問なんですが、
フォームのチェックボックスの内容をhtmlに直に書かず、
config.phpなどに$val=array("aaa","bbb","ccc");
みたいな感じで記述しhtmlでforeachを使い
全て書き出すみたいな事をしたいんですが、参考書などを確認したら
配列で記述するのではなくfunctionで
function val(){
$val = array("aaa","bbb","ccc");
return $val;
}
という書かれ方がされてました。
関数にせず配列だけが記述すると何かマズイんですか?
質問が少しわかりにくいですがもしよければ
アドバイスよろしくお願いします。


849:nobodyさん
09/04/03 15:17:48
>>848
$valの中身を将来的にコードからいじる可能性があるならfunction、
可能性がないなら定数のままでいい

850:nobodyさん
09/04/03 15:40:20
最近、他人のブログを批判しながら2ちゃんで宣伝してアクセス数稼ぐのが流行ってるのか?

851:827
09/04/03 15:41:11
>>849
返信ありがとうございます。
例えばこれから先チェックボックスの値dddが増えた場合、
$val=array("aaa","bbb","ccc","ddd");
でも
function val(){
$val = array("aaa","bbb","ccc","ddd");
return $val;
}
でも変わらない気がするんですが・・・
素人質問本当にすいません。
今から考えてみます。

852:nobodyさん
09/04/03 15:48:11
>>851
いい例が思いつかないのだけどこんな感じ。条件によって変わる場合だな
function val(){
 $val = array("aaa","bbb","ccc","ddd");
 // 天気が雪の場合のみ配列にeeeを追加する
 if( $this->weather == "snow" ){
  array_push( $val, "eee" );
 }
 return $val;
}


853:nobodyさん
09/04/03 15:49:16
>>851
前者でおk

854:827
09/04/03 16:12:12
>>852
>>853
返信ありがとうございます。
今後、配列を元に何か条件をつけるなどの機会がある場合は
関数にしておく方が好ましいという事ですね。
例文まで書いていただき本当にありがとうございました!

855:nobodyさん
09/04/03 18:24:43 ZpjcrZDP
文字列のシングルクォーテーションのみを
エンティティに変換したいのですが、どうすればいいのでしょうか?
htmlspecialcharsはダブルクォーテーションも変換しますし・・。

856:nobodyさん
09/04/03 18:32:47
vs php(VS2005評価版)でデバッグ実行しようとすると
次のエラーが出てしまいます。
何が原因なのでしょうか?

Fatal error: Unknown: Failed opening required 'C:/Documents and Settings/繧イ繧ケ繝育畑縺ョ繝ヲ繝シ繧カ/My Documents/Visual Studio 2005/Projects/PHP_TEST/PHP_TEST/index.php' (include_path='.;C:\php5\pear') in Unknown on line 0

文字化けしちゃってますが
C:\Documents and Settings\ゲスト用のユーザ\My Documents\Visual Studio 2005\Projects\PHP_TEST\PHP_TEST\index.php
のところで何かエラーが発生している様です。

※phpのコード

<?php

   /* TODO: Add code here */
   print("テスト");
?>




857:nobodyさん
09/04/03 19:08:16
>>855
strtr

858:nobodyさん
09/04/03 19:44:58 2mI6CRy6
【OS名】debian linux
【PHPのバージョン】5.2.0

参照渡しで変数を送り
変数が未定義なら空の文字列を返し
変数が定義済みならそのまま返す関数を考えました。

$test = hoge_variable($v);

function hoge_variable(&$v) {
  if(! isset($v) ) {
    return '';
  }
  return $v;
}

テストに入る内容は望みのものですが、
変数$vが未定義だった場合、定義されて(?)NULLが入るようです。
この挙動について、どういった理由でそうなるのか、
また$vを未定義のままにする方法はあるのかご教示いただけませんでしょうか。

859:nobodyさん
09/04/03 20:02:31
>>858
&$vのとき、参照を張るには、参照される側のアドレスが必要だから、そこで定義される。値はNULL

&$vにしなければよい。

860:nobodyさん
09/04/03 20:14:47
return ''; を return $v=''; でよくね?

定義されてないからNULLだぜ?

861:nobodyさん
09/04/03 20:15:15 2mI6CRy6
>>859
やはりそんな感じだったんですね。
関数はエラーレベルによっては出るNotice: Undefined variable
の対策だったんですけど、&$vでなく$vにするとそこでUndefined variable
がでてしまう感じで…。
定義されたくない時は直接issetをしていくしかないということですかね。
というかそもそもUndefined variable回避に対するアプローチが違っているでしょうか…?

862:nobodyさん
09/04/03 20:18:37
宣言すりゃいいじゃん

863:nobodyさん
09/04/03 20:35:14 2mI6CRy6
状況的には例えばこういう未定義かもしれない所からひっばってくる時で、
$flag = $_POST['flag'];
そういう意味で先の
$flag = hoge_variable($_POST['flag']);
だったんですけど、
例えNULLでも配列に定義されてしまうと、
foreachとかする時に邪魔になったりとかそういう感じのことでした。
やはり基本的には
$flag = '';
if (isset($_POST['flag'])) {
  $flag = $_POST['flag'];
}
みたいなことで行くのがいいのですかね。

864:nobodyさん
09/04/03 20:46:30
フレームワークには用意されてたりするけどね

865:nobodyさん
09/04/03 22:15:46
>>856
文字コードがUTF-8でBOMが入っているとか?
UTF-8Nにしてみたら?

866:nobodyさん
09/04/03 22:53:01
>>863
> $flag = '';
> if (isset($_POST['flag'])) {
>   $flag = $_POST['flag'];
> }
自分はそうしてる
変数が増えてくるとコードがのびがちなので
三項演算子使って
$flag = isset($_POST['flag'])?$_POST['flag']:null;
といった感じにしてる

867:nobodyさん
09/04/03 23:35:31
>838-840
クォートで処理していると、インジェクションが無いか処理を注視しないといけない。
プリペアドステートメントは、インジェクションが無い事が一目で分かる。
SQLの構文と変数が分離されるので見やすくなるって利点もある。

>863
functon getPostedVariable($key){
return isset($_POST[$key])?$_POST[$key]:null;
}
とかやると楽なのでオススメ。
プログラムの開始時に$_GETと$_POSTとかを丸ごとメンバに持つクラスのインスタンスを生成して、そいつにこの関数を定義する手もある。
メリットが思いつかないレベルならとりあえず忘れておいてもいいけどな。テストが非常にしやすくなる。
$request = new Request($_POST, $_GET);
echo $request->post('flag');

868:nobodyさん
09/04/03 23:36:22
Zend_Request使えよ

869:nobodyさん
09/04/03 23:49:57
宗教上の理由によりお断りします

870:nobodyさん
09/04/04 01:03:53
PHPを勉強し始めたのですがphpではクラスを宣言する場合に、
public private とかって宣言する事は出来ないのでしょうか?

public class Test
{
  public function TestMessage()
  {
    print("あいうえお");
  }

}


871:nobodyさん
09/04/04 01:54:48
>>870
classはできない。functionや変数は可能。

872:nobodyさん
09/04/04 01:54:55
>>870
他言語の素養があるおまいさんはまずマニュアルを読みなはれ。

873:nobodyさん
09/04/04 02:00:30
privateなclassってどんなん?

874:870
09/04/04 02:00:58
>>871
サンクス

>>872
.Net(C# / VB.net) & C++とかでこれまで開発をして来ましたが何かばれちゃいましたか。
マニュアルをちょっと読む事にします。

というより一つ疑問なんですけどC#とかC++とかだと次のパターン②でみんな記述しているのに
PHPとかだとパターン②の書き方をする人が多いのはなぜでしょうか?
C#だと今まで私が関わって来たプロジェクトは100%パターン②で記述されています。


【パターン①】
if( 1 == 1)
{

}

【パターン②】
if(1 == 1{

}


875:nobodyさん
09/04/04 02:04:36
>>874
両方ともパターン1かよ

876:nobodyさん
09/04/04 02:05:23
まちがえた
両方ともパターン2かよ

877:nobodyさん
09/04/04 02:08:21
VisualStudioのコード補完のデフォルトがそうなってるだけだろ
JavaやPHP使いはMSみたいに無駄に行数消費するのを嫌うよ

878:nobodyさん
09/04/04 02:09:00
①と②に見える俺は目がおかしい・・・?
てか②括弧閉じてないけど、スペースのことを言ってるのか・・・?

879:874
09/04/04 02:11:43
ああすまん俺の頭が混乱してた

>>874がどちらのこと言ってるのか良く分からないけど
俺は①はメソッドの時に使う。
一応Zendのコーディング規約に則ってやってるけど
個人の作業なら別にそんなの君の価値観でやればいいだろ

880:878
09/04/04 02:13:15
あああ俺は874じゃなくて878

881:nobodyさん
09/04/04 02:14:37
>874
PHPの「標準」なコーディング規約には2つの流儀がある。ひとつはZend、ひとつはPEAR。
で、どっちも1番の括弧スタイルを採用してるんだ。
C++で言えば、MSDNの規約とGNUの標準スタイルが一致しているような状況をイメージすればいいかな。そりゃ合わせるだろ?
PHPが初めての言語です、って奴が多いのも影響していると思う。

勿論、PHP以前に他の言語を学んでいた奴の中には別のスタイルで書く奴もいる。
俺も2番のK&Rスタイルで書くしな。

882:nobodyさん
09/04/04 02:16:56
>>881
URLリンク(framework.zend.com)
if ($a != 2) {
$a = 2;
}
知ったか乙


883:nobodyさん
09/04/04 02:18:31
>882
悪い、寝ぼけてた。
関数定義とクラス定義の箇所を読んでたわ。
PEARもifはそのスタイルだな。

if ((condition1) || (condition2)) {
action1;
} elseif ((condition3) && (condition4)) {
action2;
} else {
defaultaction;
}

884:nobodyさん
09/04/04 02:21:18
MS厨はfunction名を大文字で始めとけ

885:nobodyさん
09/04/04 02:25:13
classの修飾子にはpublic、final、abstractが使えるよ

886:870
09/04/04 02:37:49
>>878 >> 879 >> 880

【パターン①】
if( 1 == 1)
{

}

【パターン②】
if(1 == 1){

0}

の間違いです。括弧が抜けてましたね。


>>877
そう言われれば確かに勝手に整形されちゃいますね。

>>881
なる程2通りの書き方があったんですね。
いずれにせよ①番で統一されているみたいなのでちょっと安心しました。
今後も①で書いて行こうと思います。
(C#)と同じなのでこちらの方が気分的に見やすいです。

PHPでの実務経験が無いので実際の開発現場ではどちらが主に使われているのでしょうか?



887:870
09/04/04 02:39:20
うーん、どう考えても↓の方が見易いのですが、、、、
皆さんも↓の方が見やすくないですか?

>>883

if ((condition1) || (condition2))
{
  action1;
}
elseif
((condition3) && (condition4))
{
  action2;
}
else
{
  defaultaction;
}


888:nobodyさん
09/04/04 02:39:35
書き込むボタン押す前に見直ししろ

889:nobodyさん
09/04/04 02:41:13
俺だったらこれだな。極めて合理的だ

if ( (condition1) || (condition2) ) { action1; }
elseif ( (condition3) && (condition4) ) { action2; }
else { defaultaction; }

890:nobodyさん
09/04/04 02:48:19
>>889
うげぇー

891:nobodyさん
09/04/04 02:51:50
>>889
オナニーコード

892:nobodyさん
09/04/04 02:53:10
>887
そのスタイルはないな。見づらい。

インデントスタイルでガタガタ抜かすお前にはPythonが合っていると思う。
Pythonにはどのインデントスタイルが見やすいとかいう議論が一切存在しないぞ。

893:nobodyさん
09/04/04 03:03:22
>>887
視点移動が多くなって見づらい

894:nobodyさん
09/04/04 03:25:39
>>892 >>893
本気で言ってますか?
コードを詰めまくって書くよりゆとりを持たせたコードの方が見易いし、
メンテナンス性もあがる気がするのですが。

895:nobodyさん
09/04/04 03:30:54
それはひらがなだけで書かれた文章の方が読みやすいってのと同じレベルの主張だと思う。
まぁコーディングスタイルは宗教論争なんで、不毛なダケなんだけどさ。

896:nobodyさん
09/04/04 03:31:20
ZendとかPEARとか使ってるなら、逆効果だろ
統一させた方が見やすい

897:nobodyさん
09/04/04 04:00:44
見やすいのはいいけどスクロールしないと下のほうが見えなくなるのが無理

898:nobodyさん
09/04/04 04:11:29
>>887
そんなとこより括弧と条件式の間のスペースを空けろってな

899:nobodyさん
09/04/04 05:30:26
オレ竜で書くのがいちばんさ

900:nobodyさん
09/04/04 05:58:30
>>887
EclipseでJavaとPHPをやってる俺からいうと
if (condition) {
}
のほうが見やすい
他の人も同じようなこといってるが
最初に使い慣れたIDEの標準の補完機能によって
どちらが使いやすいか分かれるんだろう
あとはコーディング規約の問題

901:nobodyさん
09/04/04 07:35:04 +rg3YxkW
fopenってロックの引数がないんですが
ちゃんとロックされるんですか?
同時書き込みでファイル壊れたりしませんか?

902:nobodyさん
09/04/04 07:37:06
fopenはリソースを指定してるだけ
書き込みを行う関数はfwrite

903:nobodyさん
09/04/04 07:39:05
マニュアルのちょっと上にflockってあるだろ

904:nobodyさん
09/04/04 07:43:24
ロックは別にするんですね
ありがとうございました。

905:nobodyさん
09/04/04 11:05:08 UT159Z4L
winでは動かない関数があるのでこのさい仮想マシン上にlinuxを入れることにしました
ノートPCなので容量を抑えたいのですが、linuxしてる方でおすすめのものがございましたら教えて下さい

906:nobodyさん
09/04/04 11:16:09
俺、クラスや関数は>>874でいう①、条件文なんかは②で書いてる・・・・

907:nobodyさん
09/04/04 11:42:14
①の書き方って、昔ならではのC言語の関数書くときの引数の型宣言の名残なのかね

908:nobodyさん
09/04/04 12:46:42
現在Apache+PHP5+MySQL5を使用してWEBサイトを作る練習をしているのですが、

C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\
  hogehoge.html
  tomato.php

に各WEBページ(phpファイル)を置いて

URLリンク(localhost)

でアクセスしているのですが、これを

C:\Work
  hogehoge.html
  tomato.php
でアクセス出来る様にするにはどうすれば良いでしょうか・
※デフォルトのパスをC:\Workにしたいと思っています。

909:nobodyさん
09/04/04 12:47:32
php関係ない
apacheのdocument root
あと>>1

910:908
09/04/04 13:04:00
>>909
ありがとうございます。

document root を
【httpd.conf】
DocumentRoot "C:/htdocs"
に変更しApacheを再起動したのですが
Web サイトによってこのページの表示を拒否されました
というエラーが出て一向にページを見る事が出来ません。
なぜでしょうか?


911:nobodyさん
09/04/04 13:13:06
ファイルをC:/Workにおいてるのになんでhttpd.confのほうは「C:/htdocs」にしたん?

912:nobodyさん
09/04/04 13:41:34
>>910
>>1読め糞野郎

913:nobodyさん
09/04/04 13:43:54
ていうかPHP関係ないって言ってんだろカス

914:nobodyさん
09/04/04 13:58:00
DocumentRoot を C:/Work にすればいいんじゃねーの。
あとID出せよ

915:nobodyさん
09/04/04 15:00:42
documentrootだけ変えても意味ないよ
documentrootのディレクトリ設定のパスも書き変えないと意味ないよ

916:908
09/04/04 15:19:05
>>911 ファイルは、C:/htdocsに配置しました。

>>914
IDを出す、 というのは所謂 fusianasan ですか?

>>915
ありがとうございました。

設定ファイル系を色々といじってみたところ無事動作する様になりました。
ありがとうございました。

917:nobodyさん
09/04/04 15:27:18
ルールも守れないような奴は二度と来んな

918:858
09/04/04 15:39:59 Q5CHJrya
遅レスすみません。
>>866>>867氏他皆様ありがとうございます。
いろいろ試してみたいと思います。

919:nobodyさん
09/04/04 20:31:48
慇懃無礼なやつだなw

920:220x151x2x6.ap220.ftth.ucom.ne.jp
09/04/04 20:44:31
◆質問用テンプレ
【OS名】WindowsXP
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql5
【質問内容】
セッションが破棄されるタイミングがいまいち分かりません。
セッションファイルの数を数える事により、現在サイトにアクセスしている人の
大まかな数を数えているのですが、ブラウザを終了してもセッションファイルは残ったままです。

理想を言えば、ユーザにログインボタンを押してもらい  session_destroy を呼ぶ
事によりセッションファイルを削除するのが良いとは思いますが、

如何せんブラウザなのでログアウトボタンが必ず押される保障はありません。
ブラウザが閉じられてから5分したらセッションファイルを削除する、といった事は可能なのでしょうか?

通常セッションは一定時間経てば破棄されるらしいのですが、phpの場合はどこで設定すれば良いのでしょうか?


921:nobodyさん
09/04/04 20:48:04
>>920
>>1

922:nobodyさん
09/04/04 21:11:33
>>920
頑張ってfusianasanしたのはいいんだが君が表示してるのはIPだ
IDを出してくれたまえ

923:nobodyさん
09/04/04 21:12:45
ID出てないが一応マジレスするとブラウザが閉じられたという情報は送られません

924:nobodyさん
09/04/04 21:39:31
URLリンク(jp2.php.net)
いつ消えるかはsession.gc_maxlifetimeで決まる。

集計は、閉じられた情報は取得できないので、セッション変数に「最終利用日時」を記録しておく。
画面を表示するたびにこれを更新して、集計時はその数字を見て判別する、という手がある。
例えば、5分以内にサイトにアクセスした人の人数を「現在サイトにいる人数」と見なすとかな。
ファイルだと大変なので、DBなどの集計しやすい場所にセッション情報を格納するとやりやすい。

925:nobodyさん
09/04/04 22:06:27
>>924
荒らすな

926:nobodyさん
09/04/04 22:18:43
俺はセッション使わないでアクセスログでオンラインカウンターをやってる

927:920 ◆gRDEQwu9i2
09/04/04 22:21:55
>>922
これの事だったんですねw
勘違いしてました。

>>923
そうですよね。


>>924
ちょっと色々といじってみます。

>>925
別に荒らしてはいない気がしますが・・・

>>926
DBにアクセス情報を記録させてそこで判定した方が確実で簡単かもしれませんね。


928:nobodyさん
09/04/04 22:25:35
死ねカス

929:nobodyさん
09/04/04 22:34:25
春だなw

930:nobodyさん
09/04/04 22:34:35
>>927
まじれすすると、それはトリップ
ID表示はメール欄を空白にするかageと書く

931:nobodyさん
09/04/04 23:03:22
てst

932:nobodyさん
09/04/04 23:06:05
さくらインターネットでサーバ借りてるんだけど
function ExecuteSanitizing(&$strSanitizing)
{
 $strSanitizing = htmlentities($strSanitizing, ENT_QUOTES, mb_internal_encoding());
}

$str = "<b>あいうえお</b>";
$str = instance->ExecuteSanitizing($str);
echo $str;

として出力するとローカルでは文字化けしないのにさくらインターネットだと文字化けしちゃいます。
なぜでしょうか?


933:nobodyさん
09/04/04 23:26:21
エスパーさん出番ですよ

934:p7033-ipbfp405osakakita.osaka.ocn.ne.jp
09/04/04 23:30:26 UHDnoHcu
私を笑いものにするがいい

935:nobodyさん
09/04/04 23:40:07
>>932
>>1

936:fusianasa‎n
09/04/04 23:40:52
俺はfusianasanを制御できるから書きこんでもIP表示されないんだけどさ

937:nobodyさん
09/04/04 23:43:27
>>936
それってどうやってやってんの?


938:f‎usianasan
09/04/04 23:46:28
>>937
いや、おれ2ちゃんのボランティアやってるからこのぐらいの特権は持ってるよ

939:nobodyさん
09/04/04 23:48:52
f&lrm;usianasan
なにがボランティアだつまらん

940:nobodyさん
09/04/04 23:52:00
釣れたw

941:f&lrm;usianasan
09/04/04 23:57:19
テスト

942:f‎usianasan
09/04/04 23:58:04
>>939
どうすれば出来るですか?

あいうえお

943:f‎usianasan
09/04/05 00:00:02
てす

944:nobodyさん
09/04/05 00:06:15
>>932
ローカルとさくらのphp.iniのmbstringの設定が違う

945:nobodyさん
09/04/05 00:30:10
>>901
fopenはファイルのポインタを獲得するだけ。
ロックはその後で、別の関数で行う。

946:nobodyさん
09/04/05 00:31:03
URLリンク(ameblo.jp)
クラスメソッドをabstractにしようと思いまして、abstractをつけて関数定義したところ、以下のようなエラー。

Class SampleClass contains 1 abstract method and must therefore be declared abstract or implement the remaining methods

エラーの原因がわからず、30分も調べてしまいました。
原因はclassの定義で本来なら「abstract class SampleClass」 としなくてはいけないところを
「class SampleClass」と定義していたことでした。

エラーメッセージからでは気づきにくいことでした・・・

だとさ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch