【PHP】下らねぇ質問はID出して書き込みやがれ 112
質問者はまず
>>1 を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
次スレは
>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 111
http://hibari.2ch.net/test/read.cgi/php/1317232566/ ◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
【簡易FAQ】
1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている 。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
10. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(
http:// 〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
6 :
nobodyさん :2011/10/31(月) 10:17:32.86 ID:Y0Qjkr6H
下らない質問ですみません アップロードした画像の名前を連番かタイムスタンプかに 自動的にファイル名を変更して保存したいのですがどうしたらよいですか? ググっても良く分かりませんでした
9 :
nobodyさん :2011/10/31(月) 17:47:31.52 ID:kJZWPuOB
【OS名】CentOS5.7 【PHPのバージョン】5.3.5 【連携ソフトウェア】pgsql 【質問内容】 先日PHPを再インストールしたのですが(yumの5.3.5からソースの5.3.5に変更)、 今まで使用していたpgsql関連の関数がいくつか使用できなくなってしまいました。 現在確認している関数はpg_affected_rows()とpg_escape_string()です。 Fatal error: Call to undefined function pg_affected_rows() Fatal error: Call to undefined function pg_escape_string() ググってみても全く原因が掴めず困っています。 よろしくおねがいします いくつかインストール後に気になった点です。 ・phpinfoのpgsql欄の以下の項目がdisabledとなっている(再インストール前はenabled) Multibyte character support disabled ・同じくpgsql欄のlibpqのVersionが8.1.22から9.0.0に上がったこと PostgreSQL(libpq) Version 9.0.0
>>9 ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pgsql --enable-mbstring
>>9 php5.3使ってるならオブジェクトで書けよ
12 :
nobodyさん :2011/10/31(月) 18:22:41.06 ID:AI0ae1hj
名前空間を使うとき from hoge import * みたいな書き方はできないんでしょうか? use hoge\* ではダメでした・・・
13 :
nobodyさん :2011/10/31(月) 18:23:01.76 ID:Z5/PdDI9
--with-mysql=/usr/local/mysql \
15 :
9 :2011/10/31(月) 18:35:43.71 ID:kJZWPuOB
解答ありがとうございます
>>10 configureオプションは以下のようになっています
一応全て指定しているつもりなのですが、何か不自然な所があったら指摘をお願いします
--with-apxs2=/usr/sbin/apxs \
--with-pgsql=/usr/pgsql-9.0 \
--enable-mbstring \
>>11 オブジェクトを扱ってdbconnectができるのですね。知りませんでした。
ですが、何が使用不可となっているのか把握できていないので、
根本から解決したいと思っています。
16 :
nobodyさん :2011/10/31(月) 19:24:32.06 ID:Z5/PdDI9
phpをインストールするとき --with-pgsql=/usr/local/pgsql これ入れた?
17 :
nobodyさん :2011/10/31(月) 19:27:23.69 ID:Z5/PdDI9
19 :
nobodyさん :2011/10/31(月) 19:31:34.17 ID:Z5/PdDI9
もう一回両方入れなおしたら?
20 :
nobodyさん :2011/10/31(月) 19:35:16.40 ID:DDhIm8wJ
>>20 PHPと関係ねえじゃんしねよks
perlスレ池
23 :
nobodyさん :2011/10/31(月) 19:45:48.73 ID:DDhIm8wJ
apache、php、postgresqlをyumじゃなくそーすでやったら。
27 :
nobodyさん :2011/10/31(月) 21:11:27.68 ID:DDhIm8wJ
>>25 ありがとうございます。
あまり知識が及ばないので調べさせていただきます。
できましたら報告しますね。
質問です。 A画面とB画面があって、その両方の画面から呼ばれているユーザー選択画面があったとします。 A画面から、リンクを押下するとユーザー選択画面に遷移し、 ユーザーを選択するとA画面に戻ります。 B画面も同様の動きをします。 このような場合、ユーザー選択画面を実装するphpファイルを、 A画面にもB画面にも依存しないように作るのは一般的ですか? それとも、依存するのが当たり前でしょうか。 よろしくご教示お願いいたします。
29 :
28 :2011/10/31(月) 21:34:32.19 ID:znaCeG13
すいませんID出し忘れました
30 :
本物の28 :2011/10/31(月) 21:45:13.20 ID:???
>>29 すいません、id出さなきゃいけないルールなのでしょうか。。
idを出す方法を教えてください。
>>28 どっちでもいいよ
コントローラで動作を振り分けるのもいいし
別々につくってもいいし
>>30 名前欄にfusianasanって書くとIDが出る
>>31 依存しないで作ることなんか出来るの?
A画面で何か入力して、ユーザー選択画面に遷移した後、A画面に戻ったら入力内容を復帰する場合を考慮すると、
依存しないで作ることは出来ない思う。
35 :
本物の28 :2011/10/31(月) 22:48:44.21 ID:???
解決しました
どっから来たかを覚えておけばいいよ。 元の画面の情報を復帰するのは、元の画面が考えればいいだけ。
37 :
nobodyさん :2011/10/31(月) 23:36:43.33 ID:V0LerLdh
SQLite3でデータを簡単に登録するだけのフリーライブラリとかないでしょうか? 検索機能は必要なのですけど、 登録機能は付ける必要がないので、 そういうツールがあると楽なんですけど
フレームワーク ORM
+-----+---------+------+------+------+--------------+---------------+ | hid | name | hid | sid | lid | skillname | skilleffect | +-----+---------+------+------+------+--------------+---------------+ | 2 | slither | 2 | 0 | 1 | poison spray | 70damage | | 2 | slither | 2 | 0 | 2 | poison spray | 80damage | | 2 | slither | 2 | 1 | 1 | toxicity | 4000e | | 2 | slither | 2 | 1 | 2 | toxicity | 3000secdamage | +-----+---------+------+------+------+--------------+---------------+ これを mysql_fetch_array($res)で取得すると array(13) { [0]=> string(1) "2" ["hid"]=> string(1) "2" [1]=> string(7) "slither" ["name"]=> string(7) "slither" [2]=> string(1) "2" [3]=> string(1) "0" ["sid"]=> string(1) "0" [4]=> string(1) "1" ["lid"]=> string(1) "1" [5]=> string(12) "poison spray" ["skillname"]=> string(12) "poison spray" [6]=> string(8) "70damage" ["skilleffect"]=> string(8) "70damage" } 2 ってなる 重複されちゃって 1個しかとれない 4こ配列にとる方法おしえて
>>1 を読まないやるはたいていマニュアルも読まないからな
ちゃんと書いてあるのに
どんどんfetchすればいいだけだったわ。 IDなんて出すかボケ
44 :
nobodyさん :2011/11/01(火) 02:48:24.50 ID:i3fruPo7
evalって危険ですか?
潜在的な危険性はある 特に使う機会もないしよくわからないなら使わないほうがいい
46 :
39 :2011/11/01(火) 09:10:38.89 ID:???
【OS名】Ubuntu10.4 【PHPのバージョン】5.3.2 【連携ソフトウェア】MySQL 【質問内容】 +-----+---------+------+------+------+--------------+---------------+ | hid | name | hid | sid | lid | skillname | skilleffect | +-----+---------+------+------+------+--------------+---------------+ | 2 | slither | 2 | 0 | 1 | poison spray | 70damage | | 2 | slither | 2 | 0 | 2 | poison spray | 80damage | | 2 | slither | 2 | 1 | 1 | toxicity | 4000e | | 2 | slither | 2 | 1 | 2 | toxicity | 3000secdamage | +-----+---------+------+------+------+--------------+---------------+ これを mysql_fetch_array($res)で取得すると array(13) { [0]=> string(1) "2" ["hid"]=> string(1) "2" [1]=> string(7) "slither" ["name"]=> string(7) "slither" [2]=> string(1) "2" [3]=> string(1) "0" ["sid"]=> string(1) "0" [4]=> string(1) "1" ["lid"]=> string(1) "1" [5]=> string(12) "poison spray" ["skillname"]=> string(12) "poison spray" [6]=> string(8) "70damage" ["skilleffect"]=> string(8) "70damage" } 2 ってなる 重複されちゃって 1個しかとれない 4こ配列にとる方法おしえてください
47 :
39 :2011/11/01(火) 09:21:13.02 ID:???
わかりました whileを使って mysql_fetch_arrayの内部ポインタを回してなかったのが問題でした
28==39はたぶん前から荒らしてるIDを出さない愉快犯だろ
49 :
9 :2011/11/01(火) 10:34:28.61 ID:et/TRmhs
回答ありがとうございます。 結果から申しますと直りました。 prefixに自分の作成したディレクトリを設定していたのですが、 以下のようにしたら直りました。 --prefix=/usr \ たぶんこれが原因ですが、他にも少々いじっていたので釈然としません・・・
50 :
nobodyさん :2011/11/01(火) 12:34:31.21 ID:H8SNTTud
携帯メール送信について教えてください。
PCメールは以下のコードで送信ができました。
mb_language("japanese");
mb_internal_encoding("UTF-8");
$to = "
[email protected] ";
$subject = "test";
$body = "test";
$from = mb_encode_mimeheader(mb_convert_encoding("テスト","JIS","UTF-8"))."<
[email protected] >";
mb_sendmail($to,$subject,$body,"FROM:".$from);
文字コードをUTF-8からISO-2022-JPに変えればいいんでしょうか?
色々ググったんですが、具体的にどうすればいいのかわかりません。
携帯がiPhoneなので実機の確認が出来ないのですいませんが教えてください。
51 :
nobodyさん :2011/11/01(火) 12:38:51.23 ID:H8SNTTud
追記です。 絵文字も半角カタカナも使いません。 ふつうの日本語とURLの送信だけです。
バカがとある文字化け解消ブログを鵜呑みにしてmb_send_malは使うなとか言いそうだから書いとくけど サーバの設定を正しくきちんとやってれば文字化けなんておきないんだよ あのブログの内容は古すぎる
53 :
nobodyさん :2011/11/01(火) 12:52:59.88 ID:iiYJx3ec
RSSを取得してタイトルとリンクを表示させて、さらにそのタイトルの文字数を制限させたいのですが上手くいきません。
普通の文章なら
$text = 'あいうえおかきくけこさしすせそ';
$text = mb_strimwidth($text, 0, 10, "...", 'UTF-8');
print ($text);
「あいう...」 となるのですが
RSSだとどこに $*** = mb_strimwidth($***, 0, 10, "...", 'UTF-8');の記述を挿入しても上手くいきませんでした
RSSの取得には
ttp://php-web.net/faq/rss.html このサイトの記述を使用しています。
$rssurl = "RSSのURL";
$rssdata = simplexml_load_file($rssurl);
$num_of_data = 5;
$outdata = "";
for ($i=0; $i<$num_of_data; $i++){
$outdata .= "<li>";
$outdata .= "<a href=\"";
$outdata .= $rssdata->item[$i]->link;
$outdata .= "\">";
$outdata .= $rssdata->item[$i]->title;
$outdata .= "</a>\n";
$outdata .= $rssdata->item[$i]->description;
$outdata .= "</li>";
}
print($outdata);
初心者のウンコです。宜しくお願いします。
>>52 正しくきちんと説明すんのが面倒だからそう言ってるのが分からんのはバカじゃねーのか?
>>50 つーわけでめんどくさいんで、初心者にはPEAR使ってねっていうのが楽な回答。
>>53 RSSの生データをブラウザじゃなくてソースで見てみるといいかも。 数値文字参照になってるかも。
日本語でお願いします
56 :
nobodyさん :2011/11/01(火) 15:27:49.33 ID:H8SNTTud
>>54 PEAR::Mailですか?
require_once("Mail.php");で呼び出して使えばいいんですか?
とりあえず、これでもう一回調べます。
ありがとうございます。
SJIS固定なのはよほど古い携帯使ってる場合
58 :
nobodyさん :2011/11/01(火) 16:01:31.69 ID:ILjwbPAY
PHPの質問というかサイト開発の考え方についての質問ですが 今、某フレームワークを使ってて、各ページで発生する例外を フロントコントローラでキャッチしてエラーページに転送する処理を行っています で、今回あるアプリというかライブラリ的なものを導入したところ そのライブラリ中のmethodを実行すると場合によって内部で例外処理を実行するため エラーページに転送されてしまいます しかし、自分としてはそのmethodの実行はmustの機能でなくオプション的なもので いちいちエラーページに転送せんでも…と考えています if($libraly->doit()){ error_log("doitの実行中に例外が発生したみたいです<__FILE__:__LINE__>";); } という形でエラーの記録をつける程度にしたいんですが、 この場合、 1)フロントコントローラやエラーページのコントローラで throwされた例外を判別してエラーページに転送させない 2)そもそも例外処理をしてるライブラリの中身を弄って例外でなくエラーコードを返させるなど改造する の二通りしかないんでしょうか? 1がおすすめというか普通の処置ですか?
>>58 まともな思考の持ち主なら、bool値を返すのか例外を出すのか仕様を決めて
エラーだろうが例外だろうが必要な方へ変換する
60 :
53 :2011/11/01(火) 17:01:34.11 ID:iiYJx3ec
>>54 ブラウザのソースみて組みなおしたら出来ました
ありがとうです!
こんにちはぁ〜 PHPプログラマーの、お姉さんだよぉ〜 今日はどんな質問が残ってるのかな? お姉さん納品も終わって暇だから、 どんな質問にも答えちゃうよぉ〜
62 :
nobodyさん :2011/11/02(水) 14:30:44.37 ID:l39L84sY
フェイスブック連携アプリを作っているのですが、 メッセージをウォール投稿する際に改行を入れたいのですがどうやればいいのでしょうか?
商売で儲かる時期なので教えません
64 :
nobodyさん :2011/11/02(水) 15:58:38.10 ID:3p0wfnnG
>>50 ですが、なぜかYahooメールアドレスのみメールが届かないことがわかりました。
たまに迷惑メールフォルダに入っているんですが、これどうすればいいんですか?
第五引数に-fを入れたら届いたというのを見てやってみたんですが、届きません。
一日はまっていて正直お手上げです。どなたか教えください。
65 :
nobodyさん :2011/11/02(水) 16:02:20.35 ID:44zn7mAu
mingについて質問させてください。 SWFTextFieldで表示した文字列を透明化したいと思います。 以下のようなコードでは駄目でした。 $textField = new SWFTextField(SWFTEXTFIELD_MULTILINE|SWFTEXTFIELD_NOEDIT|SWFTEXTFIELD_NOSELECT); $textField->setFont(new SWFFont("")); $textField->addString("aaaaaaaaaaaaaa"); $obj = $swf->add($textField); $obj->setName("tfobj"); $action = new SWFAction("tfobj.alpha=20;"); $swf->add($action); $swf->nextFrame(); そもそもこのような事は可能なのでしょうか?
mb_convert_encodingで数値文字参照からUTF8へのコンバート実装した奴誰だよ! 神かよ!!
67 :
nobodyさん :2011/11/02(水) 22:04:29.02 ID:lxwCRKmV
インスタンスを複数作るわけじゃない場合、Javascriptだとクラス(みたいなもの)を作らずに var object = { value: "", getValue: function() { return this.value }, setValue: function(value) { this.value = value } }; と書いてnewせずに使いますがPHPではこういう場合どうするんでしょうか ひとつの場合でもクラスを作ってnewするんでしょうか
>>67 無名クラスなら残念ながらない
動的オブジェクトなら new stdClass() がある、がメソッドは定義できない
JavaScriptはアクセス修飾子がない setter/getterメソッドは普通はインスタンスを作る class Hoge { ? private $value = ""; ? public function getValue() { return $this->value; } ? public function setValue($value) { $this->value = $value; } } $hoge = new Hoge(); $hoge->setValue("foo"); echo $hoge->getValue();
実体参照の記述ミス ?のとこはインデントに置き換えてね
class Object { static $value = ""; static function getValue() { return Object::$value; } static function setValue($value) { return Object::$value = $value; } } Object::setValue("foo"); echo Object::getValue(); staticにすればこんなこともできるが・・・いいやり方とは思わない。
72 :
67 :2011/11/02(水) 22:27:42.95 ID:???
73 :
67 :2011/11/02(水) 22:30:04.31 ID:???
75 :
nobodyさん :2011/11/03(木) 00:49:04.09 ID:gDPf6EbN
$_SERVER[HTTP_REFERER]以外に前のページのURLを取得する方法ってありますか? 携帯だと$_SERVER[HTTP_REFERER]が使えないようなので。
ない クライアントが送出する情報だし サーバ側でどうこうする問題じゃない
77 :
nobodyさん :2011/11/03(木) 01:23:25.50 ID:gDPf6EbN
>>76 ありがとうございます。
根本的にコードを書き直さないといけないっぽいです。
78 :
62 :2011/11/03(木) 01:37:42.96 ID:b9zARhas
だれか62の回答をお願いします〜
フェイスブックの仕様なんかしるかよ フェイスブックに問い合わせろや
80 :
nobodyさん :2011/11/03(木) 02:44:53.01 ID:5engvLs9
<?php var_dump($_POST);?> <form action="add.php" method="post"> <input type="text" key="k1" value="v1"/> <input type="submit" value="send" /> </form> ファイル名add.phpにて、このコードをそのまま実行して、サブミットすれば、 var_dumpでPOSTのデータが取れると思ったんですけど、出てきませんでした。 これってどこがおかしいのでしょうか?
81 :
80 :2011/11/03(木) 02:51:04.34 ID:???
申し訳ない、事故解決した。 ってかformはkeyじゃなくてnameだったな。 なんか、違う言語のキーワードか何かとごっちゃになってた
どこに質問して良いのかわからないのでここに質問させてもらいます。 いわゆる各種ブログへのメール投稿をするプログラムを作成しました。 流れとしては・・・ 1.レンタルサーバにその人の各種ブログ用の携帯投稿アドレスを登録しておく。 2.特定のアドレスにその人がデコメを送信する 3.メールをトリガにしたPHPを起動させ、TOを設定して各種ブログへ送信する と言う物を作ってあります。 先日顧客の要望でアメブロを対応させてくれという話があったんですが、 アメブロは単純にアドレスを打つだけではダメなんでしょうかね? 他のブログはFromが指定アドレスになっていれば特にチェックしてないみたいでブログに反映しているのですが、 アメブロは携帯アドレスを細かくチェックしてるのか投稿が無視されます。 どのサーバから送られてきたとか、そういうのをチェックしているのかな?と考えました。 (偽装的な物のチェックだと考えて良いのですかね?) 少し調べましたがAtom?とかのAPIをPHPでプログラムして投稿するような事をしないとダメなんでしょうか? それしか方法が無いなら顧客に日数ももらわないといけませんし・・・ あれこれ調べて見ましたが、API使用しか方法が無いのか確信が持てなかったので・・ もし何かヒントでもわかる方お見えでしたらよろしくおねがいいたします。
>>82 なぜ、そのアメブロに聞かないのか。
お仕事でしょ?
>>75 クエリに現在のurlを埋め込んだリンクを用意する
86 :
nobodyさん :2011/11/03(木) 11:39:25.06 ID:gDPf6EbN
>>76 前のページで$_SESSIONに自分のファイル名をいれておくことであっさり解決しました。
ありがとうございます。
87 :
nobodyさん :2011/11/03(木) 13:28:22.55 ID:5qwbDYAW
【OS名】CentOS6.0
【PHPのバージョン】5.3.8
【連携ソフトウェア】Apache 2.2.15
urlルーティングしてくれるスクリプトを自分で作ろうと思ってます。
http://www.example.com/ を自サイトURLとして、
http://www.example.com/page/param1/param2/というurlにアクセスすると http://www.example.com/index.php にリダイレクトするようapacheのmod_rewriteで設定済みです。
index.phpの中にルーティングのロジックを書いているのですが、うまくいきません。
$request_uri = explode('/', $_SERVER['REQUEST_URI']);
$script_name = explode('/', $_SERVER['SCRIPT_NAME']);
$uri_info = array_diff_assoc($request_uri, $script_name);
$uri_info = array_values($uri_info);
上記のコードで実際にリクエストされたurl(www.example.com/page/param1/param2)と
実際にルーティングのロジックが動いているスクリプト(www.example.com/index.php)との
差分をとって、 /page/param1/param2 を取得しようと思ったのですが、
$request_uri と $script_name をvar_dumpすると、以下のような全く一緒の値がでてきてしまいました。
array(4) { [0]=> string(0) "" [1]=> string(4) "page" [2]=> string(6) "param1" [3]=> string(6) "param2" }
script_nameがうまく取得できないのですが、どうやったらうまく取得できるでしょうか?
車輪のなんちゃらって言われないようにFW使っとけ
89 :
nobodyさん :2011/11/03(木) 21:40:48.05 ID:RHXIeUwE
車輪のなんちゃらもお勉強目的ならありだよなー
>>87 クライアントが要求してくるURLを取得するのだからrequest uriだけ使えばいいんだよ
その用途にscript nameを使う意味がわからない
よくわからんけど、array_diff_assocは駄目だと思う。
92 :
87 :2011/11/04(金) 02:04:59.05 ID:tFL/lOhG
93 :
nobodyさん :2011/11/04(金) 11:39:06.39 ID:hpR+oaep
【PHPのバージョン】5.3 【質問内容】 どうにもこうにもNoticeがとまらない if(count($limitid) > 0) { foreach($limitid as $include) { for($i=0; $i<count($obj); $i++) { if($obj[$i]->term_id == $include) { array_push($cat, $obj[$i]); break; } } } $obj = $cat; } Notice: Trying to get property of non-object in (四行目) ここの板の人はアホかと思うような質問ですまません 何をやってもさっぱりでNoticeは消えず php4->5のルール変更がクモの巣のようですorz
googleで Trying to get property of non-objectで検索して一番最初のやつでいいだろ。 何もやってもというが、何もやって無いだろ。
>>92 俺もarray_diff_assocはだめだと思う。
そうしようと思った発想は柔軟でうらやましくはあるけれど。
>>93 $objにオブジェクトじゃないものが潜んでる
98 :
nobodyさん :2011/11/04(金) 13:53:03.66 ID:3DwnANG1
フォームタグ出力関数みたいなのは作らないほうが良いとどこかで読んだ気がするのですが どうなんでしょうか
また○○はするなを鵜呑みにしちゃう低学歴のご登場か ○○していいよっていう意見よりも○○はするなという意見を信じてしまう典型的な例
>フォームタグ出力関数 ナニソレ
>>99 「いつも私はこのように書いています。」ってのも、かなりの安心感をもたらす魔法の言葉。
なので、さっぱり良いとも悪いとも、そもそも話を理解できていない俺が
>>98 簡単なアプリならフォームタグ出力関数みたいなのを作るのが楽でいいよ。
フォームベタ書きでもいいけど、あんまりオススメしない。
将来もっと複雑になってきたときにフレームワークに切り替えればおk。
と、レスをするわけです。
DOM使えばじゃあ それにしてもPHPのDOMは貧弱だよな
>>98 関数とhtmlが分かりにくく混ざることを危惧した言葉だと思う。
関数を使うことで(書きやすさではなく)見通しが良くなるというのであれば作ればいい
ちなみに私はsmartyを組み合わせた自作簡易フレームワークの為にhtmlをはきだすクラスを作った
<div>{{ht->inpur name='hoge' value='hogevalue'}}</div>
このhogeはPOSTの値と繋がっているから、
POST['hoge']に何かが入っていたら、自動的にその内容が表示されるとか、
selectだと自動的に選んだものにselectedが入るとか、
そういう使い方はしてる
105 :
nobodyさん :2011/11/04(金) 20:26:13.02 ID:1sQ24kpb
.phpの中で、外部の.phpファイルを実行したいんですがそのときに引数も渡したいです a.php <?php exec('/usr/lib/php /var/www/test.php 100 50 >dev/null 2>&1 &' ,$rec); var_dump($rec); ?> test.php <?php return $argv[1]+$argv[2]; exit(); ?> a.phpのvar_dump()の結果で150が返ってくることを期待してるんですが 実際は array(0) { } です どこがおかしいんでしょうか?
>>105 なぜexecを使う。includeかrequireでいいじゃない。
107 :
nobodyさん :2011/11/04(金) 20:46:36.43 ID:1sQ24kpb
>>106 バックグラウンド処理というのをしたいんです
それで調べたらexec()と書いてありました
php.iniのsafe_modeもoffになってるんですが…
>>105 return で結果が返るわけないだろ
test.phpのところで返したい文字をechoで返せ
109 :
nobodyさん :2011/11/04(金) 21:57:38.17 ID:1sQ24kpb
>>108 test.php
<?php
$val= $argv[1]+$argv[2];
echo $val; //ダメでした
echo "test_val";//こっちもダメでした
?>
そもそもtest.phpをちゃんと実行できてるんでしょうか?
どうやったら確認できますか?
<?php info;?>
112 :
nobodyさん :2011/11/04(金) 22:15:25.20 ID:1sQ24kpb
>>110 phpinfo()とは違うものですか?
とりあえずtest.phpをその内容に書き換えましたが何も起きません
>>109 >>109 test.php
exec('php test2.php 100 200', $o, $r);
var_dump($o);
test2.php
unset($argv[0]);
echo implode(",", $argv);
/dev/null 2>&1 & って付ければ そら、PHPは結果待たずに次ぎ行くけど、 ( & だけだと 終わるの待つので) 結果 /dev/nullに捨ててんだから、 取得できんわな。 ファイルにでも出力すれば、処理が終わった頃にファイルに出力されるけど、 バックグラウンドで処理したいってんだから、その結果を exex()抜けた段階で結果取得できるわけが無いでしょうに。
115 :
nobodyさん :2011/11/04(金) 22:50:03.75 ID:1sQ24kpb
>>113 ありがとうございます、しかしダメです
array(0){} が表示されるだけです
test2.phpの実行権限は755,775,777で試しましたが全部ダメでした
実行ユーザはftpuser(ftp権限ユーザ):apacheになってるんですが問題ありますか?
PHPそのものの問題とずれてきてすみません
117 :
nobodyさん :2011/11/04(金) 22:54:31.81 ID:1sQ24kpb
>>114 ありがとうございます
「/dev/null 2>&1 &」の部分は今は削除して以下のようにしていますがダメです
//test.php///////////////////
exec('/usr/lib/php /var/www/html/test2.php 100 50', $o, $r);
var_dump($o);
//test2.php//////////////////
unset($argv[0]);
echo implode(",", $argv);
そもそも、/usr/lib/phpはディレクトリなんですがこれは問題ないんでしょうか
>>117 var_dump($o); じゃなくて $r 見てみるといいかも。
当然ディレクトリじゃ駄目だし。
>>118 $rを見たら126が返ってきました
実行権限の問題らしいですが777で問題あるのかなぁ
>当然ディレクトリじゃ駄目だし。
…と思って、実行プログラムの方を /usr/bin/phpに変えたら上手く行きました!
長らくありがとうございました! 他の皆さんも感謝します、ありがとう
120 :
nobodyさん :2011/11/05(土) 17:12:07.15 ID:i9WzEjTE
初歩的な質問ですがよろしくお願いします 掲示板などで特定のタグだけ許可するにはどうしたらいいでしょうか?
でっかい文字列はJSONに詰め込めない?
122 :
nobodyさん :2011/11/05(土) 19:43:18.54 ID:rsIAWbTh
関数を呼びたいのですが、その関数内の処理が終わった後に戻ってきてほしくありません このような場合とのように記述すればいいでしょうか
>>123 冷静に考えてみるとexitすればいいだけでした
ありがとうございます
125 :
nobodyさん :2011/11/05(土) 22:29:46.48 ID:bVUvResi
2つの配列があって、値が重複してないものだけDBに保存したくて 以下のように書いてみたのですが、もっとスマートな方法はないでしょうか? foreach($str as $val) { foreach($str2 as $check) { if($val != $check) { $sql = "INSERT INTO test(test) VALUES('" . $val . "')"; mysql_query($sql); } } }
>>120 strip_tags($text, '<p><a>');
>>125 $str = array( 1,2,3,4 );
$str2 = array ( 2,3,4,5);
のとき、
insertされるのは 1,1,1,1,2,2,2,3,3,3,4,4,4 だけどいいのか?
>>125 $a = array("a","b","c");
$b = array("d","c","e");
$c = array_count_values(array_merge($a,$b));
foreach ($c as $k => $v)
{
if (1 === $v)
{
echo $k, PHP_EOL;
}
}
>>125 あとなるべく緩い比較は使わず厳格な比較で書く癖をつけろ
diffもuniqueも見当違い
133 :
125 :2011/11/06(日) 01:51:22.75 ID:/DBL4K4E
>>126 >>129 さんの言うように!=じゃなくて!==としなくちゃいけないんですね。
勉強になりました。ありがとうございます。
>>127 >>130 >>132 おお!こんな便利な関数があったとは!
この3つを試してみます。ありがとうございます。
比較演算子の話じゃないけどまあいいか。
135 :
nobodyさん :2011/11/06(日) 10:08:19.85 ID:GxhRdhG7
日本語混じりの配列をjson_encodeでjson化してDBにINSERTしたら、 DBの中に保存した日本語部分が、「 ¥u30ab」 となっているはずなんですが、 「u30ab」 と 「¥」が抜けてしまいます。 原因が分からず・・・よろしくお願いします。
DBに入れる文字列をエスケープしてないんでしょう。 mysql_real_escape_string のようなのにかけるとか。 \\uにしなきゃ。
137 :
nobodyさん :2011/11/06(日) 10:20:05.33 ID:GxhRdhG7
>>136 あ!そっか!エスケープされてたのか・・・ケアレスミスでした
ありがとうございます!
>>138 使えないコードだったんでいりませんでした
140 :
nobodyさん :2011/11/06(日) 12:31:41.62 ID:yw0oOdZM
<?php include("./hoge.php");?> とするとhoge.phpの内容がすべて表示されてしまいます。 これを個別のdiv単位で引用表示させる方法を教えてください。 【例】 <div class="a" id="b"> <p>ほげほげ</p> </div> <div class="c" id="d"> <p>ほげほげほげほげ</p> </div> とhoge.phpの中に上記のHTML文があるとして この中から <div class="a" id="b"> <p>ほげほげ</p> </div> だけを引用して表示する方法を教えてください。
142 :
140 :2011/11/06(日) 13:12:54.56 ID:yw0oOdZM
>>141 他人のサイトからの引用なのでそれはできないです。
ソースを教えてください。
>>142 勝手に引用するのは、まずい場合もあるぞ
やり方わからないなら、やめておけ
144 :
140 :2011/11/06(日) 13:31:27.29 ID:yw0oOdZM
>>144 俺の言ってること分かってる?
だから、勝手に引用することが法的にまずい場合もあるから、
そーゆーサイトを作ること自体をやめておけって、親切で言ってんの
ソースを教えてくださいって・・・ 丸投げスレではないので作る能力がない人はお帰りください
147 :
140 :2011/11/06(日) 13:47:51.07 ID:yw0oOdZM
149 :
140 :2011/11/06(日) 14:04:46.56 ID:yw0oOdZM
>>148 ググれじゃなくて、その方法を詳細に教えてください><
教えてくれるまでこのスレに居座ります><
へたに教えるとしつこくからまれそうで躊躇するな。 質問者はそういうのも考えないと答えてくれる人を減らすばかりだぞ。
153 :
140 :2011/11/06(日) 14:50:18.42 ID:yw0oOdZM
154 :
151 :2011/11/06(日) 14:54:35.38 ID:???
xmlをわからないんじゃ、もうココで聞いても無理だな。
156 :
140 :2011/11/06(日) 15:14:44.61 ID:yw0oOdZM
みんなやさしいなぁ、適当に答教えればいいでしょうが。 そんなに自分でやるように促しても、もったいないよ。 <html> <head> <style type="text/css"> #d {display: none;} </style> </head> <body> <?php include("./hoge.php");?> </body> </head>
亀釣り乙
>>157 >#d {display: none;}
うけたwwwwwww
ID:yw0oOdZM これは久々にすごいのがきたなwww 丸投げを丸投げではないと仰る
もういいよ
提示された要求を満たすおそらくもっとも早い方法だったのにな。 じゃあ、これでいいか? $text = file_get_contents("hoge.php"); preg_match("|<div[^>]*id=\"b\"[^>]*>(.*?)</div>|su",$text,$matches); print $matches[0];
正規表現君こんばんは
シネって切れる奴、久しぶりに見たなぁ ガキか
マニュアルの関数リンクとか貼られたら それの例文見つつ組み立てられるやつじゃないと このスレは難しい 初心者が自分のスキル以上の成果物を求めるのは 勉強してこいと門前払いされて当然
たまーに、こーゆーの湧いてくるよな
167 :
nobodyさん :2011/11/07(月) 08:44:04.60 ID:1lB9fRg6
mysqlにアクセスするバッチファイルに root権限以外で実行すると Lost connection to MySQL server during query みたいな変なエラーがでます どんな原因が考えられますか?
エラー全てを網羅してる人間なぞいるわけ無いでしょ。 そのエラーで検索すればいくつか原因がありそうだから、 1個1個確認してくしか。 せめて、検索してXXと○○試したけどダメでした、他の原因知ってる方いませんか、でしょ。
せめてmysqlスレできこうや
たいていマニュアルのリンク張られても全然関係ない場合もある
171 :
140 :2011/11/07(月) 14:00:16.85 ID:hVnG4+j0
誰か教えてください><
知恵袋で質問してggrksと煽られてしね
174 :
140 :2011/11/07(月) 14:33:51.26 ID:hVnG4+j0
>>174 何個か書いてもらった、
>>157 とか
>>162 とか試した?
質問するなら、それじゃだめだったってことだろ?
試してからどこがダメだったか書かないと、誰も教えてくれねぇよ
試してないとしたら、せっかく書いてくれたのにやらない奴は最低だ
177 :
140 :2011/11/07(月) 14:45:52.15 ID:hVnG4+j0
なんだ、普通に完全回答出してもらってるのに分からないっていってるのか
だって176の趣旨の3行目が読めない時点で文盲だろ
>>177 表示だけならそれでも問題ないはずだぞ。
ぶっちゃけ、その方がサーバー負荷は軽減する。
レスポンスタイムはPHPでやろうがCSSでやろうが一緒。
だから、CSSでやる場合のダメな点を挙げてから質問しなって。
dom出力するときに頭のデータだけ表示すりゃあいいじゃん
182 :
140 :2011/11/07(月) 15:00:07.62 ID:hVnG4+j0
>>179 試す価値もないということが分らんのか負け犬めが
>>182 もうお前駄目だ・・・せっかく手ほどきしてもらってんのに・・・
自滅だな
何がしかの反応が欲しいだけの釣りだと思うよ
185 :
nobodyさん :2011/11/07(月) 15:17:26.67 ID:skZKPuIx
スレチかもしれませんが、PHPで作っているのでここで質問させて下さい。 同じドメインでUAを見て、モバイル(スマホ)サイトとPCサイトを出し分けてます。 PC版サイト内にiframeでモバイルサイトを表示したいんですが、 URL固定にして、いい方法ないでしょうか・・・ iframeだけUA偽装とかは無理ですかね? URLに引数つけてUAの判断が妥当でしょうか? よろしくお願いします。
186 :
140 :2011/11/07(月) 15:17:27.68 ID:hVnG4+j0
へ理屈はやめて、さっさと教えてください><
>>185 iframeにモバイル用のないよう表示させればいいじゃない
>>185 includeでモバイル用URLを指定すればいいだけのこと
日付またがって本物かどうか分からないわけだが。 なんでまたがる前にトリップつけるとかやんなかったの?と、成りすましに言ってもしょうがないが。
どうせ人様のサイトを勝手に使おうとしてるんだろう
192 :
nobodyさん :2011/11/07(月) 15:31:43.54 ID:skZKPuIx
>>185 やっぱ、iframeのurlに引数を一つ追加して、それをモバイルのフラグに割り当てるべきだとおもう
擬似的なiframeを使うって手段も思い付いたが、
ページ遷移への対応を考えると絶望的に手間がかかるっぽいし。
そもそも、iframeなんてやめちまえというのが本来の姿だと思うんだけど、 もうむり?
195 :
nobodyさん :2011/11/07(月) 15:38:10.27 ID:ViAJy6ja
exec();について知りたいのですが exec("/usr/bin/php /var/test.php {$params} ", $o, $r); echo "レスポンス:".var_dump($r); echo "出力:".var_dump($o); のようにしてる時 引数$paramsには配列やserialize()した配列を指定できないんでしょうか? 引数$paramsが $params = array("dog", "cat"); test.phpが以下の内容の時、 <?php echo $argv[1][0]; ?> 1)配列を引数にした場合 なぜかAが出力されます レスポンス:int(0) 出力:array(1) { [0]=> string(1) "A" } 2)serialize()した配列を引数にした場合 レスポンス:int(2) 出力:array(0) {} 配列はそのままでもserialize()してもダメなんでしょうか? また、1)のケースのときの、返り値Aはどこから来たんでしょうか? 配列を渡す方法があったら教えてもらえると助かります、よろしくお願いします
196 :
nobodyさん :2011/11/07(月) 15:41:18.73 ID:skZKPuIx
>>193 やっぱそうですかねw
output_add_rewrite_varで値を引き継げるようにすればいいか。
どもっす!
>>194 Mobile/SmartPhoneに特化してるんで、
PC版には、使い方やら広告やら載せようかってしてたんですが、
どうせだったら、Mobile版見れるようにのっけちゃえって判断になりましたw
>>195 配列を文字列化した結果の先頭一文字がAだから。
シリアライズしたならデシリアライズすること。
あとはコマンドラインについて勉強しなされ。
>>195 seializeしたのをつけたコマンドを一度echoして、それをコマンドラインで打って試した?
なんか記号がいろいろ邪魔してそうだけど
splite3を使ったサイトを作ってるんですが、 テーブルのカラムが30を越えるような感じになっていて、 新規作成するときのsqlもインサートのチェックもかなり長くてややこしいことになってしまうので、 テーブルの作成やデータチェックが分かりやすく書ける そんなライブラリってないでしょうか?
一応phpのライブラリじゃなきゃいけないんでこっちに書いたんですけどね。 ってか、あっちに書くくらいなら知恵袋の方がまだいい答え貰えそうなw
具体的にどの辺がややこしくなって困ってるのかが分からないよ 入力フォームのチェックがややこしいならsqlite関係ないし、そうじゃないならなんのチェックするのか分からないし
205 :
nobodyさん :2011/11/07(月) 18:02:20.53 ID:pflxypT1
質問です imgタグを許可したいのですが $text = preg_replace("/<img ([a-zA-Z0-9;\-\s]+)>/","<img $1>",$text); これで置換できないのはなぜでしょうか?
206 :
nobodyさん :2011/11/07(月) 18:03:33.50 ID:pflxypT1
訂正です imgタグを許可したいのですが $text = preg_replace("/&lt;img ([a-zA-Z0-9;\-\s]+)&gt;/","<img $1>",$text); これで置換できないのはなぜでしょうか?
許可するとかよくわからんが <img src='path/to/image'> ってなってんじゃないの?
208 :
nobodyさん :2011/11/07(月) 18:12:33.28 ID:pflxypT1
>>207 ありがとうございます
しかしながら
$text = preg_replace("/&lt;img ([a-zA-Z0-9:;\/\"\'\-\s]+)&gt;/","<img $1>",$text);
これでもダメでした
こういうときって()の中はどう書けばいいのかな
>>208 イコールとピリオドと下線も入れといたほうがいいんじゃないの?
主に項目を追加するときのサニタイズとエラーチェックをすっきり書きたいです。 どうせならそれにあわせて、自動的にcreate tableをやってくれるものとかないかなと。
211 :
195 :2011/11/07(月) 18:23:46.55 ID:ViAJy6ja
>>197-198 ありがとうございます
言われた通り、コマンドラインから似たような配列で試してみたら以下になりました(上手く行ってます)
[root@localhost ~]# ary=("dog" "cat")
[root@localhost ~]# php -q /var/test.php ${ary}
string(3) "dog"
(↑ test.phpのecho var_dump($argv[1])の結果です)
同様に.php中のexec()で配列の引数を渡す時点で配列は
ary=("dog" "cat")の形にしなきゃダメなんでしょうか
ためしに
$params= '$("dog" "cat")';
exec("/usr/bin/php /var/test.php {$params}", $o, $r);
としてみましたが出力として何も表示されません
>>208 そういうのはDOM見て判断したほうがいいんじゃね
>>208 $text = preg_replace("/<img .+?>", "<img $1>", $text);
要素の中に>と<は絶対にこないはずなのでこれでいい
>>213 カッコも閉じスラッシュも無いよ!あとセキュリティ的にダダ漏れすぎじゃね
>>211 いやいやいや、PHPは文字列送るだけなんで配列なんてモンはコマンドラインに送れないっすよ。
"/usr/bin/php /var/test.php {$params}" はただの文字列で
{$params}は、 "Array" って変換されるだけの文字列なので、
"/usr/bin/php /var/test.php Array" なわけで・・・ ってだれか上で書いてたでしょう?
そこの部分を join使うなりしてスペースで区切った文字列にでもするしかないのでは。
216 :
199 :2011/11/07(月) 18:45:51.49 ID:???
自分のやりたいことが伝えられてないとと思ったので改めて、 dbのテーブル作成、入力値チェック、取得 このようなことをできるだけ短いソースで記述できるライブラリはないでしょうか? 半コピヘなソースを大量に書くの大嫌い
>>211 215に追加
serializeみたいな関数を使う前提で組めば、
配列だろうと簡単に渡せる
218 :
195 :2011/11/07(月) 18:52:12.08 ID:ViAJy6ja
>>215 あー、やっぱり文字列か数値しか引数に持てないんですか…
phpマニュアルのexec()の説明にそう書いてて欲しいよ
配列をシリアライズして引数にしたときにresponseに2が返ってきたのも
引数に使えない文字が出てきてたからかな
はぁー、どっと疲れる結果だ…
ありがとうございました
219 :
195 :2011/11/07(月) 18:54:14.64 ID:ViAJy6ja
>>217 218を書いた直後にいま思いついたんですが
serializeしたものにaddslashes()したら渡せるでしょうか?
試してみます
220 :
215 :2011/11/07(月) 18:57:57.54 ID:???
>>218 いやphpに限らずコマンドラインで動かすんだから書いてなくても分ってないと困る
222 :
215 :2011/11/07(月) 19:01:32.88 ID:???
あ、ごめん言いたいこと分かった。
シリアライズしたパラメータをひとつ渡せってことね。
>>219 シェルに渡す文字列のパラメータの部分を 配列をシリアライズした文字列にして、 escapeshellarg通せばいいかと。
受け側のPHPで 元にもどすんだよ。
223 :
nobodyさん :2011/11/07(月) 19:23:11.80 ID:pflxypT1
>>209 >>212-213 ありがとうございます
しかしながら&がうまくいきません
$text = "&";
$text = preg_replace("/([a-zA-Z0-9:;.=\&\"\'\/\-\s]+)>/","hoge",$text);
echo $text;
出力結果:& ←なぜhogeにならない?
224 :
nobodyさん :2011/11/07(月) 19:26:27.71 ID:pflxypT1
すみませんできました 変な>が入ってました しかしこれでいいのかなぁ
225 :
nobodyさん :2011/11/07(月) 19:26:39.80 ID:ciMO8Qf+
$a = '/a/b/c/d/'; $b = '/a/b/t/f/'; という二つのパスがあり、$bのパスを基準に$aへの相対パスを求める方法を教えてください この組み合わせ例なら結果としては../../c/dを得たいのです
228 :
215 :2011/11/07(月) 19:50:03.36 ID:NMeIBL32
>>218 どっと疲れたのはあなたのやり方が拙いためなので、ここで言われても。
何を実行しようとしているのか確かめればいい。ちなみに、execで使用されるシェルおよび環境変数についても調べておいたほうがいいよ。
230 :
215 :2011/11/07(月) 20:39:58.70 ID:NMeIBL32
>>225 $a = '/a/b/c/d/';
$b = '/a/b/t/f/';
print getrPath($b,$a);
function getrPath( $base , $target) {
$base = explode("/",$base);
$target = explode("/",$target);
$ret = array();
for($i=0;$i<count($base)-1;$i++)
if($base[$i]!=$target[$i])$ret[]="..";
for($i=count($base)-1-count($ret);$i<count($target);$i++)
$ret[]=$target[$i];
return implode("/",$ret);
}
行稼ぎで気持ち悪いのは勘弁な。
exec と serialize の件だけど、 配列をimplode(" " , $hoge); ってして、スペース区切りでtest.php に渡したら? test.php内で、foreach( $argv as $hoge )ってしたら、解決じゃね?w
あ、スペース区切りで渡す際に、配列に空白が入らないことが前提ね 空白はいるなら、””で囲むやらaddslashesやらしないとね
>>230 おもいつきで作るもんじゃねーな。訂正。
function getrPath( $base , $target) {
$base = explode("/",$base);
$target = explode("/",$target);
$ret = array();
$flg=false;
for($i=0;$i<count($base)-1;$i++)
if($base[$i]!=$target[$i]||$flg){$ret[]="..";$flg=true;}
for($i=count($base)-1-count($ret);$i<count($target);$i++)
$ret[]=$target[$i];
return implode("/",$ret);
}
235 :
nobodyさん :2011/11/07(月) 21:31:25.11 ID:ciMO8Qf+
236 :
nobodyさん :2011/11/07(月) 21:50:10.70 ID:kLp4+73L
プログラミング板の正規表現スレにて以下のように質問しました PHP5.3.8にてDOMDocumentにてHTMLファイルを取得し、<body>内のテキストだけを抽出したいです。 タグ部は正規表現で除去出来ますが、問題になるのは<script>でJavaScriptの中身が表示される、<!--などのコメントが表示される事です。 で、<script>とコメントを含む部分を先に除去したいと思います。 /<script[^>]*?>.*?</script>/si とかやってみたのですが良く分かりません。 アドバイスまたは似たような事を書かれているサイトなどを教えて頂けないでしょうか? すると、正規表現使わずに出きるので、PHPスレにて聞けといわれました どのようにすればいいのでしょうか?
>>235 /a/b/c/d/
/b/b/c/d/
とかで、間違えてた
>>236 php_tidy
「php スクレイピング」
$doc = new DOMDocument(); $doc->loadHtmlFile("hoge.php"); $element = $doc->getElementsByTagName("script"); $element->item(0)->parentNode->removeChild($element->item(0)); print $doc->saveHtml(); 除去ならこっちじゃねーの?
除去っていうよりスクリプトタグ省いたTextが欲しいって事じゃないの?
$doc = new DOMDocument();
$doc->loadHTML(file_get_contents('
http://www.nicovideo.jp/ '));
$xpathObj = new DOMXPath($doc);
$textNodes = $xpathObj->evaluate('//body//*[name(.)!="script"][normalize-space(child::text()) != ""]/text()');
foreach ($textNodes as $key => $textNode) {
var_dump($textNode->wholeText);
}
phpでメソッドをstaticにする意味ってありますか? C++の場合は、メソッドをstaticにするとプログラムがメモリに乗るから早くなるって聞いたことがあるんですが、 phpの場合はどうなんでしょうか? みなさんは、phpでメソッドをstaticにする、しないをどのようにきりわけているでしょうか?
>>238-241 >>241 >除去っていうよりスクリプトタグ省いたTextが欲しいって事じゃないの?
そうです
テキスト部のみが欲しいのですが、
pre_replace()とかでタグとかを除去するための正規表現を考えていました
>>242 メモリはどうか分かりませんが、確かPHPもstaticの方が早いはずですよ
いい加減な事は言えませんが、オライリー本か何かに書いてましたよ
インスタンスを作成しないぶんとかなんとか
自分は意識してstaticで出来ることはstaticにしています
>>225 じゃあもうちょっと気持ち悪いのを。
function getrPath( $base , $target) {
$base = explode("/", $base);
$target = explode("/", $target);
while (($b = array_shift($base)) === ($t = array_shift($target)) && !is_null($b));
return implode("/", array_merge(array_fill(0, count($base), '..'), array($t), $target));
}
>>242 staticにするという事はメモリを使うということだ
staticを唱えた数だけメモリを使うことを頭に入れて使えばいいんだよ
staticをつけないといけないほど速度を気にしないといけないことってそうそうない
オープンソースでもstaticなんてメジャーどころはみない
俺がstaticを使うときはセットアップファイルなどの一度しか使わないような処理で高負荷かけるような処理させるときぐらい
なのでstatic=早いからと何でもつけとけばいいものじゃない phpに限らないけどね
オープンソースでstaticを見たことがないってのはシングルトンを見たことがないってことか?
phpでシングルトンなんてあまり意味ない
意味ないなんてことない
あまり意味は無いけど意味ある部分もあるから まぬあるのあの文面どうなのって思うわ
staticメソッドにすべきかどうかというのは
プログラム板で聞いたほうがいい
http://hibari.2ch.net/tech/ PHPはこまけーこと気にしないでいいような
オヴァカさん向け設計なので
ご覧のようにまともな回答は返ってきません
そういうメモリやらなんやらの基礎知識は
基本情報あたりに手を出して初めて知るのがPHPer
マニュアルのあの文面ってどの文面なんだろう。 大抵の人は「ああー、あの文面ね」って理解できるぐらいメジャーな話なんだろうけど、分からないorz
自演だからとか。
PDOについてなんですが Prepared statementsを先ほど知ったのですが、 これって、毎回決まったようなクエリだったら PDO::queryの変わりにPDO::prepareで実行すると 2回目から早いよって認識で大丈夫ですか? ちょっと認識ずれてます?
258 :
257 :2011/11/08(火) 03:02:31.41 ID:6HzOoKMd
>>257 だいたいそんな感じでいいよ
パラメータだけ変えて複数実行する時に有用
insert文やupdate文でまとめて複数行うときなんかによく使う
260 :
nobodyさん :2011/11/08(火) 09:21:39.20 ID:hZ5KEzHU
関数内関数についてです。 関数Aの中でまとまった処理がしたくて、 function A(){ function 纏まった処理(){}; 纏まった処理(); 纏まった処理(); } としているのですが、この書き方でA()を実行すると纏まった処理()が A()の中だけでなくグローバルになってしまいます。 A()の中だけで有効な関数の作り方はどうすればよいのでしょうか。 function A(){ $纏まった処理=function (){}; $纏まった処理(); $纏まった処理(); } しか無いのでしょうか。
クラス使えば?
>>260 その関数内でしか使われない関数って定義はできないし、
ラムダ関数みたいな機能もないので
クラスで書いてもいい処理ならprivateで外からアクセスさせないようにするってくらいかな
263 :
257 :2011/11/08(火) 09:35:34.95 ID:6HzOoKMd
>>259 なるほど、ちょっと試してみます。
ありがとうございます
そういえばcreat_functionってラムダ関数作るやつだったな。 記述が見易くならない可能性の方が高いんで、使えるかは微妙だけど
バカほどstaticを使いたがる
267 :
nobodyさん :2011/11/08(火) 10:30:09.32 ID:Olz6L6I6
Singletonとstaticと聞いてちょっと質問です class Test { private $con; private $hoge; public function Test($hoge) { $this->con = DB::get()->connect(); $this->hoge = $hoge; } public function a() { $this->con->query("sql"); //$this->hogeを使う } public static function b() { $con = DB::get()->connect(); $con->query("sql"); } } ポイントは b()はインスタンス変数を必要としないのでstaticとしても呼び出せるようにしたい $this->conが使えないのでstaticメソッドは毎回DB::get()->connect();をコールしないといけない こういうのっておかしいですか?
>>267 ActiveRecordみたいなパターンがあるのでおかしくはない
そもそもそのTestが何を表してるのかが大事
クラスは箱や入れ物じゃないからな、型だぞ
$user = new User();
$user->name = 'hoge';
$user->save();
$user = User::findByName('hoge');
269 :
nobodyさん :2011/11/08(火) 14:36:04.18 ID:lQaQJdzP
クラスのメンバ変数について教えてください class内の先頭部でprivate $_dbなどメンバ変数(クラスのプロパティ)を定義しますが、 これと、メンバ関数function()内での変数$popとの違いは、 ・$_dbはクラス全体で使える(あるメソッド内で値を代入されたらそれが他のメソッドでもその値が使用される) ・$popはその関数の中でのみ有効 という理解で宜しいのでしょうか?
そんだけ専門用語理解してるような素振りしといて スコープもわからんとは不思議なやつめ staticを考慮しなければそういう理解でよろしいです
クラスの中に入ってる変数を(publicだけでいいから)全部取得したいんだが、 いい方法ないだろうか?
273 :
nobodyさん :2011/11/08(火) 16:23:44.63 ID:92k+xz2U
htaccessでdenyしてるディレクトリのファイルにアクセスしたいのですが、 requireは出来るのですが file_get_contentsは403が返ってきてアクセスできません。 上記条件下でlocalhost内のファイルを文字列に読み込むにはどうしたらいいでしょうか?
>>273 requireしたファイルから文字を返すように書き直す
file_get_contentsで403が返るのは理由はHTTPの勉強をすれば出来ない理由が分かる
file_get_contentsで ローカルアドレスでいいんじゃねーの?
277 :
273 :2011/11/08(火) 16:46:18.38 ID:92k+xz2U
278 :
271 :2011/11/08(火) 17:10:24.27 ID:???
>>276 どうやら、そのリフレクションでは、
クラスのデフォルト値しかとれないようです
コンストラクタとかで値を再定義しても、そっちは取得できない。
で、調べてみたらクラスをforeachにかけると取れるのがわかったので、
今回はそっちを使うことにしました
279 :
nobodyさん :2011/11/08(火) 18:28:41.45 ID:++VodBMC
Webブラウザ以外からのアクセスをできる限り排除したいのですが、 HTTP_USER_AGENTに対する正規表現はどのように書くのがベストだと思いますか?
Webブラウザのホワイトリスト作るしかないでしょ。 偽装できちゃうんで、それが出来る限りでしょう。 期待した答えじゃないなら、それ書いてね。
281 :
nobodyさん :2011/11/08(火) 18:37:55.45 ID:++VodBMC
ありがとうございました。 そう言われてみればそうですね。 HTTP_USER_AGENTを使う方法以外に、 例えばクッキーみたいなブラウザにはついてる機能の有無を確認して ブラウザからのアクセスかどうかを判定することはできそうですか?
クッキー食わないブラウザのアクセスを断るみたいなページは作れるかとは思いますが。 やりたいことは何でしょうか。
Webブラウザって言っても色々あるし そういうのは現実的ではないと思うなぁ
284 :
nobodyさん :2011/11/08(火) 18:49:56.34 ID:++VodBMC
>>282 それではクッキーが有効かどうかで判定してみることにします。
アクセス解析みたいなプログラムで不要・不正なアクセスを除外したいです。
ありがとうございました。
無理ですね 諦めてください
286 :
nobodyさん :2011/11/08(火) 18:51:53.54 ID:++VodBMC
何が無理なんですか?
まあ、本人がよければなにするのも自由っしょ。
288 :
nobodyさん :2011/11/08(火) 18:57:11.31 ID:++VodBMC
そうですか。
まあそれでいいならいいんじゃかね。 Webブラウザが行う事はWebブラウザでしかできない訳ではないから素人の子供だましだけどさ
>>290 誰がやろうとも出来る限りでしか出来んのだよ。
素人だのいってバカにして恥ずかしくないのか?
292 :
nobodyさん :2011/11/08(火) 19:13:52.74 ID:lDLMrbx7
phpファイルを読み込んだときに、jsとcssの読み込みがうまくいきません loader.php <?php function flush(){ require_once("test.php"); } flush(); ?> test.php <html> <head> <link rel="stylesheet" href="test.css" type="text/css"> <script src="test.js" type="text/javascript"> </head> <body> <?php echo "hello,world" ?> </body> </html> 上のような2ファイルを使い、loader.phpを実行してブラウザに表示させると、test.php内で呼び出しているcssとjavascriptが読み込まれません。 生のhttpレスポンスを見たところ、test.cssとtest.jsではcontent-typeが Content-Type: text/html; となっていたため、htmlとして読み込まれていたために動作していなかったと分かりました。 これらcssとjavascriptファイルを適当なcontent-typeで読み込ませるにはどうしたらいいでしょうか?
php_valueで拡張子別にdefault_mimetypeを変更
291は完全に読み違えてるな
気持ち悪いけど、動くのよねこれで。
297 :
292 :2011/11/08(火) 20:09:12.54 ID:lDLMrbx7
すみません、単純にcssとjsのパスを間違えていただけでした・・・
パスをあわせると普通に読み込めました・・・
>>295 自分で
>>87 のようなルーティングスクリプトを作っています。
あるurlにアクセスしたら条件にマッチするクラスを実行し、
そのクラスの中でtest.phpのようなテンプレートを呼び出す、という形にしているため
こういう感じになりました。
どう変なのか教えてもらえるとうれしいです。
>>297 へ?Content-Type: text/html; になってたってのは?
300 :
292 :2011/11/08(火) 21:01:23.04 ID:lDLMrbx7
>>298 結局それもパスを正しいものにしたところで直っていました・・・・
301 :
nobodyさん :2011/11/08(火) 23:00:38.35 ID:lQaQJdzP
64bit版のcentOS6でPHPをソースからコンパイル時に./configure --with-readlineをすると configure: error: readline library not found と出ます しかし、yumでreadline-develは入れていますし、32bit版ではこれで上手くいっていました rpm -ql readlineで /lib64/libreadline.so.6 /lib64/libreadline.so.6.0 /usr/lib64/libhistory.so.6 /usr/lib64/libhistory.so.6.0 が出てきたので--with-readline=/usr/lib64とかしましたがダメでした どのようにすればいいのでしょうか?
302 :
nobodyさん :2011/11/08(火) 23:06:06.38 ID:lQaQJdzP
書き忘れましたがPHP5.3.8です
303 :
nobodyさん :2011/11/08(火) 23:41:21.56 ID:UTCFCr2R
すみません、PDOのプレースホルダでLIMIT句を実行するとエラーになります。 bindValueでINT指定でOKみたいなのですが、こうするしかないのでしょうか
>>301 一度yumでreadlineをremoveしてソースからビルドしてみたらどうですかね?
phpもソースからなんだし。
>>301 --with-libdir=lib64
307 :
301 :2011/11/09(水) 00:58:44.47 ID:???
>>304 32bit版では全く問題が無かったのです
パスを指定する必要もありませんでした
なので64bit版でも出きるだろうと思っていたのですが・・・
>>305 今--with-libdir=lib64を./configureに追記して実行してみました
しかし、やはりconfigure: error: readline library not found
が出てしまいました
自分、コマンドラインからも結構PHP使うもので、出来ればreadline入れたいなと思っております
libedit入れてみれば?
>>307 /lib64 を指定しないと LD_LIBRARY_PATH に lib64を付加したところが探されるんじゃないのかな
セッションIDが毎回コロコロ変わるようにしたいんだけど 楽な方法ってどんな方法?
313 :
312 :2011/11/09(水) 13:27:57.32 ID:ICnxPKAl
ID出てなかった あと、毎回じゃなくて一定回数ごとに変化する方法も知りたい。 通信エラーのたびに最初のページからってのはさすがにうざいからな。
セッション関数のマニュアルを読まずに質問してるよな マニュアルにそのままやりたい事が関数に用意されてるだろ
どうせコマンドラインで使わんだろうからreadline入れなくていいんじゃね?
通信エラーのたびに最初のページからってのは、違う話だがね。
>>315 ところが、使うって言ってるんだな。
アホ丸出しだな 自分の無知さをセッションのせいにするなよw
318 :
nobodyさん :2011/11/09(水) 14:55:21.12 ID:Ubneb9ND
poが空っぽじゃん
320 :
nobodyさん :2011/11/09(水) 15:28:05.29 ID:Ubneb9ND
321 :
nobodyさん :2011/11/09(水) 15:39:41.35 ID:Ubneb9ND
自己解決しました 翻訳ファイルは指定された位置を置くルールがあるようで翻訳ファイルをルールに沿って指定した場所に置くと事で表示させることができました
どうでもいい・・・かどうかは分からないけれど、
>>240-241 の指定の仕方だと
大量のWarningが出てダメだよね
loadHTML()系はJavaScriptとか入ってるだけで大量にエラーでるから
・・・って俺だけなのかな?
読み込んでる文章が文法違反だらけなんだろ そこだけエラー抑制しとけば
Warning出すが読んでくれるというのが正しい。 @でもつけとけ。
>>323 と言うことは
>>241 のニコ動も・・・
・・・というかそこだけエラー抑制ってどういうこと?
$doc->@loadHTML()ってこと?
これじゃそこだけじゃなく、全体を抑制するからね
ソース見りゃわかるけどニコ動とかパースエラーのオンパレードだよ
他のWarningも抑制してしまうけど、こうしてる error_reporting(E_ALL ^ E_WARNING); $doc->loadHTML($source); error_reporting(E_ALL);
329 :
nobodyさん :2011/11/10(木) 11:39:56.26 ID:9jcxfb/W
MVCモデル で htaccessで hoge.com/?page=info を、 hoge.com/info/ と置換されるようにして 静的URLにみせてるのですが その影響でアクセス解析等を導入したとき 実際に hoge.com/acc/ にアクセス解析があるのに、 hoge.com/?page=acc と置換されて、表示できなくなります。 何かうまい解決策はないでしょうか。
>>329 MVCをなぜ書いたのかと、なぜPHPなのかはおいといて
アクセスログを見るツールだったら、そのまま表示されるはずだが?
もしかして、リライトじゃなくリダイレクトしてないよな
ま、どう出るかは解析ツール次第だろうな
hoge.com/?page=info を、 hoge.com/info/ と置換されるようにして 静的URLにみせてるのですが 逆じゃね?
cakephpでpathinfoいじるからそれ関係か? MVCとか関係ねーよ
コントローラを集中化するためには必須じゃないか?
334 :
nobodyさん :2011/11/10(木) 17:37:41.31 ID:MAuKgtyH
sqlite3::prepareについて データベースにprepareでインサートするときはprepareを使うとエスケープがいらないって聞いたのですが インサートしてもエスケープされません <とか>などはエスケープされないってことですか? インサートする文字列↓ <b>てすと</b>
そりゃSQLで使うシングルクオートとかの話だよ
というか、何か勘違いしてるような気が、、、 どういうコード書いたの?
337 :
nobodyさん :2011/11/10(木) 17:59:21.53 ID:MAuKgtyH
インサート部分だけですけどこう書きました $sql = 'insert into tbl (id, text) values (:id, :text)'; $stmt = $sqlite3->prepare($sql); $stmt->bindValue(':id', 1, SQLITE3_INTEGER); $stmt->bindValue(':text', "<b>てすと</b>", SQLITE3_TEXT); $stmt->execute();
338 :
nobodyさん :2011/11/10(木) 18:23:31.78 ID:Capr9OYX
339 :
nobodyさん :2011/11/10(木) 19:58:34.70 ID:ZhWtNVen
session_destroy()を呼ぶとすぐにセッションファイルが削除されるんですか? それとも削除フラグが立って、削除自体はGCか何かであとでまとめて削除されるんですか? session_save_path()でセッションの保存先をpublic_html以下にしてみて session_destroy()を呼んでみて確認したところ、削除されていないような感じだったので・・・
マニュアルのsession_destroyのページに正しく消すためのコードサンプルが載ってるだろ
341 :
339 :2011/11/10(木) 20:18:05.94 ID:???
>340 レスどうもありがとうございます session_start(); $_SESSION = array(); はやっています ini_set('session.use_cookies','0'); にしているのでセッションクッキーの箇所はマニュアルの例とは違っています そのレスだとすぐにセッションファイルが削除されるってことですよね わかりました
342 :
nobodyさん :2011/11/10(木) 22:15:11.52 ID:J5cnYxt0
みんあな聞いてくれ 今日おれの誕生日だ。 ケーキ買いに池袋いったんだ。 そしてケーキ屋の人がだれかの祝いですか、と聞かれて僕です と答えたら、周りの従業員さん5名にbookoffみたくおめでとうと言われて 非常にはずかしかった。 どうしたらいい?
>>342 俺も8日に誕生日だった。
地震以来久々に妹からメールが来た。
読んだところ
「部屋にあるジョジョよんでいい?」
だった
そんなもんだ
344 :
nobodyさん :2011/11/10(木) 22:27:05.89 ID:J5cnYxt0
>>342 笑える。
でもさ、でかい声で今日お誕生日の方いらっしゃいました
とか言う必要なくない。
一人で来ているのに、もうはずかしくて。
まさかそんな待っている間拷問だった
1人食うんだろうな。かわいそうな人なんだな。 と思って店員が気を効かせて祝ってくれたんだから有りがたく思え。 そして思いっきりスレチだ。
346 :
nobodyさん :2011/11/10(木) 22:31:54.86 ID:J5cnYxt0
ちゃんとID出したろ? じゃあ、こういうこと書ける板ってどっかある? ちゃんと家族で食べたよ。恋人はいませんけど。 もう二度とあのケーキ屋にはいかない。 あーあおれの誕生日も後2時間か。いいことなかったな
vipですらチラ裏と拒否られるクラス
>>337 当たり前だろ
データベースのエスケープ処理はSQLインジェクションを防ぐための処理
SQLインジェクションに<>は関係ない
<>のエスケープはXSSを防ぐための処理だ
んで本題だがHTMLタグってのはデータベースにはそのまま入れる
んで取り出してHTMLに表示するときにhtmlspecialcharsでエスケープをして表示する
HTMLタグって言うか特殊文字
うぃっす! PHPプログラマーの、お姉さんだ! 徹夜明けの始発で帰宅中だ。 頭がテンパッテルから どんな質問にも答えるぞ!
352 :
nobodyさん :2011/11/11(金) 05:04:13.04 ID:mPjM7esZ
htmlに埋め込んで出力したhtmlのソースが汚くなってしまうんですけど インデントをそろえるにはどうしたらよいですか?
>>352 > htmlのソースが汚くなってしまう
> インデントをそろえるには
htmlを出力する部分のPHPコード、そのPHPコードのインデントを変えてみてください。
いろいろと、自分で試してみると思い通りの結果が得られることがあります。
by 帰宅したお姉さん
357 :
337 :2011/11/11(金) 10:39:35.63 ID:jWtQzIpf
>>349 そうだったんですか勉強になりました
インサートの書き方は
>>337 のでも大丈夫でしょうか?
358 :
nobodyさん :2011/11/11(金) 11:45:59.13 ID:2qMnb8p5
mysql_escape_stringとmysql_real_escate_stringの違いが分かりません realの方は文字コードを考慮したエスケープを行うとのことですが mysql_escape_stringをつかった時、 具体的にどういうデータがどのように問題になるのでしょうか?
>>359 具体的に% および _ をエスケープしないことでどのような問題があるのでしょうか?
like文のパラメータとして働かなければ%はただの文字列では?
>>360 %E3%81%8A%E3%81%BE%E3%81%88%E3%81%AF%E3%83%90%E3%82%AB%E3%81%A0%E3%81%AA
ググリまくっても全然「具体例」が出てきません>< 危険だから使うなとか、 ''で囲まずにそのまま変数をクエリに代入して「危険」とかそんなの当たり前だろ!っていう例とか なんなの??
>>360 mysql_escape_string()はキャラクタセットの変更を考慮しない
更にこの関数自体がセキュリティの観点から見ても好ましくない
例えば、文字列リテラルのメタ文字が増えた場合に意図しない動作になるとかね
>>364 ありがとうございます
抽象的な説明はいろいろ読みましたが
知りたいのは
「こういう文字をmysql_escape_stringにかけたらこうなり
mysql_real_escape_stringにかけたらこうなる
だから問題だ」
という具体例です
説明から例が思いつかないので腑に落ちないのです
>>367 すみません
煽りと思ってしまって・・
これは16進数でバイナリ化した後にかけるんですよね
具体例がほしいって、問題を理解して自分で作ればいい。
371 :
nobodyさん :2011/11/11(金) 15:14:32.29 ID:Hw6ayFxo
phpやmysqlで簡単な中古車情報とかのレベルのポータルサイトを 作るのはスーパーマリオブラザーズで例えると 技術的にどれくらいのレベルですか? ちなみに hello php World が、1-1です。
ワープ無しノーミスで30分以内にクリア
簡単な中古車情報でそれだったらFacebookとかどうなるんだww
セキュリティをないがしろにしていいならクリボー倒すレベル そのへんもちゃんとやるならクッパ倒すより難しい
不特定多数から情報の登録を受けるつもりはなく 情報を表示するだけならもうちょっと簡単じゃない?
俺なら何も考えないなら3日で作れると思う ちゃんと設計して考えてやれば1ヶ月ぐらいかかるな
377 :
nobodyさん :2011/11/11(金) 15:47:14.11 ID:3zpr0Z+7
ブラウザからDBを修正するシステムを作っているのですが、 更新する際にブラウザから受け取った主キーの値の物を上書きするため、 何らかの方法でPOSTを書き換えると関係無いデータに上書きしてしまいます。 あえてセッションを使わない方法で、 これを回避するにはどうしたらいいでしょうか?
>>377 1. フォームにユニークな識別子を割り振る
2. フォームの識別子と主キーをペアにしてDBに保存する
3. フォームに識別子を埋め込んで出力する
4. 送信されてきた識別子でDBから主キーを逆引きする
>>370 それはその通りだと思いますが
ここまで具体例がネット上にないのは
ほとんど問題の本質が理解されていないのではないでしょうか?
ググりまくりましたが
「なんとなく分かったことにしておこう」
的な意識を全般的に感じました
sqlインジェクションを、お前みたいな馬鹿に サンプルのコピペで実行されない様にする為に決まってんだろ
>>380 意味が分かりません
あなたは自分の言っていることが自分で分かっているのですか?
そして自分の言葉が他人に分かると思いますか?
煽りは無視しようぜ・・・ あんまり分かってない(のが多い)ってのは事実だよ。 理由は、ここ見れば全部分かる、間違ってないってサイトが無いからな。 あれば ここみろで終わりだしな。 ヘンテコ本が蔓延したのもあるし、公式は間違って無いが、細かいところが足りない。
383 :
nobodyさん :2011/11/11(金) 18:09:09.09 ID:Hw6ayFxo
switch ($_REQUEST['page']) { case 'a_page': a_page(); break; case 'b_page': shop(); break; case 'c_page': contact(); break; } function a_page(){ include_once(dirname(__FILE__)."/VIEW/a_page.php"); } function b_page(){ include_once(dirname(__FILE__)."/VIEW/b_page.php"); } function c_page(){ include_once(dirname(__FILE__)."/VIEW/c_page.php"); } サンプルを参考にしながら、MVCのコントローラー部分、 引数に応じて表示させるページを変えるというのをやってるんですけど ページを一個追加するたんびに 同じ名前なのに case名 指定関数名 定義関数名 phpファイル名 と4箇所も 書いていかなくてはなりません。 なんかとても無駄なことしてる感じがするんですが こういうものですか?
>>378 ページ発行の度にDBに登録するのは手間ですが、
これならとりあえずは問題無さそうです。
ありがとうございます
>>383 function作る必要ないじゃん
case 'a_page':
include_once(dirname(__FILE__)."/VIEW/a_page.php");
break;
でいいじゃない
>>383 a_pageが来たらviewのa_page.phpを探しに行くのはダメなのかな?
a_page.phpのなかは一つのクラスにして、
そのクラスのなかでいろいろ処理をする
Zendはそんな感じだった記憶あるし
387 :
nobodyさん :2011/11/11(金) 18:36:04.00 ID:Hw6ayFxo
>>385 変数がスコープされてどうたらこうたらで
セキュリティ的にヨシらしいです。
>>387 どんな資料かはわからないけど、
関数の中では変な変数を作っても外に影響はないとか、
そういう意味なのではと予測してみる
やりようによっては function まとめられるし ページ増やすのも 配列に追加するだけで済ますことも出来るけど、 こうしないと出来ないこともあるわけで、なにがいいかは分かりません。
390 :
nobodyさん :2011/11/11(金) 19:28:42.73 ID:jLYP25UJ
Fatal error は set_error_handler で補足出来ないって書いてあったけど できます。 最近のバージョンで変わったんでしょうか?
>Fatal error は set_error_handler で補足出来ないって書いてあったけど ソースはよ
>391 すみません、できませんでした requireはwarning後にfatalエラー出るんですね
>>383 無駄だよな。だからもっと省略しようぜって動きがフレームワーク
<?php
define('VIEW_DIR', dirname(__FILE__) . '/view/');
$page = 'page_' . (@$_REQUEST['page'] ? $_REQUEST['page'] : 'a');
if (function_exists($page)) { $page(); } else { die($page . ' not exists.'); }
function page_a() { include VIEW_DIR . 'a.php'; }
function page_b() { include VIEW_DIR . 'b.php'; }
function page_c() { include VIEW_DIR . (mt_rand(0, 1) ? 'c1.php' : 'c2.php'); }
>>383 MVC実装するならファクトリーメソッドパターンを覚えろ
小学生の会話みたいだ
知ってる知ってない関係ない。 ただのバカだ。 大事なのは反応しないこと。 荒らして反応があるのがたまらなくうれしいんだからな。 反応があってうれしいか?荒らしくんw
399 :
nobodyさん :2011/11/12(土) 14:13:37.07 ID:y4Nx+kxF
現在 デバッグに関するテクニックを調べてたら C0/C1/C2 検査網羅率(テストカバレージ) というものを知りました。 これ・・・、 かなり手間がかかりそうな話なんですけど みんな、ある程度やってものなんですか?
みんながやっていたらやる問題なのか?
業務用アプリケーション作ってるわけじゃあるまいし
402 :
nobodyさん :2011/11/12(土) 14:46:53.12 ID:y4Nx+kxF
>>400 プログラミングの世界は
何が正しくて何が間違っているのか
自分がやってることははたして一般的なのか
というのがようわからん時があるので
その指標、参考の一つとして
一般的にどれくらいその技術、方法が
広まってるのかを基準にすることがある。
>>402 それを2chで聞いても参考にならんだろ
ていうかスレチだ
コード出せ
コード出すような話でもあるまいw テストするならごく普通の考え方。
手続き型でコード書いてる人いる? 実務レベル(中小企業からの外注など)で使っていいと思う?
自分で分かっているくせにー。
今時手続き型ですか(笑)
企業だと納品後ある程度コードを読み書き出来る人がカスタマイズするだろうから手続き型の方が可読性が高くてウケがいいんだよね。 オブジェクト指向使うのは自社製品をプロジェクトチームで開発するかオープンソースで公開する時のみ。 俺はこの二つで使い分け(書き分け)してる。
410 :
nobodyさん :2011/11/12(土) 19:40:03.15 ID:Y8SMtFp6
ssh2_connect()で接続した後、切断するコマンドが見当たらないのですが、リソースをunset()すれば良いですか?
>>409 状況にもよるけど、クラスを追加してもらう形のほうがシンプルになることがある
>>406 クライアントから特に指定がないならなんでもいい
だがフレームワーク使ったほうがいいよ
手続き型にしてもオブジェクト指向型にしても
フレームワーク使わないと作業効率があがらないい
フレームワークはPHPのバージョン依存が凄まじい。CakePHPまともに動かない事が多いし。
415 :
nobodyさん :2011/11/13(日) 09:53:39.82 ID:Rs/FBYQk
フレームワーク初心者に オススメのフレームワークってなんですか? やっぱ CodeIgniter?
今CodeIgniterを使うのはやめとけ ライセンス問題でもめてるから
417 :
nobodyさん :2011/11/13(日) 11:14:58.47 ID:VTZV0iGW
>>411 載ってましたか・・・失礼;;
nullを代入したら良いのですね
418 :
nobodyさん :2011/11/13(日) 15:57:48.66 ID:N83gtIIz
Windows7にザンプ入れた環境で以下を実行するとエラーになります <?php echo '―'; 実行結果 Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE in test.php on line 2 文字列に―(ダッシュ)がある時のみエラーになります クォーテーションはシングルでもダブルでも同じ PHPのバグですか? Linux系では大丈夫でした PHPに報告送ったらなんかもらえる?
本当XAMPPは死滅するべき
>>418 大方 mbstring.script_encoding を指定せずにShift_JISで書いてるだろ
421 :
nobodyさん :2011/11/13(日) 19:30:28.94 ID:MmYvGAeI
ある文章が有り、 Windows型のCRLFをLinuxのLFに変換したいと思います この場合どのようにすればいいのでしょうか? 自分はpreg_replace()でもいいとは思ったのですが、処理速度が遅いとのことで str_replace('\r\n', '\n', $a);のようにしたのですが、こんなものでいいのでしょうか? ヒアドキュメントを使った文章に上のものを適用してみたのですが、改行はブラウザなどでは目に見えないので自分には分かりませんでした アドバイスを頂けないでしょうか?
422 :
nobodyさん :2011/11/13(日) 19:35:38.43 ID:Rs/FBYQk
プログラムの作成に実際に取り掛かる前の設計図段階の 図式ってどんな感じで作成するもんなんでしょう? 専用のツールを使うのでしょうか? それとももっと原始的に紙と鉛筆で ユーザーがここをクリックしたらこうなって ここで、検証して・・・ みたいな感じで図に書いていく感じでしょうか?
>>419 なんでもやってくれて勉強にならないからか?w
それとも自分で理解しなくちゃいけない役立たずだからか?w
マジでXAMPP使うなしか言わないやつは役に立たんなw
>>422 少なくてもプログラマはそういうツール使わない。
UML図とかそういうの作るツールとかあるけど、
ほぼすべてにおいて、手書きに劣る
人に説明しなきゃいけない訳じゃないなら、
手書きで十分
人による
426 :
nobodyさん :2011/11/13(日) 20:36:52.00 ID:Rs/FBYQk
>>424 回答ありがとうございます。
boogie board
買います。
>>421 str_replaceで改行を置換させるなら ' じゃなくて " を使え
あとベンチマークをちゃんと取ってからどっちが早いか決めろ
ブログで○○は遅いとか早いとか鵜呑みにするな
>>423 xamppをバカにされて顔真っ赤になるなよ
429 :
nobodyさん :2011/11/13(日) 20:56:41.46 ID:DyiGFRAw
初心者丸出しの質問ですみません。 行ごとに数字だけが入ったファイルを2つ用意しています(a.txt、b.txt)。 これらのファイルから、ある行を以下のようにして取り出しています。 $a = file("a.txt", FILE_IGNORE_NEW_LINES); $b = file("b.txt", FILE_IGNORE_NEW_LINES); それで以下のようにそれぞれを足してます。 $c = $a[0] + $b[0];//それぞれ1行目の場合 これで、2行目以降を取り出して足し算したときは問題ないのですが、 1行目を取り出した場合結果が変になります。 $a[0]が5で、$b[1]が10の場合、$cは10になってしまいます。 $a[1]が5の場合は、$cはちゃんと15になります。 どうも1行目の数字を計算しようとすると、それが0になってしまうようです。 ファイルの読み込み方に問題があるのでしょうか? 調べてもどうしてもわかりません。 どなたかご教示いただけませんでしょうか。
430 :
nobodyさん :2011/11/13(日) 21:04:38.39 ID:Rs/FBYQk
431 :
429 :2011/11/13(日) 21:10:31.27 ID:DyiGFRAw
>>430 早速の回答ありがとうございます。
ファイルポインタですか…勉強したいと思います。
ただ、先ほどは書き忘れたのですが、
echo $a[0];
とやれば、きちんと「5」と表示されます。
計算をした瞬間に「0」になってしまうんです…。
>>431 var_dumpの結果を$a[0]と$b[0]それぞれ張って
433 :
429 :2011/11/13(日) 21:58:47.76 ID:DyiGFRAw
>>432 すみません、少し原因がわかった気がします。
array(6) { [0]=> string(5) "?28" [1]=> string(2) "29" [2]=> string(2) "29" [3]=> string(2) "30" [4]=> string(2) "30" [5]=> string(2) "31" }
ブラウザで見ると、[0]は"28"なのですが、
コピペすると「?28」で5文字になっています…。
用意したデータファイルがだめなんですね。
作り直してみます(どうしてだめなのかよくわかってませんが)。
お手数おかけしました。
434 :
429 :2011/11/13(日) 22:03:34.57 ID:???
UTF-8のBOMでした。本当にすみませんでした。 逝ってきます。
>>428 たかがあんなものに、毎回毎回よほどご執心ですな。
>>436 GETパラメータにちゃんとついてることも確認した?
>>438-439 パラメータを変数に入れずに直で書いたらいけました・・・
意味わからん!
ありがとうございました!
パラメータを変数? ."login={USER}" そのままじゃないよね?
442 :
nobodyさん :2011/11/14(月) 10:36:43.97 ID:4eqYEG9C
・1つのテーブルにデータをすべて突っ込んで accountフィールドでソートして表示するやりかた ・accountごとにテーブルをつくって表示するやりかた どちらが早いでしょうか。全部で1000件ほどです。
>>442 何をしたいのか分からんが前者の方が当然速い
444 :
nobodyさん :2011/11/14(月) 11:09:55.29 ID:7NbDH7tB
fopenのaとwに相当することはmysqlではどうやるのでしょうか?
insertやupdateのレベルの話ならphpじゃないので。
446 :
nobodyさん :2011/11/14(月) 12:27:50.88 ID:aWGA7HGm
携帯向けのサイトを作っています。 なぜかAUだけ$_GETに値が入っていないようです。。 ドコモとソフトバンクは問題ないようなのですが、調べてるとAUの仕様が原因らしいのですが、解決法がわかりません。 どなたか教えて頂けると助かります。 PHP5.2.17 さくらレンタルサーバスタンダードプラン
447 :
nobodyさん :2011/11/14(月) 12:47:36.72 ID:7NbDH7tB
449 :
nobodyさん :2011/11/14(月) 14:14:46.53 ID:7NbDH7tB
それは知ってます もし該当するぺーじがあるならピンポイントで教えていただけますか
何で読まないんだよ 最初の数ページも読む気ないわけ? 例って書いてあるじゃん
あれどこに乗ってるんですか?^^
>>446 なにをしたとき?(ただページを開いたとき、urlにパラメータつけたとき、フォームでGET指定したときとか)
>>444 a → insert
w → truncateしてinsert
>>443 まじで?分けてるほうが探す手間が省けそうに思えるけどそれは人間中心の発想か
>>453 文字列中の定数は{}つけようが展開されない。
>>455 人間でも1000ページから該当ページ探すのと、
1000冊から該当本探すの変わらないけど、
本分けるのは、めんどうでしょ?
一冊になってれば、目次もつけられるし。
>>456 勝手にブログみたいなサービスをイメージしてて、
そのユーザのブログではそのユーザの情報しか取り出さないからアカウント毎に分けてたほうがよさそうなのに、
って思ったけどそれでもブログサービスでもすべてのブログから特定の単語を含む記事を検索する機能とかありますね
言われてみれば確かに分けてると探しにくそう
当然、全部を一冊にすると膨大になって遅いこともあるから 百科事典のようにテーブルを分けるようなこともある。
質問者が合計1000件くらいって言っててそれを含めての回答なんすね 横からだけどありがとうm(_ _)m 元の質問者の人、横から茶々入れてごめんm(_ _)m
テーブルの質問にちょっと便乗させていただきたいのですが 2chでたとえた場合 ・板毎にスレ・レステーブルを作る ・板横断で(2ch全体で)、スレ・レステーブル作る この場合は、分けたほうがいいんですよね? ちょっと似たような設計で少し迷ってるとこがありまして
レコード量を起点としてテーブル分割を検討するのはもっと後でいいよ。インデックスのサイズが問題になった頃から。
どちらかというとセキュリティや個別にレイアウト変更をするために分割することのほうが多いぐらい。
>>460 なので別に分けなくていいよ。
スレチだからDB板に行ってね 個人的には2chの規模だと板毎にDB作るのはありだと思うよ
ファイルI/Oがいいお
punbb-1.4の日本語パックってどこにある?
468 :
nobodyさん :2011/11/15(火) 11:11:21.62 ID:/AFeSgs+
phpと若干ずれるんですが、 phpmyadminを操作してて 間違ってテーブル消してしまったり、レコード書き換えちゃった場合 もとに戻す方法はないんでしょうか? また、phpmyadminのバックアップって なんとかしてとれないんでしょうか? レコード数が莫大になると、エクスポートしてくれなくて・・・
>>468 phpmyadminって単なるツールだからな
バックアップはdumpでもしたら?
470 :
nobodyさん :2011/11/15(火) 13:44:23.75 ID:nNXW0/FD
他社サイトのHTML入力フォームに、 自動で入力&送信するプログラムを PHPで作成することは可能でしょうか? 例えば、懸賞サイトの入力フォームに毎回氏名や住所を入力するのは 大変なので、テキストに懸賞サイトURL、氏名、住所などを記載しておいて PHPを動かしている自前サーバーからボタン一つで登録できるような イメージです。 もし実現可能であれば、 関数などのヒントをいただけるとありがたい。。
fsockopen
入力値をPOSTした時にどういうデータがどこへ流れてるかをHTTPヘッダを見ながら確認しつつ それを再現するプログラムを書けばいいだけ cURLとかソケットとかその辺使えば出来るが 「PHPを動かしている自前サーバーから」 これがどこを指してるのかわからないが この自前サーバがlocalhostでないならやめたほうがいい
file_get_contentsとstream_context_createを組み合わせたほうが楽
いまどき自動入力ならたいていのブラウザにフォームフィールドオートフィル機能が付いてるから スパムだろうね
まぁ教えても大丈夫だろ 質問してる時点で作れるレベルではないから
477 :
nobodyさん :2011/11/15(火) 14:05:18.40 ID:nNXW0/FD
中小検索エンジンに自分のサイトを一括自動登録しようとしたのですが、 これはスパムになるんですね。。プログラミングはやめておきます。 失礼しました。
おとといきやがれクズ
自己のストレス発散のためなのかしらないけど無闇と強く煽るのは控えてくれるかな 質問者が暴れたりしてスレが荒れ出すから
480 :
sage :2011/11/15(火) 14:24:57.18 ID:nNXW0/FD
うるせーバカ
なんで擁護に暴言ww と思ったけど、時間差だったのなw
ワロタ
483 :
nobodyさん :2011/11/15(火) 15:26:47.47 ID:NkOq7hLN
すみません 以下のような.iniファイルをparse_ini_file()にて読み込んだのですが、 [hoge] foo.title = 'こんにちは' foo.text = 'hello' bar.title = 'good bye' bar.text = 'linux' $inifile['hoge']をvar_dump()すると、foo.title => 'こんにちは'のような配列で返ってきます これはいいのですが、この場合foo.xxxの部分だけを取り出すにはどのようにすればいいのでしょうか? foreach()で回すのかなと思いましたが、 var_dump()の階層が一つしか無かったのでそれでは無理か、と思いまして 正規表現とか何かで取り除いていくしかないのでしょうか?
484 :
nobodyさん :2011/11/15(火) 15:29:46.18 ID:NkOq7hLN
ごめんなさい、追記しておきます 上のような書き方をしたのは、Zend_Frameworkの書き方を参考にしました
検証云々ってCSRF対策入ってたら無理だろ
【OS名】CentOS 【PHPのバージョン】5.2.0 1. ini_set('session.cookie_lifetime', 3600) する(iniファイルは0のまま) 2. php.ini のsession.cookie_lifetime を3600に書き換える 1と2で何かブラウザの挙動って変わります? 今、すごいおかしなことが起こっていて、 1のときは主要5ブラウザ全てでセッション変数がセットも参照もできるんですが、 2のときはセットはできてるようなのですが、遷移先で参照できません。 それがFirefox以外のブラウザで起こります。 session.gc_maxlifetimeは14400にしてます。 それ以外のiniファイルのセッション関係の設定はデフォルトです。 ・index.php //ini_set('session.cookie_lifetime', 3600); session_start(); $_SESSION['abc'] = $_POST['def']; echo($_SESSION['abc']); (中略) <a href="./session.php">Check Session</a> ・session.php //ini_set('session.cookie_lifetime', 3600); session_start(); print_r($_SESSION); 【OS名】CentOS 【PHPのバージョン】5.2.0 どなかた教えてください。
488 :
nobodyさん :2011/11/15(火) 19:28:08.15 ID:YCB66CHc
PDOやSQLite3に実装されている:bindValueは複数に分けて以下のように書けます $stmt->bindValue(':id', 1, SQLITE3_INTEGER); $stmt->bindValue(':id2', 10, SQLITE3_INTEGER); $stmt->bindValue(':id3', 100, SQLITE3_INTEGER); このようにMySQLiでも書きたいのですがMySQLiにはbind_paramしかありません ためしにbind_paramで複数に分けて書いてみましたがやはりエラーになります 複数に分けて書くテクニックなどございませんか?
489 :
487 :2011/11/15(火) 19:56:35.99 ID:vIxS7Rlf
すみません。
>>487 sageてました。
改めて、よろしくお願いします。
490 :
nobodyさん :2011/11/15(火) 20:25:31.77 ID:nzzLFJZT
if(!ereg("{$_SERVER['PHP_SELF']}", "{$_SERVER['REQUEST_URI']}")) 上記条件式をeregを使わずにpreg_matchなどで書く方法を教えてください。
491 :
490 :2011/11/15(火) 20:38:03.17 ID:nzzLFJZT
if(!preg_match("@{$_SERVER['PHP_SELF']}@", "{$_SERVER['REQUEST_URI']}")) スラッシュ以外のデリミタを指定したらうまくいきましが、これでいいのかな?
strpos使いなさい
493 :
nobodyさん :2011/11/15(火) 21:51:42.62 ID:oC4G4RqC
Fatal error: require_once() [function.require]: Failed opening required 'Calendar/Month/Weeks.php' (include_path='.:/php/includes:/usr/share/php/smarty') in /opt/lampp/htdocs/samples/chapter6/6-4/calendar_pear.php on line 8 というエラーが出ているので調べています。 PEARのCalendar/Month/Weeks.phpってデフォルトではどこにインストールされるものなんでしょうか? PEARはインストールしてあって、pear install Calendar-0.5.5もやっていて、 pear install Calendar と打つと pear/Calendar is already installed and is the same as the released version 0.5.5 install failed と、既にインストールされてます、と出ます。 /usr/share/php/PEARが存在することは確認したのですが、find . "Weeks.php"と打っても 「find: `Weeks.php': そのようなファイルやディレクトリはありません」と出ます。 どうやって調べればいいのでしょうか?
CURLでポストできたよね
495 :
nobodyさん :2011/11/15(火) 22:57:37.07 ID:PPkF/yi6
【OS名】CentOS 【PHPのバージョン】5.2.14 【関連ソフトウェア】なし 【質問内容】 ○概要 top.php内で二つの別ファイルを呼び出したく。 ○ファイル構成 top.php └ad ├001 │└001.php └002 └002.php ○ソース ... <?php include "./ad/001/001.php";?> ... <?php include "./ad/002/002.php";?> ○問題 上記のソースのように記載して表示した場合、 001は表示されるが、002は表示されない。 試しに001の記述を削除して確かめてみると、 002が表示される。 001と002が両方表示されるためには、どうしたらいい のでしょうか? ご指導頂けるとありがたいです。
>>495 読み辛い
どうせ001.phpで exit なり die なりしてるんじゃないか
>>495 001.phpでエラーがあって止まってるってことはないかね
includeというものは絶対パスで指定するようにしたほうがいい
絶対パスで指定とか無いわ・・・
499 :
495 :2011/11/15(火) 23:11:07.52 ID:PPkF/yi6
>>496 すいません、
携帯で書き込んだところ、改行が崩れてしまいました。
現在帰宅途中ですので、帰宅次第 exit、 dieをググってみます。
>>497 なんとなくのイメージで、相対パスの方が、長い目でみたらいいと勝手に思ってました。(移管とかの際)
早速の返答ありがとうございます。
かなりの初心者なので、これらを参考に調べてみて、トライしてみます。
上手く行かなかった場合は、再度質問させて貰うかもしれません。
その際は、可能ならば、よろしくお願いいたします。
500 :
493 :2011/11/15(火) 23:16:44.24 ID:oC4G4RqC
>>494 それは私へのレスでしょうか?
困っているのでどなたかお願いします。
502 :
493 :2011/11/15(火) 23:25:23.02 ID:oC4G4RqC
本当にお願いします。
>>498 相対パスを指定するとPHP実行時に絶対パスに変換するから
はじめから絶対パスで指定するとその変換作業のコストを減らせる
後、複数人でコードメンテナンスする場合は相対パスよりも絶対パスで書くのが常識
パス。ゼッタイ。
細くしておくけど /で書くとドキュメントルートからのパスになるから baseとなるパスをrealpathで取得してそれをくっつけて使うんだよ
絶対パスって絶対URLのことじゃないよね?
相対パス ./a.php 絶対パス /home/aa/public_html/a.php or / (Document Root) URL http〜
このスレのことだからソワソワしたわ
509 :
495 :2011/11/16(水) 09:19:23.57 ID:gD8mJFYY
絶対パスと相対パスの下り、ありがとうございます。 勉強になります。 昨晩、色々と試行錯誤したのですが、力不足のためダメでした。 【問題と思われるページのソース001.php】 <?php if (getUserAgent()=='P') { //PC include('p001.php'); } else if (getUserAgent()=='ip') { //iphone include('s001.php'); } else if (getUserAgent()=='an') { //Android include('s001.php'); } else if (getUserAgent()=='m') { //Mobile include('m001.php'); } 次レスに続きます。
510 :
495 :2011/11/16(水) 09:22:55.04 ID:gD8mJFYY
//端末振り分け処理 function getUserAgent() { if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone')){ $env = 'ip'; } elseif(strstr($_SERVER['HTTP_USER_AGENT'],'Android')){ $env = 'an'; } elseif(strstr($_SERVER['HTTP_ USER_AGENT'],'DoCoMo')){ $env = 'm'; } elseif(strstr($_SERVER['HTTP_ USER_AGENT'],'UP.Browser')){ $env = 'm'; } elseif(strstr($_SERVER['HTTP_USER_AGENT'],'J-PHONE')){ $env = 'm'; } elseif(strstr($_SERVER['HTTP_ USER_AGENT'],'Vodafone')){ $env = 'm'; } elseif(strstr($_SERVER['HTTP_ USER_AGENT'],'SoftBank')){ $env = 'm'; } elseif(strstr($_SERVER['HTTP_ USER_AGENT'],'WILLCOM')){ $env = 'm'; } else{ $env = 'p'; } return $env; } ?> m001.phpなどには、広告タグを貼っており、 直接m001.phpやm002.phpをインクルードすると正常に表示されたので、このソースのページが駄目なのかなと。 長々とすいません。
>>510 まさかとは思うが、、、
<?php if (getUserAgent()=='P') { //PC include('p001.php'); } else if
は
<?php if (getUserAgent()=='P') { //PC
include('p001.php'); } else if
改行入れてるよね?
さすがにそれはないかw
$_SERVERは使うな
>>505 > /で書くとドキュメントルートからのパスになるから
includeの流れでそれっすか
>>514 理由が分らないならググるか黙ってgetenvを変わりに使えっ!”!!!!!!!!!!!!
Shift+2で@がでるほうがいい
519 :
495 :2011/11/16(水) 10:44:41.16 ID:gD8mJFYY
久しぶりに登場の使うな厨
無駄レスするくせに説明を求められると黙るね
>>510 print getUserAgent();
とりあえずPHPのエラーがでてないか確認を
ググるの面倒くさいと煽って楽して聞き出そうとする奴もまた沸くよね
ググるほうがよっぽど早いと思うんだが、 検索のノウハウが無いと大変なんかねえ
どう検索していいか分からないこともあるしな。 嘘に引っかかることもあるし、それは古い話だってこともある。
1点
その検索結果見ると笑える
>>527 節子、URIには使える文字と使えない文字があるんやで
エンコードした文字や短縮URL貼ったらネタが伝わらないじゃん
デコードしたURL貼るなよ
検索の初心者なのかもはや分らん
534 :
495 :2011/11/16(水) 14:08:22.17 ID:gD8mJFYY
解決しました。
微妙にお叱りを受けていたようなので、
>>510 print getUserAgent();
のレスを元に、
2つのinclude先ファイルに記載してみました。
すると、後で読み込むファイル(002)の箇所が表示されない。
後のファイルのみなら表示される。
ソースを半分に割って試行錯誤。(取得部分と再include部分)
結論は、002でユーザーエージェントを取得しなければ、思い通りの表示になりました。
考えてみると、001で取得してるので、必要ないので削除しました。
色々と助言をくれたかた、ありがとうございました。
検索結果のURLをただ貼り付けただけだとエンコードされてる そして不必要なパラメータを削っているところを見ると
536 :
495 :2011/11/16(水) 14:15:09.40 ID:gD8mJFYY
ググれというご指摘ですが、 必要な時に、必要最低限の勉強と公開されてるソースのコピペばかりをやってきたので、 phpの知識が全く系統だてられていません。 その状態で半年、だましだましやってきたので、 分からないことに出会った時に、上手く調べられないのも確かです。 また、ヒットしたページの通りにやってみても、バージョンのせいなのか設定のせいなのか、 上手くいかないこともしばしばでして。。 でも、僕の怠慢です。 不快にさせて申し訳ありませんでした。 きちんと勉強しながら、またどうしてもというときだけ、質問させてもらいます。 ありがとうございました。
特定の環境ではうまくいかないかもしれないって話らしい。 PHP3や4でも動くコードを書け、みたいなノリ。配布するわけでもないのに
>>535 削ったからデコードされたのがコピーされちゃったのか
昔のバージョンで動くのはむしろ駄目
ブラウザとバージョン
今探しているところです
結局、$_SERVER じゃなく getenv を使う意味がよく分からんのだけど
これ分らない奴って大抵Windows+XAMPP使い
やっぱり105スレと同一人物か
環境依存なので、どんな環境の人間がつかうか分からないものには使うなとは言えるが (取得できないように設定しているサーバというものがある) 自分しか使わない、自分の環境が分かってる人間には問題ない。まして動いているなら。 彼が言ってるのは、環境なんか知る必要はないってことだな。 初心者への助言とはいえる。
>>513 は状況等を勘案せずに条件反射っぽいが・・・
でその助言で相手を混乱させてると・・・
しかも理由を聞かれても答えない素敵な助言
寧ろ検索すりゃすぐ出てくるネタを引っ張って叩いてスレを汚してる人のほうが個人的に邪魔
>>542 FirefoxやChromeはデコードされた文字列をロケーションバーに表示してくれる
全体をコピーしたら元のURIがコピーされるけど、一部分のコピーだとデコード後の文字列がコピーされる
>>536 どうしてもという時じゃなくてもいいよ。くだ質なんで。
回答者がいるかどうかは運
554 :
nobodyさん :2011/11/16(水) 19:54:15.47 ID:eLkUclYQ
質問です。 PHPでのワイルドカードの使い方についてです。 まず、現在は if($_POST['enter_1']){ echo $_POST['name_1'];} if($_POST['enter_2']){ echo $_POST['name_2'];} if($_POST['enter_3']){ echo $_POST['name_3'];} <input type="text" name="name_1"><input type="submit" name="enter_1" value="送信"> <input type="text" name="name_2"><input type="submit" name="enter_2" value="送信"> <input type="text" name="name_3"><input type="submit" name="enter_3" value="送信"> となっています。 実際にはechoではなくMySQL文があるのですが、今回はわかりやすぐechoにさせていただきました。 送信ボタンを押すと、それに対応したテキストボックスに入力した文章が表示されるのがわかると思います。 本題です。 IF文の中が$_POST['enter_○'] となっていて、TRUEのときは○の中身が使用されます。 ○以外は全て同じなので、ワイルドカードを使ってIF文をひとつにできないかと思いましたが・・・。 正規表現や配列等を考えてみて、やってみたのですがうまくいきませんでした。 IF文をひとつにする方法はありませんでしょうか? よろしくお願いします。
$items = array("enter_1"=>"name1" ,"enter2"=>"name_2" ,"enter_3" =>"name_3" ); foreach( $items as $var=>$val) if ($_POST[$var])echo $_POST[$val]; --------------------------------------------- for($i=1;$i<=3;$i++) if ($_POST["enter_$i"])echo $_POST["name_$i"]; (セキュリティについてはサンプルってことで書かないけど、 こういうのが ネットにこう書いてあったって使われちゃったり)
同じブラウザを複数立ち上げて、同じ場面で異なるデータを表示させ登録などの処理をさせたいと考えています。 普通h同じセッションになるので不可能だと思いますが何か方法があれな教えて下さい。
>>557 あせりすぎ。何を言ってるのか訳がわからんので、もう一度日本語を読みなおしてくれ。
>>557 たとえばIEだとAlt F I で別セッションはれる
560 :
553 :2011/11/16(水) 22:11:49.03 ID:eLkUclYQ
>>555 最近勉強し始めたので、セキュリティはあまりわかっていません…。
サニタイジングはもちろんします。今回は長くなるので省略しましたが…。
var_dumpについて質問させてください。 var_dumpの結果をechoで出そうと思い、以下のスクリプトを作成しました。 ~$ cat hoge.php #!/home/php/bin/php <?php $data = 'aaa'; $result = var_dump($data); echo "result=$result\n"; ?> ところがこのスクリプトを実行すると、結果が以下のようになってしまいます。 ~$ ./hoge.php string(3) "aaa" result= おそらく、var_dumpの結果がresultに入ってないと思うのですが、 そうするためにはどうしたらいいでしょうか?
562 :
nobodyさん :2011/11/16(水) 22:51:04.72 ID:+5IKw5hh
ごめんなさいID出し忘れました
なやみそうだからprint_rにするといいよ
たいぽ・・・ var_exportね
>>554 ワイルドカードなんてものはないのでループなり自分で調べるしかない
普通は配列で扱う
<?php
foreach ($_POST['enter'] as $id) { echo $_POST['name'][$id]; }
for($i = 1; $i <= 3; $i++) {
printf('<input type="text" name="name[%s]"><input type="submit" name="enter[%s]" value="送信">', $i, $i);
}
actionによるコントロールをだな・・・
569 :
>>561 :2011/11/17(木) 00:36:00.90 ID:P0oL6Kj5
みなさん深夜遅くにありがとうございます。 マニュアルをみたのですが、var_exportの説明は以下のようになっています。 説明:”変数の文字列表現を出力または返す” そして、var_dumpの説明は以下のようになっています。 説明:”変数に関する情報をダンプする” 以下の3つの具体的な意味についてご教授ください。 「ダンプする」 「出力する」 「返す」
実際動かしてみろよ
571 :
553 :2011/11/17(木) 01:37:36.08 ID:70iwFN0D
>>567 ありがとうございます。
Linuxにあるので、あるものだと思っていました…。
それを参考に書いてみようと思います。
ワイルドカードによるマッチはfnmatch
575 :
nobodyさん :2011/11/17(木) 13:59:57.52 ID:izk/KJxq
300円
576 :
nobodyさん :2011/11/17(木) 17:29:14.46 ID:0Ntos03V
$date = '2011-11-17'; if (isset($date'day'])) { echo 1; } else { echo 0; } とした場合、配列でもないのに1が表示されます。 「$dateが配列で、連想配列のdayが存在する場合」 という条件式はどう書けばいいのでしょうか?
すみません。2行目は入力ミスでした。正しくは↓ if (isset($date['day'])) {
is_array()
if_array($date) { if (isset($date['day'])) { こんな感じですか。でも、これって$date自体がなかったらエラーになりませんか?
>>579 $date = null;
var_dump(isset($date,$date['day'])); // false
$date = array();
var_dump(isset($date,$date['day'])); // false
$date = array('day'=>null);
var_dump(isset($date,$date['day'])); // false
$date = array('day'=>'');
var_dump(isset($date,$date['day'])); // true
$date = null;
var_dump(isset($date) && is_array($date)); // false
$date = array();
var_dump(isset($date) && is_array($date)); // true
$date = array('day'=>null);
var_dump(isset($date) && is_array($date) && isset($date['day'])); // false
$date = array('day'=>'');
var_dump(isset($date) && is_array($date) && isset($date['day'])); // true
これぐらいは自分で試せ
>>576 すこし話はずれるけど、そもそもの事象について説明しとく。
isset($date['day']) が真になる理由だけど、
$dateが配列ではなく文字列のため、添え字演算子は文字列インデックス(整数)を要求することになる。
んで、'day'を整数評価した値は0になるため、
isset($date['day'])はisset($date[0])となり、$date[0]は1文字目、つまり'2'が設定されているため、真になる。
なのでこうする。
isset($date) && is_array($date) && isset($date['day'])
array_key_existsとの違いにも気をつけること。
>>580 関係ないことずらずら書いててワロタ
583 :
nobodyさん :2011/11/17(木) 19:38:01.70 ID:0Ntos03V
echoで <form 〜 <input type="hidden"〜 <a href="javascript:document.form.submit()">〜 </form> の順で出力させてるのに、 ソースコード見たら <form 〜 ></form> <input type="hidden"〜 <a href="javascript:document.form.submit()">〜 の順で出力されてる…怖い…
>>585 あとテーブル使ってますが絶対に記述してない<tbody>が出力されてます
ajaxで書き換えた後のソース部分なんですが…
>>586 それって、Firebugの補完機能じゃなくて?
PHP関係なさげJS部分をJSスレで聞いてこい
>>587 firebugは入れてないです
別のPCのfirefoxだとソース部分ではちゃんと順番に出力されてますがそのリンク自体が表示されなくなりました…
あ、選択したソースを表示すると補完されるんですね…失礼しました
原因が判明しました。 ajaxで書き換えるソースコードが書かれているphpファイルに ヘッダタグ等の必要な情報を一切書いていなかったのが原因でした。 大変失礼しました…
>>591 書き換えるなら、headタグとかいらないんじゃない?
kwsk
593 :
nobodyさん :2011/11/18(金) 13:07:57.29 ID:0E07J79Y
Googleとかもそうですが リンク先のページの全体像みたいのが画像で表示されますが HTMLを画像にするようなことができるのでしょうか? 何か関数やヒントになるキーワードがあれば教えてください
595 :
593 :2011/11/18(金) 13:23:38.38 ID:0E07J79Y
596 :
nobodyさん :2011/11/18(金) 16:34:31.24 ID:CLCMBLd4
windows7とさくらのレンタルサーバーでphpを使っています。 ファイル名に日本語を使いたいのですが、文字コードの指定が分かりません。 まず、windowsのファイル名の文字コードはUTF-8との事ですが UTF-8のphpから error_log("test",3,"ログファイル.txt"); と書いて"ログファイル.txt"というファイル名のファイルを作ったつもりでも、作成されたファイルをエクスプローラで見ると文字化けしてしまいます。 mb_convert_encoding($file,"SJIS-win","UTF-8");とファイル名の文字コードを変換すれば正常なファイル名が作成されるのですが UTF-8のはずのwinodowsで何故sjisへの変換作業が必要なのでしょうか これが解決出来れば、ファイル名は全てutf-8で統一されてファイル名の文字コードに気を使う事が無いのですが。
PHPが対応してないので。
ファイル名に日本語を使うのを止めろ
599 :
nobodyさん :2011/11/18(金) 17:27:57.11 ID:jAJu9/rr
様々な条件下で、生成されたGET要素入りURLの後ろに sort系のGETを入れたいと思っています。 hoge.com?page=1&type=1… 様々な GET… &sort=asc hoge.com?page=1&type=1… 様々な GET... &sort=desc これにより、様々な条件下で抽出されたリストから 並びかえができるようになってるのですが、 "様々な条件下で、生成されたGET要素入りURL" は、どうやって取得したらよろしいでしょうか。
getenv('QUERY_STRING')のことかなと思ったんだけど、 $url = explode("?",$url); print $url[1]; かもしれない。
>>600 嘘教えるな
getenv('QUERY_STRING')の返り値に?なんて含まないぞ
>>596 Windows内部でユニコードで扱われてても、cp932に変換されているから
>>601 様々な条件下で、生成されたGET要素入りURLってのが、アクセスしてきたアドレスとは
限らないじゃないかというオチャラケだよ。
本人が違うって書いてくれればいろいろ分かるのに。
>>602 ユニコードで取得する方法はあるから、PHPが対応してないってこと。
横でスマンがgetenv('QUERY_STRING')の返り値に?が入っていることを期待したコードなんて書いてなくね?
>>601 は落ちつくべき。
涙拭けよ
606 :
600 :2011/11/18(金) 23:05:20.43 ID:???
いや、俺が悪いんだよ。
607 :
nobodyさん :2011/11/18(金) 23:25:01.53 ID:tf7WOWeB
PHPでWeb上の画像を取得するには、file_get_contents()以外には どのようなものがあるのでしょうか?
たとえばどういう機能がほしいとか、何が不満とか書いてくれないとどうにもならんと思わない?
fopen
611 :
nobodyさん :2011/11/18(金) 23:46:36.76 ID:tf7WOWeB
>>608 すみません
ただ単純に、画像を取得して例えばブラウザに表示させたいと思いまして
自分はcURLを使って全体を取得してテキスト文はDOM使って表示させたのですが、
画像の表示のさせ方が分からなかったもので
>>611 <img src="DOMで取得したパス">
ブラウザに表示させたいなら画像データをわざわざ取得する意味なくね? プロキシみたいなことしたいのかな
614 :
nobodyさん :2011/11/19(土) 00:01:05.04 ID:djjAwZHJ
>>612 なるほど・・・
確かにそうですね
教えてくれてありがとうございます
ちょっと試してみます
っloadHTMLFile
616 :
nobodyさん :2011/11/19(土) 00:07:46.89 ID:djjAwZHJ
>>613 データベースやディレクトリに保存しようと思いまして
ブラウザは簡単なテスト環境と思いまして
エロ画像ダウンローダ乙
話が変わってるワロタ
619 :
nobodyさん :2011/11/19(土) 00:29:41.91 ID:djjAwZHJ
>>617 ハハハ、いや、エロ画像を集めるつもりはないのですが・・・
しかし訳がわからなくなってきました
cURLで取得したHTMLを(CURLOPT_RETURNTRANSFERを使用しているのでファイルには保存していません)、
DOMDocumentにてloadHTMLしてquery('//img/@src')などとしたし、
ブラウザに表示する場合は
http://hoge.com/を付けるのまでは分かるのですが 、
こっからどのような処理をすればディレクトリやデータベースに格納できるのでしょうか?
ザッと見、cURLやDOMDocument系にはそのような関数がないように思えるのですが
621 :
nobodyさん :2011/11/19(土) 00:40:35.70 ID:djjAwZHJ
>>620 あぁ、やっぱそうなると
>>611 で質問したように、
file_get_contents()しかないんでしょうか?
fopenでもfsockopenでもcURLでもなんでも保存できるだろう
imagecreatefromjpegなりでも使えばいいんでない
よそ様から拾ってきたものを自分のサイトで表示したいってパクル気満々だな
proxyかもしれないじゃん
628 :
nobodyさん :2011/11/19(土) 15:09:54.67 ID:djjAwZHJ
配列に値を格納していて、その中から正規表現等でフィルタリングして マッチした値を排除するような使い方をしたいのですがどのようにすればいいのでしょうか? foreach()で値を得て、それらを正規表現で・・・と思ったのですが $iのように数字を使い、array_slice()を使うのかなとも思いましたが良く分かりませんでした
>>628 配列内の値が分からないと何も言えないが
preg_match continue
で、ぐぐってみ
>>629 その場合はarray_slice($arr, $i-1, 1)とかのようにするのでしょうか?
それとも全く別の配列を作成し、マッチしなかったものをその別の配列に入れるのがいいのでしょうか?
>>630 自分は、他人(新人or後任者)が見てもわかりやすいように書いてるから、新しい配列に入れるね
自分一人だけだったら、いろいろなやり方試してみてもいいんじゃない?
633 :
nobodyさん :2011/11/19(土) 16:18:00.10 ID:ZMwiibDD
PHPで、 hoge()[0] のような書き方はできないのでしょうか? (hoge()は配列を返す)。 array_shift(hoge()) で、いちおうできるのですが、 ちょっとカッコ悪いので・・・
$array = array(1,2,3,4,5,6); foreach($array as $key => $val ) if ($val % 2 == 0) unset($array[$key]); print_r ($array);
PHP5.4になったらarray()なんてもう二度と書かない
637 :
nobodyさん :2011/11/19(土) 18:58:14.72 ID:X5SG6smt
5.4でできるようになるのか そういや6.xってどうなったんだ・・・?
目玉になるはずだった部分があまりにも厄介すぎて頓挫
6ってもう二年前から声聞いてるが未だに出てこないな もし、これが企業のプロジェクトだったらマネジメント層全員減給またはクビだぞ
企業でも年単位の計画でやるような物だから問題ないだろ多分
トレイトって何?食えるの?
>>642 神とは思えないんだが
よく設計されたもの以外で使われるとスパゲッティー化されそうで怖い
644 :
nobodyさん :2011/11/20(日) 02:46:59.47 ID:1V6hVVY4
$sql = 'SELECT id FROM table LIMIT 1'; $result = mysql_query($sql); で、取得したひとつのデータを変数に代入したいのですが while(mysql_fetch_array($result)){処理} みたいに書くしかないんでしょうか。 データ一件しかないのにwhileを使うのが気持ち悪いので 他の方法があればそちらを使いたいです。
公式見て、実装込みのインターフェイスみたいだな、 とおもったら大抵のサイトがそういう説明になってたから理解しにくいものじゃなさそうだね
>>646 どんぴしゃです。ありがとうございました。
>>644 データが一件しか無いならループさせなくても変数だけでデータ取れるよ
>>640 そろそろ…って声聞いて二年経ってんだよ
PHP6.0の開発自体は2005年から開始している
こっちはどこがどう変更されるのかピリピリしてんのによ
もう出すなよ、PHP5.2193くらいまでやればいい
php6の開発なんていましてないでしょ php5.5の勘違いじゃないの?
6 = 5.4
5.4が6とかwwwwwwwwwww
653 :
nobodyさん :2011/11/20(日) 14:52:32.63 ID:W2VBDeCo
あるリンクからそのページのレスポンスを確認したいと思います そのリンクが200なのか304なのか、404なのかといった具合にです その為だけにcURLやfile_get_contents()でページごと取得するのも 無駄だと思いまして get_headers()というのがあり試してはみましたが、一般的にはこれを使えばいいのでしょうか? それとももっといい関数やライブラリががあるのでしょうか? ステータスコードのみ取得して軽いというなものがあれば教えていただきたいです
PHP6とPHP5.4は違いますよ
get_headersはGETなんだけどね
>>649 どこがどう変更されるかでピリピリしてるのに頓挫したこと知らないとかおかしいんじゃない
>>649 PHP6.0の開発はとっくに白紙になってますが・・・?
煽りあいはソース出してやってくれ
どこが煽りあいなんだろう
そんな事も調べられないからPHPはバカにされるんだ
662 :
nobodyさん :2011/11/20(日) 19:21:24.75 ID:8eiLpJTF
get_headers以外でヘッダを取得できる組み込み関数はありますか?
PHP使ってる人にとってはかなりの重大ニュースだったからな。知らないのはもぐり
665 :
nobodyさん :2011/11/20(日) 21:03:59.96 ID:hLo6zVzZ
PHPでオークションのようなシステムを作っています 例えば登録商品の締め切り時間が三日後だったとした場合、 三日後にその商品の生存フラグのようなものをオフにしたいです。(フラグはDBに保存されている) この期限フラグをオフにする処理はどのように実現できるのでしょうか ユーザーの閲覧やデータの参照ごとに残り時間を確認してフラグチェックを毎回するのは流石に処理が重い気がします。 また、cronなどで自動的に寿命チェックスクリプトを回すのも商品数が増えた場合にパンクしてしまいます。 何かいい方法は無いでしょうか。
現在時間が締切時間超えてたら操作できないようにすればいいだけでそ
俺ならフラグ立てないで参照時にチェックする。 たかだか日付の比較程度を心配して、なんの処理が出来るんだっての。 flgだろうが日付だろうが何クロックちがうって程度っすよ。
>>665 締め切り日時 - 登録日時 = A
現在の時刻 - 登録日時 = B
B >= A なら締め切り
>>666-668 フラグを使おうとしてたのは期限が残っているアイテムをDBから引っ張って一覧表示するのにDB負荷(メモリ等も)が軽くなるかなとの考えの下でしたが、
time() - 有効期限を事前に計算して生成日時との大小比較を条件にデータ取り出せば良かったですね
ありがとうございます
670 :
nobodyさん :2011/11/20(日) 21:57:23.50 ID:vzLDxTjZ
jQuery.map()
http://api.jquery.com/jQuery.map/ みたいな関数はありますか?
PHPのarray_map()に加え、NULLが返されるとその要素を配列から取り除いてくれるような機能です。
やりたいことは、配列の各要素の文字列を正規表現で抜き出したものに置き換えて、
もしマッチしなかった場合はその要素を配列から取り除きたいのですが
arrayやpregの関数のところを見てもどれがその関数なのかわからなくて。
ひとつの関数では無理で複数の関数を組み合わせるとかforeachを使うとかですか?
>>670 $a = array(1,null,2);
var_dump($a);
function f($v) {if(null !== $v)return $v;}
$b = array_filter($a, 'f');
var_dump($b);
672 :
nobodyさん :2011/11/20(日) 22:32:27.44 ID:vzLDxTjZ
array_map()で処理(マッチしたら書き換えたのもを返す、マッチしなかったらNULLを返す)をしたあと、 array_filter()でNULLの要素を除去するという array_map()とarray_filter()との二つの関数を組み合わせないといけないんですねやっぱり
これも複数の関数といえなくもないけど $arr = array(1,null,2,null,null,3,4) ; $res = array_filter($arr, create_function('$val', 'return is_null($val) ? false : $val;')); print_r($res); Array ( [0] => 1 [2] => 2 [5] => 3 [6] => 4 )
これがCPUもメモリも最小限で効率が良い function filter($a){ $temp = array(); foreach($a as $v){ if (is_null($v)){ $加工 = 加工; $temp[] = $加工; } } $a = filter($a);
675 :
125 :2011/11/20(日) 23:49:15.90 ID:yTe92qw6
SQLインジェクションについてイマイチよくわかってないのですが PDOでプリペアドステートメントを使えばとりあえずおkということでいいんでしょうか?
>>675 とりあえずじゃなくてちゃんと分かったほうがいいよ
>>676 jQueryはforで回して、nullじゃなかったら新しい配列に追加してるみたいだよ
まあ、 ないもんは 無いんだよ。
s=100 ってかけるようになんないかな将来
>>680 それ言うなら、
もうコード書かずに動かないかな将来
だろ?
次にPHPがパクりそうなのって何かある?
684 :
nobodyさん :2011/11/21(月) 09:42:24.17 ID:GGnSchRT
$con = new PDO('mysql:host=localhost;dbname=test;charset=utf8', $user, $pass); $sql = 'DELETE FROM table WHERE id = :id'; $stmt = $con->prepare($sql); $stmt->bindParam(':id', $_POST['id']); $stmt->execute(); この書き方でSQLインジェクションを防げているでしょうか?
データのインデックスを記録したいのですが、保存するファイル形式が決まりません。 日本語を扱い、かつテキストエディタで直接編集がしたくて、データ1件1行で処理したい。というデータなので json_encodeは日本語が"\u3042\u3044\u3046\u3048\u304a"とエンコードされてしまうから直接編集の時に困り serializeとvar_exportは直接編集に不向きで SQLはテキストエディタで編集出来ません。 json_encode、serializeとvar_export以外に配列のデータを一行に、かつ日本語をそのままで確認出来るテキストに変換してくれる関数はありますでしょうか 又は、"\u3042\u3044\u3046\u3048\u304a"を"あいうえお"と変換するにはどうしたらよいのでしょうか
686 :
nobodyさん :2011/11/21(月) 11:13:26.27 ID:cDijwsFN
phpであるファイルに定義された関数を使いたい時 そのファイルをインクルードするじゃないですか。 classの場合、別のファイルにクラスが書いてあった場合 それを利用するのに特にインクルード的なことは しなくても良いのですか?
>>684 はい
>>685 普通にテキストファイルで出力すればいい話でしょうか?
$text = "\u3042\u3044\u3046\u3048\u304a" ;
print mb_convert_encoding(preg_replace("/\\\\u([0-9a-zA-Z]{4})/e", "pack('H*','$1')",$text),"UTF-8","UTF-16");
>>685 \uxxxx形式をHTML 数値エンティティ形式に変換してから
$str = "あいう";
$convmap = array(0x0080, 0xffff, 0, 0xffff);
$encoding = "UTF-8";
echo $a = mb_encode_numericentity($str, $convmap, $encoding);
$convmap = array (0x0, 0xffff, 0, 0xffff);
$b = mb_decode_numericentity($a, $convmap, $encoding);
echo $b;
オブジェクト指向ってあるじゃないですか。 あれってイメージとしては、 インターフェースをつかさどるファミコンという親クラスがあって そこにカセットというゲームシステムのつまった子クラスを刺す感じ? で、なんやったらそのカセットにも拡張スロットが付いてて カセットにいろいろなカセットを差したら、 同じゲームシステムで色々なキャラクターが楽しめるみたいな感じ? で、別のゲームシステムのカセットにそのキャラクターカセット差したら そのキャラクターで別のゲームシステムが遊べるみたいな感じ?
>>691 ってかスレタイ嫁
>カセットにいろいろなカセットを差したら、
イミフ"な感じ?"
ファミコンの頃だとダビング機ぐらいしか思いつかんなぁ。カセットにカセット
スーファミでゲームボーイができるあれ
ファミコン世代も老後の楽しみにプログラミングをする時代になったか
697 :
684 :2011/11/21(月) 16:31:37.44 ID:???
今からはじめるファミコンプログラム
700 :
nobodyさん :2011/11/21(月) 18:11:05.02 ID:p9LTZGBk
あるスクリプト中にフラグを使う部分があったとします foreach()内で、まずデータベースからフラグを確認し、TRUEであれば未処理、FALSEであればフラグを立てるとします 例えば foreach ($abstractlinks as $link) { $flag = $prowl->flagCheck($link); //If we have visited or scheduled to visit if ($flag !== 0) { continue; } $prowl->raiseFlag($link); } のようにです この場合、2つの各関数毎に同じデータベースに接続しないといけませんが、 無駄なように思います このような場合どのようにすればいいのでしょうか? キャッシュというのもraiseFlag()にて更新を用いるので不可能なような気がします 効率的なDB接続法を教えていただけないでしょうか?
オークションの人こん
>>700 一度に必要な全部のデータをもってきてforeachして、
updateするIDをarrayに貯めといて、後でupdateじゃだめなの?
>>700 コネクションを保持しておく関数あるいはクラスを作って
コネクションプーリングするのが定石
必要なときに取得、不要になったら切断せずに返却、という流れで
704 :
nobodyさん :2011/11/21(月) 18:36:17.97 ID:372LMnzX
すべてのページに共通して使いたいコードがあります。 index.htmlならAコードを表示させ、それ以外のURLならBコードを表示させるというように index.htmlとそれ以外のhtmlで表示を変えたいです。 使われるURLによって表示の振り分けはできるのでしょうか。 振り分けについてはユーザーエージェントで振り分けることができるくらいの理解度しかありません。
706 :
nobodyさん :2011/11/21(月) 18:40:05.17 ID:p9LTZGBk
>>702 ご回答ありがとうございます
ごめんなさい、自分の実力がないせいかイメージが沸きませんでした
リンクを100個とか入れた配列があり、
それを0:未訪問(デフォルト)、1.訪問予定、2.訪問済みのようにフラグを立てようと思っています
で、それぞれをまずフラグの値を確認し、0なら1に変更、2なら無視といったことをしたいと思っています
このような場合は配列に貯めて一気に更新させるにはどのようになりますか?
>>703 ご回答ありがとうございます
PDOを自分は使っているのですが、
$db = new PDO($dsn, $username, $passwd, $options);
を格納した関数を用意するだけでいいのでしょうか?
>必要なときに取得、不要になったら切断せずに返却
というのが自分にはスクリプトが浮かびませんでした
>>706 >このような場合は配列に貯めて一気に更新させるにはどのようになりますか?
それくらいupdateでググってみたら?
効率的な処理を考えてふらふらしてる暇があったらちゃんと動くコード書いてくれ
>>706 接続が一つだけでいいなら
function get_connection() {
static $pool;
if (!$pool) { $pool = /* 接続 */; }
return $pool;
}
ちなみにフラグを操作するだけだったらこれで済む
UPDATE table SET flag = 1 WHERE flag = 0
710 :
nobodyさん :2011/11/21(月) 19:00:15.72 ID:372LMnzX
>>705 include、requireも理解しています。
使われるURL(ファイル)で振り分けができるかどうかです。
現在のファイル位置がindex.htmlの場合は
Aコードを表示
↓
現在のファイル位置がindex.html以外になら
Bコードを表示
のように振り分けたいです。
>>710 getenv('REQUEST_URI')で振り分けたいってかんじ?
>>711 REQUEST_URIでも絶対パスでもいいので
位置つかんで該当する場所ではコードを変えるようにしたいです。
713 :
nobodyさん :2011/11/21(月) 19:22:16.51 ID:372LMnzX
>>712 ID表示わすれてました。もうしわけない
714 :
nobodyさん :2011/11/21(月) 19:36:20.75 ID:cDijwsFN
SELECTボックスで作成するドロップダウンがあるとします。 10月から数えて現在までの間を1ヶ月ごと選択できて 現在だと 2011月10月▼ 2011月11月 と表示され、月が増えるごとに 2011月10月▼ 2011月11月 2011月12月 2012月1月 2012月2月 と増えていく処理を作成したいのですが、 単純に30日ごとに増やせばいいというものでもなく どう計算、処理していいか分かりません。 ご指導お願いします。
715 :
670 :2011/11/21(月) 20:02:04.04 ID:???
PHPにはそういった組み込み関数は用意されていないんですね。やっぱり ひとつの関数では無理で複数の関数を組み合わせるとかforeachを使うとか になるんですね。どうもありがとうございました
>>712 え、そこから先がわからないと言っている?
1、日付型にして計算してるんだったら、 DateTimeだったら 日を1とかにしといて DateInterval('P1M') やら modify('+1 month') 昔の方法だったら mktime( 0,0,0,$m+$i,1,$y)とか 2、 年と月を別の変数にして月足していって12超えたら年繰上げ
>>715 どうも言い回しが気になるんだけど、Javascriptにもそういった組み込み関数はないよ
719 :
nobodyさん :2011/11/21(月) 20:32:24.70 ID:372LMnzX
>>716 すまん。甘えたわ。後は調べればわかります。
ありがとうございました。
>>718 もちろんJavascriptとアホほど組み込み関数を用意しているPHPとは比較していません
似てるようで微妙に違う組み込み関数が探しきれないほどありますがjQuery.map()のような関数はないんですね ってだけで他意はありません
array_filterで代用できない?
726 :
nobodyさん :2011/11/21(月) 21:40:21.33 ID:cDijwsFN
>>723 date_interval_create_from_date_string....
長い…
727 :
nobodyさん :2011/11/21(月) 22:39:24.86 ID:vmm+j8qy
Smarty2での質問です。 {foreach from=$hoge item=val} {php}{/php} {/foreach} というテンプレートで、 {php}{/php}内でvalにアクセスするには どう書けばいいですかね?
テンプレが読めませんかね?
{php} print_r($this->get_template_vars('val')); {/php} スレ違い
まだ2使ってんのかよさっさと3にしろや
smartyのテンプレは無駄が多すぎるな <?php foreach ($hoge as $val) : ?> <?php echo $val; ?> <?php endforeach; ?> でええっちゅうに
foreachしか使わない初心者にはお似合いかもね
ZendFrameworkとSmartyの相性の悪さが異常だということをわかってくれない
シスうんこ居る?
スマーティ使ってて、 なんて便利なんだ! とか これ考えたやつすげえ! とか 感じたことないんだが。
確かに。 <?php include("header.html");?>で済む話だな。
機能理解してない上にスレ違いの話を続けるバカか
制作とエンジニアの切り分けは楽になる。マジで。 ま、どのテンプレートエンジンもそうだけど、 PHPベタ書きよりはいい
739 :
nobodyさん :2011/11/22(火) 12:55:43.29 ID:spTidUMW
>>738 うん、だからスマーティを習得しようとしたとき、
スマーティに感動したというより
MVCに感動した
smartyはMVCでいうところのVだけだよね。 MとCは分離できてない。
741 :
nobodyさん :2011/11/22(火) 13:07:08.85 ID:OIOakh7V
馬鹿にも解りやすいように作ってあるんだから、 そうそう凄いって事はないだろ。 テンプレートエンジンでこれはすごいとかあるの?
>>741 結局、制作と開発の分離だけだとは思ってる。
複数人開発でも、ひとりでも、その部分は相当楽になった。
<?php ってかくか、{って書くかで、HTMLソースの見やすさは全然違うけどな。
ま、そこは慣れか。
smartyは全然賢くないところが問題だ ただのオーバヘッド発生源
744 :
nobodyさん :2011/11/22(火) 14:27:17.60 ID:64j3oBDQ
EC2でAmazon Linuxを使ってますが、PHPを使う度に PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/json.so' - /usr/lib64/php/modules/json.so: undefined symbol: ZVAL_DELREF in Unknown on line 0 と警告が出ます。 直し方を教えて下さい
746 :
nobodyさん :2011/11/22(火) 16:02:57.23 ID:64j3oBDQ
PHP全部入れ直したら直った 最新のPHPを入れた後に、pecl install jsonをするとおかしくなるようだ PHPのセットアップに昔作ったスクリプトを使ったのが敗因か
関数で値(配列)を作って 関数から別の関数に値を渡して その関数で渡された値を処理して、また別の関数に渡して・・ としていると、今関数に渡された値(配列)にどのようなデータ、配列のキーが入っているのかが分からなくなる事がよくあります こういう状態を防ぐのによい方法がありましたら教えて欲しいです。
求めてるものかどうかは分からんが、リファレンスを使う よけいにややこしくなる可能性も大w
一般的には常識とされている普遍的なテーマ、例えば 真実は一つだけ 怒りは自然な感情 戦争・テロは無くならない 死刑には殺人の抑止力がある 虐められる側にも虐めの原因がある 自己チューな人間ほど自己愛が強い などの命題の間違いとその論拠を解説 義務教育では絶対教えない最新合理主義哲学 感情自己責任論
ねこをなでたら爪でひっかかれた まで読んだ
753 :
nobodyさん :2011/11/22(火) 18:25:47.38 ID:/8xSqwNz
現在日時の年、月を除いたタイムスタンプをミリ秒単位でほしいです。 ex.現在の時間が2011/11/22 18;24;30なら22日18;24;30のミリ秒のタイムスタンプがほしいです。 どのようにすればよいでしょうか?
754 :
nobodyさん :2011/11/22(火) 18:36:13.34 ID:t9MFvl4K
ミリ秒 php でググるくらいの努力してみ? microtimeかなんかがすぐ出てくる
755 :
753 :2011/11/22(火) 18:42:27.85 ID:/8xSqwNz
調べ始めはmicrotimeとmktime を組み合わせたらいけるような気がしてやってたんですが、以下で詰まっています。 ceil(microtime(true)*1000); で年月含めたタイムスタンプ(ミリ秒) を取った後年月以外の値を0にした タイムスタンプ(ミリ秒)を用意して 前式から引き算で 目的の年月を含まないタイムスタンプ(ミリ秒)を取得しようとしてました。 しかし年月以外の値を0にした タイムスタンプ(ミリ秒)の取得ができません。 mktime(0, 0, 0, date("n"), 0); で 年月以外の値を0にした タイムスタンプ(秒) なら取れるのですが、ミリ秒ではとり方がわからないです。
>>753 すいません日本語を整理して分りやすく説明してください
758 :
753 :2011/11/22(火) 19:01:51.25 ID:/8xSqwNz
すみません。整理します。 まずほしいタイムスタンプは、現在日時より年、月を除いたタイムスタンプです。 年月を含めたタイムスタンプだと桁数の関係上不都合があります ex.1970年1月1日午前0時のタイムスタンプ(ミリ秒)が 102241660710だとします。 ほしいタイムスタンプはこのタイムスタンプから 1970年1月0日0時のタイムスタンプを除いた値です。 1970年1月0日0時のタイムスタンプが102240000000だとすると 求めるタイムスタンプは102241660710-102240000000=1660710です。
760 :
753 :2011/11/22(火) 19:19:02.13 ID:/8xSqwNz
すみません。floatで目的の値を取る方法がわかりません。 式で書いていただけませんか?お願いします。
ごめんfloorだった
1970年1月1日 0:00のタイムスタンプは0です。 そこからの秒数ですから。 桁数の問題で下駄履かせるなら、もっと最近じゃないと 桁数の問題として 何桁にしたいの? 数値が秒なんだから 7桁 9999999 までにしたいとして も 115日しか取れないよ?
現在日時より年、月を除いたタイムスタンプ ↑これ意味がよく分かりません
764 :
nobodyさん :2011/11/22(火) 19:35:04.85 ID:/8xSqwNz
桁数は10桁です。10に足りない場合は左詰めで0を加えて10桁にします。 よろしくお願いします。
765 :
nobodyさん :2011/11/22(火) 19:42:35.73 ID:/8xSqwNz
>>761 $date = floor(microtime(true)*1000) - floor(mktime(0, 0, 0, date("n"), 0)/1000);
ですか?
ありがとうございます。試してみます。
$mtime = microtime(true); $time = floor($mtime); $date = mktime(date('H', $time), date('i', $time), date('s', $time), 1, date('d', $time), 1970); echo ceil(($date + $mtime - $time) * 1000); こうじゃね多分
>>765 現在時刻から 0時0分0秒の0月の同日 つまり先月の同じ日(一ヶ月まえですらない)を引いてて意味分かんない数値になってるし。
みんなが出してくれた式の意味分かんないんじゃない?
>>767 × 0時0分0秒の0月の同日 つまり先月の同じ日
○ 0時0分0秒の0月の同日 つまり昨年12月の同じ日
mktime(0, 0, 0, date("n"), 0)は
× 0時0分0秒の0月の同日
○ 0時0分0秒の同月の0日 つまり先月末
何これ頭コンガラガルわ
つまり、その日の始まりのタイムスタンプを出せばいいだけってことなんだよな?
その月の始まりからのタイムスタンプをミリ秒でってことだと思うよ
772 :
nobodyさん :2011/11/22(火) 20:29:05.97 ID:/8xSqwNz
>>771 その通りです。説明していただきありがとうございました。
>>765 ではだめでした。。すみませんがご教授ください
>>772 両者とも整数部の単位は秒
$milli_sec = ceil((microtime(true) - mktime(0, 0, 0, date('n'), 0)) * 1000);
>>773 date_default_timezone_set('UTC');
$milli_sec = ceil((microtime(true) - mktime(0, 0, 0, date('n'), 1)) * 1000);
じゃない?
776 :
753 :2011/11/22(火) 20:58:18.67 ID:/8xSqwNz
>>766 ,775さんの式でできていました。
ありがとうございました!
777 :
nobodyさん :2011/11/22(火) 23:36:59.19 ID:L81haohX
>>777 コドモ向けだろ?
って返信欲しかったんだよな?ダヨナ?
leap time セットしたらphpのmake testでtest failerおおすぎなんだけど 閏秒は無視したほうが良いのだろうか?
>>777 一応破線は引いてあるけど非推奨にEclipseがあるのは理解できない。
>>781 viは出すな。Emacsとの宗教戦争になるwww
vim使うと最後に改行ついちゃうじゃん、なんて言われたことがあるよ。 うん、ファイルだからね、と返したらハテナついてたけどめんどくさいからほっといた
男は黙ってedline
たまに環境設定してない状況でedが起動してしまうことあるな ありゃ混乱するw
786 :
nobodyさん :2011/11/23(水) 10:41:12.32 ID:dmtpqfj9
nanoだろ普通
>>780 初心者向けとしてNGなら納得はできるな
787 :
nobodyさん :2011/11/23(水) 10:45:27.92 ID:pg1I2OrG
windows + apache2.2 + php5.3で localhost/以下はモジュールで動かせました localhost/cgi-bin/以下はcgiとして動作するようにしたいのですが ruby,python,perlは動くのですがphpだとソースコードがそのまま表示されたりページを開くたびにソースコード自体がダウンロードされたりします マニュアルやら検索でヒットしたページの通りにやってますが上手く来ません モジュールとCGIを両方使う正しいapacheの設定方法を教えて下さい
788 :
nobodyさん :2011/11/23(水) 10:52:46.68 ID:dmtpqfj9
スレチ
var_dump(strpos('(',"123()")); falseになるんだけどどうしたらマッチするようになりますか?
>>787 CGIで動作させるためには拡張子をCGI扱いにするかファイルの拡張子をCGIに変更しないと無理ですよ。
またはディレクトリ毎に設定するか。
あとは自力でどうぞ!
792 :
nobodyさん :2011/11/23(水) 13:35:17.80 ID:pg1I2OrG
>>790 そのへんはマニュアルや検索で十分見て試したので知ってます
>マニュアルやら検索でヒットしたページ の内容書かないから、 こっちが答えても片っぱしから知ってますと言われるだけだし 答えるだけ無駄な気がするw
XAMPP使いがたむろってるスレで聞いても答えられる奴なんていねえよ
だいたい、そのソースがcgiなのかphpなのかを 鯖から見てどうやって判別するんだよって話だな
>>796 手軽なのはやっぱり拡張子でわける方法だよね。
試したこと無いけど,htaccessでAddTypeで切り替える?
>>786 >初心者向けとしてNGなら納得はできるな
でもそれ上級者とかプロ向けとかも書かれている。
そのプロ向けのZendStudioなんてプロ向けと言うよりキワモノ向けの気がする。
みなさんってデバッカは何使っている? Zend Debbuger?xdebug? 自分は現在はxdebugを利用している。
>>421 $data = file("対象ファイル");
foreach ($data as $line) {
echo rtrim($line) . "\n";
}
いまさらだけどね。
最速かどうかはわからん。
hahaha $a="〜"; $b=file($a,FILE_IGNORE_NEW_LINES); $c=implode("\n", $b);
>>798 var_dump();
echo 'passed check point ?'; // ? は適当な数字
だけですましてる。
FILE_IGNORE_NEW_LINESか、覚えとこ。
>>801 Xdebug使ってみなよ。
var_dump()をものすごく綺麗に生成して表示してくれるから。
【OS名】windows 7 32-bit 【PHPのバージョン】5.3.8 (XAMPP 1.7.7) 【連携ソフトウェア】MySQL 【質問内容】 基本的なことですが、 PHPで生成されるウェブサイトを表示したユーザーには PHPのソースが見えることはありませんか? 障害発生時でも見えませんか? 言うまでもありませんが、変数名やデータベース名などが見えると セキュリティ上まずいので。
805 :
804 :2011/11/23(水) 19:34:03.70 ID:9QlOj3Cf
age忘れていました。
>>804 人為的ミス、サーバーのアップデート時とかCGIだとパーミッション設定ミスなどで
ソースが見れたケースは過去に何度か経験あるので絶対に見れないとは言わない。
それよりもエラー表示を隠し忘れていて情報晒しているサイトならよくみかけるw
807 :
804 :2011/11/23(水) 20:53:18.61 ID:9QlOj3Cf
>>804 ミスやセキュリティホールは仕方ないですね。
仕様では「見えない」と承知しました。
ありがとうございます。
ちょw そんな仕様ない 「見えない」ように鯖で設定しないとダメ
>>804 見えたらまずいようなものはドキュメントルートに置くなっ!!!!!!!!!!!
810 :
804 :2011/11/23(水) 21:34:21.21 ID:9QlOj3Cf
>>809 >>808 hoge.php
で生成されたページを表示したいが、ソースは見せたくないときは
hoge.phpを見えない場所に置いてページを表示させるには
どのようにするのが適切でしょうか。
禅問答のように思えているのかもしれないけど、 公開ディレクトリにあるスクリプトは非公開ディレクトリのスクリプトを読み込むことができるので。
>>808 も
>>809 もセキュリティー側に関してはド素人だと言うことがよくわかりますね。
問題は人為的なミスなどって考えないのかな?
それと
>見えたらまずいようなものはドキュメントルートに置くなっ!!!!!!!!!!!
レンタルサーバによってはそのFTPで接続できるのがそのドキュメントルート以下って事もあることを理解できないのかな?
814 :
804 :2011/11/23(水) 21:50:51.45 ID:9QlOj3Cf
>>812 hoge.phpから../mienai/mienai.phpを実行すればいいわけですね。
>>811 すみません。ピンとこないので精進します。
>>813 そういう仕様のサーバもありそうですね。
それを言ったら 管理できる人間はアクセスして盗み見ることができるからソースコードを暗号化しないといけないな キリがない事は言わないように
>レンタルサーバによってはそのFTPで接続できるのがそのドキュメントルート以下って事もあることを理解できないのかな? kwsk
>>813 そのレンタルサーバを使うのがよくない。
>>815 ヒューマンエラーによる問題発生時にいかに被害を抑えられるかという話だろ
818 :
804 :2011/11/23(水) 21:56:50.89 ID:9QlOj3Cf
>>808 サーバで「見えない」設定をすれば見えない仕様ということですね。
Apacheのhttpd.confに
AddType application/x-httpd-php .php
と書いておけば「ソースは見えない」という意味ですよね?
>>817 レンタルサーバでpublic_html外に置けないなんて無料サーバぐらいじゃね
あなたは無料サーバしか使ったことないような人?
821 :
819 :2011/11/23(水) 22:01:07.48 ID:???
>>820 サーバの仕様による。
そんなことも知らないの?
>>821 アンカー一つまともにつけれない君の書き込みの何処を信用しろと?
この状態を勝手に推測すると
>>819 =
>>820 ?
で、819って名前の所に書いてあるのは実は820って書くつもりだった?
どっちにしてもおまえは馬鹿だと言うことは理解できた。
J
レンサバの話のまとめ ・ドキュメントルートに置くのは無駄派と有効派の戦い 続き再開 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
>>825 ===
>>819 必死に話をそらして必死だな。
直接ファイルを覗いてほしくない場合は.htaccessでdeny from allを使っておけ。
でも.htaccessが使えるサーバかどうかもサーバのようによって違うから注意。
エラーは非表示にしておけ。
>>823 はい、ではドキュメントルートの上に置かない方法を書いてください
もちろん書けますよね
よろしくお願いしますね^^
>>826 へぇ〜ドキュメントルートの上に置くのはダメでhtaccessだとOKなんですね
後、やたら認定してるのは自分に味方を付けないと心細い証拠かね?
829 :
804 :2011/11/23(水) 22:22:31.10 ID:9QlOj3Cf
>>826 やはりエラーが非表示は基本ですか。
Notice: Undefined index: number in C:\xampp\htdocs\hoge.php on line 2
Notice: Undefined index: name in C:\xampp\htdocs\hoge.php on line 3
Notice: Undefined index: nyukin in C:\xampp\htdocs\hoge.php on line 4
Notice: Undefined index: zandaka in C:\xampp\htdocs\hoge.php on line 6
などと表示されると別のところからPOSTされて残高を勝手に増やされそうな
気がしたので。
ひとり必死な馬鹿がいるwww それはアンカーすらまともにつけれないアホ。 >後、やたら認定してるのは自分に味方を付けないと心細い証拠かね? もうばれて必死www >へぇ〜ドキュメントルートの上に置くのはダメで 駄目とは一言も書かれてない気がする。 妄想癖がつよい人みたい。
>>829 テスト環境は表示で良いんだよ。
ただ本番サーバは非表示にしてエラーはファイルとしてログ出力するようにしておく。
>Notice: Undefined index
>などと表示されると別のところからPOSTされて残高を勝手に増やされそうな
wwwww
もう駄目としか・・・・
>>829 Notice: Undefined indexがでるソースを書いている時点でもう馬鹿としか言いようがない。
しっかりチェック処理しろよww
833 :
804 :2011/11/23(水) 22:32:44.93 ID:9QlOj3Cf
>>831-832 ありがとうございます。
その前のページ(html)からpostされたデータを処理するphpですが、
PHPだけで実行するとそうなりました。
>>833 >その前のページ(html)からpostされたデータを処理するphpですが、
>PHPだけで実行するとそうなりました。
ならねーーーーよ。
しっかりとチェック処理してない証拠。
最低限isset()は使ってチェックしろよ。
835 :
804 :2011/11/23(水) 22:41:32.24 ID:9QlOj3Cf
>>834 入力値のチェックですね。
まずは動くかどうかというレベルなので…
これから入れます。
836 :
804 :2011/11/23(水) 22:42:00.79 ID:9QlOj3Cf
>>834 入力値のチェックですね。
まずは動くかどうかというレベルなので…
これから入れます。
質問です。 自分がphpで作成したwebページで、parse_ini_fileを使って、 hoge.iniというファイルから設定データを読みこんでいます。 hoge.iniを変更しても、時々parse_ini_fileで変更前のデータが読まれることがあります。 どのような原因が考えられるでしょうか?また対処方法はありますか? よろしくご教示お願いいたします。
838 :
837 :2011/11/23(水) 22:48:06.53 ID:x/DZrHIk
ID出し忘れました
>>837 キャッシュされる仕組みが入っているとか
時々なんて動作をするとは思えないのでサーバー側ではなくクライアント側のキャッシュではないだろうか
関数の引数について質問です。 デフォルト値が決まっている引数が沢山ある関数、例えばmktimeの様な関数は int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] ) 後の方にある引数を指定だけ指定したくてもそれが出来ずに、引数を全部指定する必要がありますよね。 この場合は$is_dstだけ指定したい時があっても、第一引数から順番に指定しなければいけません。 この場合は、引数を配列にして mktime(array("is_dst"=>1));と指定出来たら順番を気にする事無く便利だと思い、 自作関数の引数はこの配列のタイプで書こうかな。と思っているのですが、この方式の欠点というのがあれば教えて欲しいです。 組み込み関数でmktime(array("is_dst"=>1));の様な指定が出来る関数は(ほぼ?)無いと思うのですが この方式には何か欠点があるのでしょうか。
842 :
841 :2011/11/24(木) 00:28:10.08 ID:FvXT6b8c
ID出し忘れました
jsだと["key":"value"]で配列が書けるけど、phpだとarray("key"=>"value")で6バイト増えるからかな
>>844 key:value形式にするなら{}こっち使え。[]使うな。
まぁだいたい飛ばす引数にnullいれとけばイイいい関数が多いしな たいして指定も気にならない mktimeのis_dstに限っちゃ5.1から廃止されてるしな
別途setSummerTime(true)って関数作ればいいんじゃね
>>841 しいて言うなら名前が強制されるところかなぁ
サンプルコードに $msg .= " File Size: " . @filesize($upload_name); という記述があったのですが、filesizeは@なんて付けると phpマニュアルには載ってません。 $msg .= " File Size: " . filesize($upload_name);でも 問題なく動いてます。 @は何のためについているのですか?
@使う奴は、手抜き大好き手こき大好き
@使うとエラーのでない最強のスクリプトを書くことができますw
error_report(0) だっけ? これ付けても構文エラーの時は表示されるんだな
854 :
nobodyさん :2011/11/24(木) 11:41:28.10 ID:dbWHUVya
んじゃ、ついでに関連質問 実際さ、@ってどれくらいの頻度でつかってる?orどーゆーときに使ってる? 自分はもうクセで、基本的にissetとかでUndefinedの判断とも入れてるから、ほとんど使わないんだけど 使うタイミングとか教えてくれたらウレシス
ネット経由などチェックコストの高い場面では使っている あと気が向いたら0で割るなぼけ!といわれる場面の一時しのぎにw
よくわからずfopenに@を付けてます ローカルのファイルでファイルがない場合は新規作成するモードならいらないすか
PHP4の環境で・・・ やめたい。
loadHTML
> 基本的にissetとかでUndefinedの判断とも入れてるから 不思議な日本語を読むときに @ を入れてるかな…
860 :
nobodyさん :2011/11/24(木) 14:57:50.20 ID:oV1VI/p5
今JAVAのソースのPHPへの変換作業を行っています。 final int yOffset = -1942; final int mOffset = 65; Date date = new Date(System.currentTimeMillis()); Calendar cal = Calendar.getInstance(); cal.setTime(date); int y = cal.get(Calendar.YEAR); int m = cal.get(Calendar.MONTH); char yc = (char)(y + yOffset); char mc = (char)(m + mOffset); 以上JAVAのソースです。 これをPHPで同じことをしたいのですが最後の二行のキャストでの 数字→アルファベットへの文字変換をどうしたらよいのかわかりません。 よろしくお答え願います(T_T)
型無しのPHPにそんなのを期待されても・・・
chrだな アルファベットじゃねーけど。
863 :
860 :2011/11/24(木) 16:00:19.02 ID:oV1VI/p5
PHPだと同じことはできないんでしょうか? すみません初心者なもので何ができないかの判断もつけがたいです
864 :
860 :2011/11/24(木) 16:11:49.75 ID:oV1VI/p5
chrを使ってみろということですね。 ありがとうございます。試してみます
たとえば2000年なら58になるから文字は : Calendar.MONTHは 0-11だから65足した文字コードなんで AからL
866 :
860 :2011/11/24(木) 16:41:25.32 ID:oV1VI/p5
できました!ありがとうございました。
867 :
860 :2011/11/24(木) 16:57:51.46 ID:oV1VI/p5
すみません。もう一個質問お願いします またJAVA→PHPの変換作業なんですが、 getBytes("Shift-jis")というのをPHPでどうやったら表せますか?
さてはマニュアルを読む気ないな!
お前ら俺の質問にも答えろよ わからないんだったらちゃんとわかりませんって額に地面こすりつけて謝れ
お前の質問どこだよw
unpack("C*",$str);だな。 文字コードは必要ならshift-jisに変換後な
873 :
860 :2011/11/24(木) 17:56:52.94 ID:oV1VI/p5
お返事ありがとうございます。 mb_convert_encodingでエンコードしてから unpack("C*",$str);でいけました! 助かりました(^o^)
874 :
nobodyさん :2011/11/24(木) 22:00:13.17 ID:SvbOG3Rx
配列中に存在する値を出現回数によってソートするにはどのようにすればいいのでしょうか? sort()関数だけでは、あいうえお順になるだけで、その他の関数で上記のようなものを見つけられませんでした
array_count_valuesとかで
そんな都合のいい関数はないので自分で作るしか無い 計算量はかなり膨れると思う
877 :
nobodyさん :2011/11/24(木) 22:49:20.59 ID:SvbOG3Rx
そうですか・・・
>>875 さんの教えてくれた関数も駆使して自分で作らないといけないようですね
以前JavaScriptでにたようなのがあったような気がするのですが・・・
作り方をど忘れしてしまいました
今ざっと考えてみたのですが難しいですね
ちっとも作り方のアイデアが浮かんで来ません
array_count_values()を使うと出現回数は求められるようですが、
それを単純にsort()すると数字だけのソートになりますし
>>877 その為の関数が array_multisort()
http://php.net/manual/ja/function.array-multisort.php#example-4383 <?php
$list = array('1unko', '2chinko', '3manko', '2chinko', '3manko', '2chinko');
$weights = array_count_values($list);
$sort_keys = array_map(function ($v) use ($weights) { return $weights[$v]; }, $list);
array_multisort($sort_keys, SORT_DESC, SORT_NUMERIC, $list);
var_dump($list);
879 :
nobodyさん :2011/11/24(木) 23:04:35.59 ID:Ed0cMJSk
$str = 'あいうえおかきくけこさしすせそ'; 「お」と「か」の間に'<br>'を挿入したいのですがどうしたらいいですか?
880 :
nobodyさん :2011/11/24(木) 23:06:00.39 ID:SvbOG3Rx
>>878 おぉぉぉ!
ありがとうございます
今、array_count_values() -> arsort() のような事を試していました
listの値はともかくとして(笑)、教えていただき本当にありがとうございました
882 :
880 :2011/11/24(木) 23:21:57.84 ID:SvbOG3Rx
テストとして英数字でやっていたので上手くいったのですが、 日本語のようなマルチバイトでは上手くいきませんでした 振り出しに戻った感じがします(苦笑) マルチバイト、難しい・・・
うまくいかない?
884 :
nobodyさん :2011/11/25(金) 11:07:07.03 ID:Vtscy08p
変数$wwwに値を代入するなら$www=12;というるのは知ってますが、 $www .=""; $www .=12; などのように.を付ける代入は何を表してるのですか?
$www .= ""; は $www = $www . "";
886 :
nobodyさん :2011/11/25(金) 12:22:00.00 ID:Vtscy08p
>>885 ありがとうございます。
www=www+1;というC言語等でよくある意味なんですね。
887 :
882 :2011/11/25(金) 14:03:13.02 ID:???
>>883 うまくいきます?
自分の配列は全部日本語が格納されておりまして、それをarray_multisort() やarray_count_values()のようなものを使ってみたのですが、上手くいきませんでした
確か日本語をどんどんarray_push()で格納していった配列だった気がするのですが
自分、PHP5.3.8です
駄目なソース貼るとか、どうなるとかないと分かりません。 すくなくとも上の例でウチでは動く
889 :
nobodyさん :2011/11/25(金) 14:54:15.77 ID:WdRVkcPU
【OS名】CentOS 【PHPのバージョン】5.1.6 【連携ソフトウェア】特になし 【質問内容】 functionについて質問です。 function sample($post, $get) としたときに$testや$getが空だと当たり前ですがエラーが出ます。 $postや$getは既存のシステムのもので、空の場合や値が入っている場合があり一定していません。 function の引数定義時にissetでも使えればいいんですが、そういったことは出来ませんでした。 この時に$postや$getが空の場合でもエラーにしない方法はありますか?
あります。 >空だと当たり前ですがエラーが出ます そんなことはありません。
>>889 なんか勘違いしていると思うわ
function sample($post = null, $get = null)
こんな感じの事がやりたいのかな?
892 :
889 :2011/11/25(金) 15:08:41.55 ID:WdRVkcPU
>>891 回答ありがとうございます。
ちょっと原理はまだ理解できておりませんが、やりたかったことが
>>891 で出来ました。
$postにnullが入るので中身が無くなる?ようにも見えるのですが、nullの場合は扱いが異なるのでしょうか。
とは言えこれで目的の事ができました。
ありがとうございます。
>>887 > 確か日本語をどんどんarray_push()で格納していった配列だった気がする
そこ調べてみたらどうかな(苦笑)
もしくは同じ環境でちゃんとテストしてみたら
>>892 そんな発言をしているようだと求めている結果にはならないはず。
ソースを開示するかマニュアルを一通り読んだ方がいいぞ。
>>892 function chinko ($manko = null ){
return $manko;
}
//kapikapiが返る
$status = chinko('kapikapi')
// nullが返る
$status = chinko()
要するにデフォルト値ってイメージでいいと思うよ。
空の場合や値が入っている場合がありっていうのに、それで解決したというのが 俺にはさっぱりわかんねーや。
たぶん、functionの呼び出し方を理解していないだけだと思うんだ。 function func_name($a,$b){} 本来ならfunc_name($g_a,$g_b)で呼び出す所をfunction()だけで呼び出そうと してエラーが出ているのだろう。だから$a=nullとするとエラーがでなくなる。 呼び出しが()だからグローバル$g_aがfunctionの$aに入らずにおかしい! と感じているのだろうw
funcを呼び出す時点のスコープで$post $getがあったりなかったりする。 それがなかったとき func($post, $get)とすると、undefinedであるというNoticeが出力される かといって func( , ) とするとエラーが出る という状態だったのかな
899 :
684 :2011/11/26(土) 14:30:34.63 ID:???
おそろしあ
誤爆orz
orz誤爆
903 :
nobodyさん :2011/11/26(土) 20:09:33.52 ID:mMk8E5Ms
ここにいる PHPERさんは、 結構数学とか、得意なクチですか? 微分積分とかフツーに理解してる人ですか?
>>903 微積理解してなかったり、中学生もいるし、文系の人も多いです
学業関係なく慣れです
微分積分理解しないと高校卒業できなくないか?
高校卒業くらいならいらないんじゃね?遠い昔でわすれた
高校レベルで理解まで到達しないやろ 単に微積の答えの導き方覚える程度だろ
習わないこともあるよ
909 :
nobodyさん :2011/11/26(土) 20:55:52.34 ID:mMk8E5Ms
アルゴリズムの話をしたいのかな
>>909 スレ違いながら
役立つのではなく必要になることがある。
分からなければ出来ないことがあるということです。
>>907 理解ってどのレベルのことを言ってるの?
その議論ってPHPに関係あるの?
もうそろそろスレ終わるし、やりたいならやるのもいんじゃね?
高校数学はなんとなく理解できるだろ?
サーバサイドWebプログラムに数学は必要ないし 少なくともこのスレではできてもできなくてもどうでもいい JavaScriptでゲーム作るとかなら関係あるけどね
917 :
nobodyさん :2011/11/27(日) 00:58:58.36 ID:ooaVNxa6
最悪の成績で高校行けなかった俺に高校数学を理解しろと?
それでもPHPは理解できるんだなw
Webプログラム全般、数学はいらんとおもうが 仕組み覚えるって話だから、工作に近いんじゃない?
数学知識が必要なアプリを作ってないだけの話だろ 微分積分を解くアプリを作るなら微分積分の知識は必要になる そこまで行かなくても、例えば2進数の計算を知ってたらビット演算子で楽に表記できる場合があるとか
逆にWebProgで必要な数学の知識ってなんだろな 2進数とかは数学しらなくても、プログラム勉強したら自然と知識として入るだろうし 高校数学レベルの数学知識が必要なWebProgがおもいつかん
必須なのは四則演算くらいじゃね? Cでポインタを扱ってた頃は常に番地計算を行いながら プログラミングしてたものだが、その頃に比べるとはるかに楽になった 誰でもプログラミングに参入できるわけだ
経理とか統計とか普通にサーバーサイドで数学使うよ。三角関数とかも使わなくはない
>>923 あれ?三角関数とかって中学じゃなかった?
サーバサイドなんてDBに格納して取り出すのがメインだしな
微積ってサーバーサイドでつかったことないや アナライズするときも、そんな小難しいのを作った記憶ないな 数字の四則演算くらいか
927 :
nobodyさん :2011/11/27(日) 04:31:13.17 ID:cim/zCBY
アップロードした静止画のurlをhttp〜/upload/001.jpgとしたとき http〜/upload/001.jpgにアクセスしたときパソワードを入力しない とアクセスできなくすることはphpで可能ですか?
はい可能です
フレームワークの混交とか普通なんでしょうか? python の turbogear と django を混ぜて使うとか 聞いたことあまりないです… たくさん覚えないと駄目ですか? ふれいむわーくは幾つくらい併用していますか? わからないことだらけです><;
スレチ
931 :
929追記 :2011/11/27(日) 07:11:24.87 ID:???
フレームワークの間で命名規約が異なってると require_once 'Zend/Loader/Autoloader.php'; とかやっても普通に呼び出せないような 気がするのですが…うむむ…
Webprogに必要な数学 というスレがあってもいいかもしれん
( ´・ω・) ( `・ω・´) ( ´・ω・` ) (・ω・` )
936 :
nobodyさん :2011/11/27(日) 20:17:40.78 ID:pnNAW0Jm
phpでインクルードする時、 include_once("/hoge.php"); だと、Dreamweaver上のプレビュー画面で確認できるんですが include_once(dirname(__FILE__)."/hoge.php"); だとDreamweaverで表示されません。 プレビューでも表示できる何かうまい手はないでしょうか
937 :
nobodyさん :2011/11/27(日) 21:22:14.18 ID:cim/zCBY
phpはformで日本語や記号を送信するときに urlエンコードしてるときにブラウザでurlエンコードして php側でurlデコードしてるのですか?
939 :
nobodyさん :2011/11/27(日) 22:17:59.53 ID:UV6OYU9k
mod_phpって何? Apacheのモジュールですとか抜きにして具体的に説明できる人 教えてくれ 自作HTTPサーバーに組みこむ場合はどんな処理になるんでしょうか
Apacheのモジュールです
941 :
nobodyさん :2011/11/27(日) 22:27:31.48 ID:UV6OYU9k
>>940 モジュールってなんやねん。
cgiならforkしてパイプで標準出力ドンまでは分かった。
自分でHTTPサーバー作ってmod_phpを組み込みたいねん。
教えてーなぁ。賢い人求む。
942 :
nobodyさん :2011/11/27(日) 22:31:41.04 ID:cim/zCBY
>>938 ありがとうございました。
$title="あ.jpg";
if (@unlink("uploads/$title" )){
echo "画像ファイル削除成功!!";
} else {
echo "画像ファイル削除失敗!!";}
で日本語の名前の画像が削除できないのですが、対処法って
あるのですか?
>>942 前にテストやった時、それで日本語も削除できてたような気がしたけど・・
PHPで初めてDBに触ってみてるんだけど、正規化した後で あるテーブルのデータ欲しい時、そのテーブルのキー持ってない場合なのですが、 結合とか使ってテーブルまたいで1回の命令でデータ取って来ていいの? それともちまちまテーブル1個ずつ辿ってデータ取って来るべき? 結合使うと楽チンっぽいけど一度に複数テーブル扱うから 代わりにデメリットとか発生したりしないものかと愚考してます。
>>942 まずその方法で日本語のファイルを作ってみてはどうか
>>941 うーん。
考えが逆で、Apacheのモジュールを使えるようなHTTPサーバを作らないとだめだよ
>>944 OR/Mとかなら更新系が素直にいかないかもしれないけど、結合して抜いてくる分にはなんのデメリットもないかと
948 :
nobodyさん :2011/11/28(月) 00:07:25.54 ID:0WCVNoA5
>>946 というと、Apacheのmod_phpがつかえるように
HTTPサーバーを構築するということ?
このmod_phpって具体的にはどんな処理なんでしょうか?
プロセスが・・・、おや、誰か来た
950 :
nobodyさん :2011/11/28(月) 00:30:46.49 ID:0WCVNoA5
>>949 phpみたいなインタプリタだとアクセスごとの起動時に処理を食いますよね
これを解決するにはどうすればいいんでしょうか
つまり、一つのプロセスを永続的に利用して、phpを実行させるには〜
それがmod_phpやん
952 :
nobodyさん :2011/11/28(月) 01:02:08.85 ID:FBsM2dj0
PHPで商品管理ツールを作っているんですが、設計でどうしようか悩んでいます。 商品が1・2・3・4・5・6・7・8・9と9個あった場合 商品カテゴリA 1・3・5・7・9 商品カテゴリB 1・2・3・4・5 商品カテゴリC 2・4・6・8 とカテゴリを複数登録することができます。 商品ごとにウェイト付けをしてるんですが、並び替えをどうしようか迷ってます。 ツールで、カテゴリ毎に商品の並び替えをする場合、どのようにしたらいいとおもいますか? スレチだったらすいません。よろしくお願いします。
954 :
nobodyさん :2011/11/28(月) 01:15:29.41 ID:0WCVNoA5
>>951 どうやってやるの?
webサーバーでlistenしてアクセスがきたらfork
forkした後に、URLをパースして、目的のファイルを探した後に
実行ファイルのパスと実行結果をphpプロセスとパイプで共有することになる
んでしょうか。
この場合、phpは常駐してイメージではforループで待ち受けている感じになるの?
955 :
nobodyさん :2011/11/28(月) 01:21:48.16 ID:HiuRKhp3
$size=@filesize($upload_name)/1024;$size=round($size); というように1024で割ってKBにしてますが、 1024で割るのであってますよね?
それ結局リクエストごとにプロセス起動してるじゃん
この前から知ってることを質問してるアフォがいねぇか?
958 :
nobodyさん :2011/11/28(月) 01:34:04.00 ID:0WCVNoA5
>>956 よくわからないのですが、phpってC言語を利用して構文解析を行って
その結果を実行して標準出力する訳ですよね
こいつをリクエストごとに"起動して終了"という一連の動作を省略させて
使い回しを行うには、どうすればいいのでしょうか?
小生はあまりプログラムが得意ではありません。ましてOS周りには疎いので
伝わりにくいかと思いますが、お願いします。
959 :
952 :2011/11/28(月) 01:38:18.80 ID:FBsM2dj0
>>953 設計というか、アルゴリズムに近いですかね。
カテゴリA内をツールで順番代えたら、カテゴリBと重複しているものは、並べ替えの影響をどうしようかなとか・・・
という感じです。
優先順位付けを行えばいいのでは? 自動で決めたいってならカテゴリ登録数が少ないやつを上位にするとか (少ない=その商品との関連が強いということだから)
>>959 それは、どうしたいかによると思うが・・・
>>958 リクエストごとに、リクエストされたphpを解析して結果を返せばよくね
apacheはhttpdプロセスを複数起動していて、各子プロセスはシングルスレッドで動いてると思うよ
964 :
nobodyさん :2011/11/28(月) 08:17:53.50 ID:7HJ2BA72
PHPの問題かどうかわからないんだけど あるURLに、GETではアクセスできるけどPOSTでアクセスすると404になる 何故だかわかりません Apacheのログ見ても普通に404になってて、エラーログなし 何が起きてるんでしょうか…
GETで何もないときに、存在しないページに飛ばすだけでそうなるな
966 :
nobodyさん :2011/11/28(月) 10:32:53.78 ID:HiuRKhp3
「php」って名前のリア充感とオサレ感は異常。 プログラミング言語で一番のリア充が使う言葉のような 響きがあると思います。みなさんどう思いますか?
ネタにマジレスw
え?
970 :
nobodyさん :2011/11/28(月) 18:39:46.51 ID:HTuNqc32
php関連でオススメの本とかってないですか?
971 :
nobodyさん :2011/11/28(月) 18:40:39.92 ID:HTuNqc32
あ、宣伝だとあれなんで どういうところがいいとかも言ってくれるとうれしいです。
webフレームワークデザインみたいな本ないかねえ・・・
>>971 このスレ的にはphpマニュアル>>>phpの書籍
って感じでphpの本なんて住民が徹底的にdisってるからな。
君がphpをどの程度理解してるかでも変わってくる。
phpの初心者向けの本なんて、htmlの説明して、webサーバの
アパッチ、AN HTTPD(1.42p)、xampp、mysqlの説明で1/4〜1/3
くらいページ取ってるしな。
975 :
nobodyさん :2011/11/28(月) 20:45:46.38 ID:FBfO9m/G
levenshtein()はマルチバイトには対応していないようですが、ライブラリだとか何かいい方法とかありませんでしょうか?
>>975 レーベンシュタイン距離の計算アルゴリズムは各所で入手できるから
関数を自作するのがいいんじゃね。
つーかプログラマならそれぐらいやれ。ライブラリばかりに頼るな。
mb_levenshteinで検索
車輪の再発明はご遠慮願います
児童ポルノ画像を集めるためphpを勉強して ケータイサイト作って、貼られる画像を保存してる 変態友人がいる。
俺も似たような目的で無料掲示板サービスを運営してたな 携帯持ってなかったのに携帯3キャリアとPCで絵文字相互変換ライブラリを書いた ガキどもが「絵文字使えねーし」って騒いでたらデバッグしてたw
>>979 法整備進んでなかった数年前ならまだしも
もうそれ逮捕されますから
通報しとけ
982 :
nobodyさん :2011/11/29(火) 10:00:54.03 ID:WD7XMt4a
.htaccess、configファイルの設定など、 ローカル側とサーバー側で 設定が違う場合 いっぺんにアップしたりダウンしたりすると、 誤動作を起こしてしまうことがありますが、 この差を意識することなくアップしたりダウンしたりする うまい方法はないですか?
FTPソフトで設定ファイルはアップ・ダウンしないよう除外設定すれば?
984 :
nobodyさん :2011/11/29(火) 13:19:08.42 ID:pb/9Q2Ix
$tab = (isset($_SESSION['tab'])) ? $_SESSION['tab'] : ''; この一行で?はどんな役割をしているのですか?
$_SESSION['tab'] があるかどうかチェックしてる
phpの初心者向けマニュアルは、Cを知っている前提で書かれているものばかり
>>971 さんお薦めのK&Rとか、Cの本を読んでからじゃないと
何が何だかわからないw
>>987 PHP勉強するのにCの知識は必要ないと思うけど。ポインタの概念とか不要だし。
初心者向けのPHP本を読んでも理解できない人はきっとプログラミングに向いてない。
そういう人はN88BASICから勉強するのを勧める。
phpマニュアルがわからないっていうなら何読んでも理解できないだろ 関数リファレンスの読み方がわからなかったけどそれも慣れの問題
何でもいきなり読んだだけじゃなかなかわからんよ やってみないとな。
991 :
nobodyさん :2011/11/29(火) 18:06:34.98 ID:dAGutuld
【PHPのバージョン】5.2 switch(true){ case strcmp($param,'a') == 0:break; case strcmp($param,'b') == 0:break; default:break; } $paramに何も入っていない時に、defaultに飛ばしたい ・if文[if(isset($param)){swicth(true){〜}}else{〜}等] ・isset($param) && strcmp($param,'a') ・関数 これらを使用せず、エラー表示(Notice: Undefined index、レベル下げ×) させずにdefaultに飛ぶ簡潔な書き方はありませんか?
PHPはC++の簡易版、スクリプト化といえる。
>>993 ID変わりましたが991です
諦めてisset($param) && を使うことにします
回答ありがとうございました
switch(true){ case isset($param) && strcmp($param,'a') == 0:break; まさかこうしたんだろうか…
>>988 ポインタ以前の話で
初歩的なことで言えば、逐次処理、ループ、条件分岐なんかは
Cの初歩の本の方が詳しく解説しているのに対して、PHPでは知ってて当然になってるし
関数の使い方も、Cで学んでいることが前提になっている(引数の渡し方、受け取り方など)
挙句の果てに、C言語では○○に相当するとか、C言語で言うところの○○であるとか
初心者向けには全然解説になってない解説が書いてあったりw
PHPの本を読んでもちんぷんかんぷんだったけど、Cの初歩の本を読みながら
簡単なテキストエディタくらいが書けるようになってからPHPに戻ったら
スラスラ書けたし、マニュアルもすんなり入ってくるようになった
オブジェクト指向的な作り方も、C++がちょっと書けるようになってから戻るとマジ捗る
歴史が古いから、解説できる人材が多いからなんだろうか?
>>995 そのまさかだ 俺の頭で他の方法になるとswitchの前にifしか出てこない
if(isset)の分岐はelseとdefault両方に同じコード書くことになる
それなら面倒でもisset($param)をcaseに入れてdefault一つに纏めようかと
それかswitchの前にif(!isset($param)){$param = null;}も考えていた
そんなミクロなところにこだわって意味あんの
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。