[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/17 00:35 / Filesize : 244 KB / Number-of Response : 996
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】下らねぇ質問はID出して書き込みやがれ 82



1 名前:nobodyさん [2009/03/09(月) 02:14:28 ID:HyrthkeE]
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 81
pc11.2ch.net/test/read.cgi/php/1234958956/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

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

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

778 名前:nobodyさん mailto:sage [2009/04/01(水) 09:25:38 ID:???]
>>771でいいだろ。気持ち悪いコードやメソッド増やしたいやつ多すぎ

779 名前:nobodyさん mailto:sage [2009/04/01(水) 09:28:10 ID:???]
>>777
die

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

781 名前:nobodyさん mailto:sage [2009/04/01(水) 09:54:46 ID:???]
>>775
Windowsをunixベースにする

782 名前:nobodyさん mailto:sage [2009/04/01(水) 11:02:36 ID:???]
>>775
nai

783 名前:nobodyさん mailto:sage [2009/04/01(水) 11:04:49 ID:???]
>>777
こっちのほうおすすめ

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

if (!接続) errorMysql


784 名前:nobodyさん mailto:sage [2009/04/01(水) 11:49:45 ID:???]
例外使えよ

785 名前:nobodyさん mailto:sage [2009/04/01(水) 17:33:12 ID:???]
最近書き込み減ったに
貴様らなにしてんのかね



786 名前:nobodyさん mailto:sage [2009/04/01(水) 18:09:20 ID:???]
もう一つの某巨大掲示板に移動したんじゃね?

787 名前:nobodyさん mailto:sage [2009/04/01(水) 18:21:05 ID:???]
>>786
それってどこよ?

788 名前:nobodyさん mailto:sage [2009/04/01(水) 18:36:52 ID:???]
>>785
PHPの仕事を他の人に任せてコーディングの仕事するようになった

789 名前:nobodyさん mailto:sage [2009/04/01(水) 21:00:24 ID:???]
>>787
おしえてグー

790 名前:nobodyさん mailto:sage [2009/04/01(水) 23:06:31 ID:???]
>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("pc11.2ch.net/test/read.cgi/php/1236532468/") }->domain();

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

791 名前:nobodyさん [2009/04/02(木) 09:51:30 ID:ij3728yl]
pear.php.net/manual/ja/package.text.text-statistics.intro.php

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

792 名前:nobodyさん mailto:sage [2009/04/02(木) 10:31:00 ID:???]
ソース見りゃ分かんべ

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

794 名前:nobodyさん mailto:sage [2009/04/02(木) 10:44:44 ID:???]
じゃレベル上げろ

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




796 名前:nobodyさん [2009/04/02(木) 11:12:51 ID: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さん [2009/04/02(木) 11:30:18 ID:4VqTVZ/0]
mysqlの勉強をしてます

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


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

798 名前:796 mailto:sage [2009/04/02(木) 11:40:45 ID:???]
>>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さん [2009/04/02(木) 11:48:45 ID: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 mailto:sage [2009/04/02(木) 11:59:21 ID:???]
>>799
嘘だよね? select * from テーブル名 where id=2;
あるいは、 where name='木村';

801 名前:nobodyさん mailto:sage [2009/04/02(木) 12:07:31 ID:???]
>>796
mysql_fetch_arrayの結果を4回使いまわす

802 名前:796 mailto:sage [2009/04/02(木) 12:09:54 ID:???]
>>801
違うんです。4つそれぞれ別なんです。
テーブル結合でも想像できないのでやっぱり4回やらないとだめなのかな

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

804 名前:796 mailto:sage [2009/04/02(木) 12:40:16 ID:???]
$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さん mailto:sage [2009/04/02(木) 12:56:43 ID:???]
気持ちの悪いメンテナンスしづらいコードですね



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

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

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



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

809 名前:796 mailto:sage [2009/04/02(木) 13:26:45 ID:???]
>>804
途中で$g=0;を入れるのを忘れました。
$i++の後

810 名前:nobodyさん mailto:sage [2009/04/02(木) 13:51:13 ID:???]
796さん、あなたを下スレ公認回答者に認定いたします

811 名前:nobodyさん mailto:sage [2009/04/02(木) 18:28:53 ID:???]
>>807
actionかlocationでの遷移先をそれに設定すればいいのでは?

812 名前:nobodyさん [2009/04/02(木) 19:09:54 ID:vfSwYPOW]
>>811
ありがとうございます、できました!!


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

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

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

814 名前:nobodyさん mailto:sage [2009/04/02(木) 21:56:16 ID:???]
pukiwikiの設定でサイトURL入れるとこあるんじゃ?

815 名前:nobodyさん [2009/04/02(木) 22:33:32 ID:SbciSXr8]
なるほど…
ちょっと探してみます。

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



816 名前:nobodyさん mailto:sage [2009/04/02(木) 22:33:55 ID:???]
絶対リンクをやめる

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

818 名前:nobodyさん mailto:sage [2009/04/02(木) 23:15:28 ID:???]
絶対リンク埋め込みだとしてもhttp://で検索すればすぐ書き換えられそうじゃん

819 名前:nobodyさん [2009/04/03(金) 01:14:27 ID: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さん mailto:sage [2009/04/03(金) 01:28:48 ID:???]
>819
現代人ならプリペアドステートメントを使え。プレースホルダ使える状況でクエリを直接組み立てる奴は原始人。
PDOStatement::bindValue()の第3引数にPDO::PARAM_NULLを指定すれば、NULLをDBに入力できる。

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

821 名前:nobodyさん mailto:sage [2009/04/03(金) 01:33:38 ID:???]
DB上のnullじゃなくて言語上でnullだから無くて当たり前

822 名前:nobodyさん mailto:sage [2009/04/03(金) 01:33:52 ID:???]
単にこうするんじゃないか?
$val = 'NULL';

823 名前:nobodyさん mailto:sage [2009/04/03(金) 01:34:01 ID:???]
$val = 'NULL';
でNULLをDBに入力できる

824 名前:819 mailto:sage [2009/04/03(金) 01:37:29 ID:???]
>>820

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

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

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

825 名前:819 mailto:sage [2009/04/03(金) 01:39:55 ID:???]
>>822
>>823
それだと文字列のNULLが入ってしまいました。
間違えてるかもしれないのでまた確認してみます。
ありがとうございます。



826 名前:nobodyさん mailto:sage [2009/04/03(金) 01:44:23 ID:???]
されないだろ
insert into test (id, comment) value (NULL, 'test')

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


828 名前:nobodyさん mailto:sage [2009/04/03(金) 02:07:57 ID:???]
セッション使えば?

829 名前:827 mailto:sage [2009/04/03(金) 02:11:24 ID:???]
>>828
返信ありがとうございます。
やっぱりsessionがいいですよね。
もしPOSTでスマートに出来るならと思い聞いてみました。

830 名前:nobodyさん mailto:sage [2009/04/03(金) 02:26:52 ID:???]
hiddenとか過去の産物だろ。更新ボタンとか戻るボタンとかでgdgdになるのが目に見えてる

831 名前:nobodyさん mailto:sage [2009/04/03(金) 02:29:07 ID:???]
>>827
試してないけど、javascriptでformのactionを変更できるんじゃないの。
msdn.microsoft.com/ja-jp/library/cc409726.aspx

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

832 名前:nobodyさん mailto:sage [2009/04/03(金) 02:30:00 ID:???]
>>830
戻るでグダグダになるのはセッションじゃないかい?

833 名前:nobodyさん mailto:sage [2009/04/03(金) 02:38:12 ID:???]
とりあえずhiddenを批判するやつはどこにでもいる

834 名前:nobodyさん mailto:sage [2009/04/03(金) 03:42:37 ID:???]
入力、確認を違うファイルにするとエラー処理がめんどい

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



836 名前:835 mailto:sage [2009/04/03(金) 06:55:01 ID:???]
解決しましたすみません;ケアレスミスでした・・・

837 名前:nobodyさん mailto:sage [2009/04/03(金) 07:27:17 ID:???]
>>783

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

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

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

840 名前:nobodyさん mailto:sage [2009/04/03(金) 08:43:25 ID:???]
そんなのクオートすりゃ済む話だろ

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

842 名前:nobodyさん mailto:sage [2009/04/03(金) 10:01:31 ID:???]
NULLと空文字は違うだろw

843 名前:nobodyさん mailto:sage [2009/04/03(金) 10:05:52 ID:???]
昔Oracleしか知らなくてnullとブランク何が違うか客先で質問して大恥かいたことあるぜ

844 名前:nobodyさん mailto:sage [2009/04/03(金) 11:18:56 ID:???]
根拠レスな「このコードはセキュリティがダメだね」発言は居酒屋での「大したことねえなマツザカ(笑」みたいな会話に近い
neta.ywcafe.net/000974.html

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



846 名前:nobodyさん mailto:sage [2009/04/03(金) 11:29:51 ID:???]
高木先生大の批判は辞めて下さい

847 名前:nobodyさん mailto:sage [2009/04/03(金) 11:45:02 ID:???]
>>844
また宣伝か

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


849 名前:nobodyさん mailto:sage [2009/04/03(金) 15:17:48 ID:???]
>>848
$valの中身を将来的にコードからいじる可能性があるならfunction、
可能性がないなら定数のままでいい

850 名前:nobodyさん mailto:sage [2009/04/03(金) 15:40:20 ID:???]
最近、他人のブログを批判しながら2ちゃんで宣伝してアクセス数稼ぐのが流行ってるのか?

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

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


853 名前:nobodyさん mailto:sage [2009/04/03(金) 15:49:16 ID:???]
>>851
前者でおk

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

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



856 名前:nobodyさん mailto:sage [2009/04/03(金) 18:32:47 ID:???]
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さん mailto:sage [2009/04/03(金) 19:08:16 ID:???]
>>855
strtr

858 名前:nobodyさん [2009/04/03(金) 19:44:58 ID: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さん mailto:sage [2009/04/03(金) 20:02:31 ID:???]
>>858
&$vのとき、参照を張るには、参照される側のアドレスが必要だから、そこで定義される。値はNULL

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

860 名前:nobodyさん mailto:sage [2009/04/03(金) 20:14:47 ID:???]
return ''; を return $v=''; でよくね?

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

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

862 名前:nobodyさん mailto:sage [2009/04/03(金) 20:18:37 ID:???]
宣言すりゃいいじゃん

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

864 名前:nobodyさん mailto:sage [2009/04/03(金) 20:46:30 ID:???]
フレームワークには用意されてたりするけどね

865 名前:nobodyさん mailto:sage [2009/04/03(金) 22:15:46 ID:???]
>>856
文字コードがUTF-8でBOMが入っているとか?
UTF-8Nにしてみたら?



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

867 名前:nobodyさん mailto:sage [2009/04/03(金) 23:35:31 ID:???]
>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さん mailto:sage [2009/04/03(金) 23:36:22 ID:???]
Zend_Request使えよ

869 名前:nobodyさん mailto:sage [2009/04/03(金) 23:49:57 ID:???]
宗教上の理由によりお断りします

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

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

}


871 名前:nobodyさん mailto:sage [2009/04/04(土) 01:54:48 ID:???]
>>870
classはできない。functionや変数は可能。

872 名前:nobodyさん mailto:sage [2009/04/04(土) 01:54:55 ID:???]
>>870
他言語の素養があるおまいさんはまずマニュアルを読みなはれ。

873 名前:nobodyさん mailto:sage [2009/04/04(土) 02:00:30 ID:???]
privateなclassってどんなん?

874 名前:870 mailto:sage [2009/04/04(土) 02:00:58 ID:???]
>>871
サンクス

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

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


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

}

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

}


875 名前:nobodyさん mailto:sage [2009/04/04(土) 02:04:36 ID:???]
>>874
両方ともパターン1かよ



876 名前:nobodyさん mailto:sage [2009/04/04(土) 02:05:23 ID:???]
まちがえた
両方ともパターン2かよ

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






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<244KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef