【PHP】下らねぇ質問はID出して書き込みやがれ 96
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2010/05/28(金) 16:33:44ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 95
http://pc11.2ch.net/test/read.cgi/php/1271636105/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0831nobodyさん
2010/07/05(月) 17:23:48ID:???Undefined index: となってるから
$_POST["title"]と$_POST["body"]を空で送信(submit)してるでしょ
空で送信されたら未定義になる。
未定義なのにprintさせようとしてるからNoticeがでてる。
正しくはissetなどで確認してから・・・となるんだろうけど
この場合のNoticeは無視しちゃう所多いよ
0832nobodyさん
2010/07/05(月) 17:39:17ID:???http://www.php.net/manual/ja/language.types.boolean.php#language.types.boolean.casting
あとphpproの講座は使えないから他の本で勉強する事をお勧めする
0833nobodyさん
2010/07/05(月) 17:41:56ID:qHUIRNCb0834nobodyさん
2010/07/05(月) 17:48:04ID:???0835nobodyさん
2010/07/05(月) 18:26:03ID:E/YNQXWpformで送られるデータって文字列として取得されることが保障されてるんだっけ?
それなら !== ""でよさそうだけど。
>>830
phpの内容がわからないのでどこが121行目かちょっとわからんとです。
0837nobodyさん
2010/07/05(月) 21:59:14ID:???0839nobodyさん
2010/07/05(月) 22:17:23ID:???所詮はただの配列なんだからちょこっとコード書いてみりゃ分かるだろ。
0840nobodyさん
2010/07/05(月) 22:22:52ID:???これだけでおk、
0841nobodyさん
2010/07/05(月) 22:23:16ID:???0842nobodyさん
2010/07/05(月) 22:37:01ID:???0845nobodyさん
2010/07/05(月) 23:26:29ID:???保障されているってことでいいのかしら。
ラジオボタンとかでvalue=1とかしてても勝手にint変換されたりしない、でおk?
0846nobodyさん
2010/07/05(月) 23:34:50ID:???0847nobodyさん
2010/07/05(月) 23:49:49ID:???0849nobodyさん
2010/07/05(月) 23:56:22ID:???0850nobodyさん
2010/07/06(火) 00:49:38ID:???文字列か配列かのどちらかになる可能性がある
コードゴルフならともかく初心者に>>840を教えてるのが居たら袋叩きにしていいぞ
0851nobodyさん
2010/07/06(火) 01:07:54ID:???第三者が見てわかりやすい記述を心がけようぜ。
0852nobodyさん
2010/07/06(火) 01:42:19ID:???Cのコードゴルフじゃあるまいし全然原型とどめてるじゃん。
0853nobodyさん
2010/07/06(火) 02:24:13ID:???application/x-www-form-urlencoded の title[0]=0 を受け入れるが意図した挙動じゃないだろ?
入力値を信用したコードの時点で使いものにならない
0854nobodyさん
2010/07/06(火) 02:57:17ID:???0855nobodyさん
2010/07/06(火) 08:57:03ID:???name属性がない場合 null
name属性があって入力がない場合 ""
よって
if( isset($_POST['hogehoge'] ) && $_POST['hogehoge'] !== "")
{
}
じゃねーのかい!
0856nobodyさん
2010/07/06(火) 10:38:17ID:???0857nobodyさん
2010/07/06(火) 11:22:03ID:1Cm5WNj+http://(ドメイン)/(コントローラー)/(アクション)
という形になっているのを見かけます。
例)掲示板に投稿
http://hoge.com/bbs/entry
それで思ったのですが、アクション(メソッド)が指定されているURLに
直アクセスされた場合、どうするのでしょうか?
POSTのデータが送られてきたか否かで判断して、直アクセスの場合は
元のページにリダイレクトする、とかそう言う事をしているのでしょうか?
アクションを直接GETとしてURLに含めるのは、セキュリティ的に疑問です。
0858nobodyさん
2010/07/06(火) 11:32:45ID:???0859nobodyさん
2010/07/06(火) 11:39:40ID:???0860857
2010/07/06(火) 12:07:00ID:1Cm5WNj+GETだとフォームを介さなくてもアクセスできるから
POSTより緩いと思うんですよね
>>859
857に書いたようなURLがformのactionにしていされていたら
検索エンジンのクローラーに取得される可能性があります。
そうなると、セキュリティ的にまずいと思うんですよ。
0861nobodyさん
2010/07/06(火) 12:18:29ID:???0862nobodyさん
2010/07/06(火) 12:25:44ID:???あっさり解決するから。
0863857
2010/07/06(火) 13:34:39ID:???0865nobodyさん
2010/07/06(火) 21:14:40ID:???0866nobodyさん
2010/07/07(水) 00:12:26ID:???0867nobodyさん
2010/07/07(水) 00:32:00ID:???0868nobodyさん
2010/07/08(木) 08:59:00ID:Tsw8WKYJ【質問内容】
PHP で文字列を組み上げるのに、Ruby でいうところの #{} 的な
インラインテンプレートみたいなのってないでしょうか?
sprintf と + で処理の実現自体は可能なんですが、なんかごちゃごちゃしてしまうので
もうちょっとエレガントな記法ってないのかなと思って質問する次第です。
よろしくお願いします。
0869nobodyさん
2010/07/08(木) 09:53:28ID:???0870868
2010/07/08(木) 10:05:54ID:???ただ、それだけのために Smarty 組み込んだところで、余計可読性下げそうでちょっと勘弁。
ありがとうございました。
0871nobodyさん
2010/07/08(木) 10:51:51ID:???まあ、自分でテンプレート処理書いちまえばいいんだと思うけど。
実際は "This is a {$pen}";ですむんじゃねーの?
0872868
2010/07/08(木) 11:04:41ID:???単純に "{$var}" で展開されたのね・・・万事解決です、本当にありがとうございました。
ってかくと感謝してなさそうに見えて不思議ですが、ほんとに助かりました。ありがとう。
0873nobodyさん
2010/07/08(木) 11:07:30ID:???0874868
2010/07/08(木) 11:31:52ID:???0875nobodyさん
2010/07/08(木) 18:18:32ID:???アクセス規制用に以下の部分を別ファイルにしたいのです。
deny from 192.168.0.11
deny from 192.168.0.12
deny from 192.168.0.13
deny from 192.168.0.14
みたいな感じで。
httpd.confを触れるなら include ファイルパス
で、できるのですが。。。。
.htaccessではできないんどえしょうか?
0876nobodyさん
2010/07/08(木) 18:22:36ID:???0878nobodyさん
2010/07/08(木) 22:38:14ID:lGIUgqylDB名を、配列に取得して、プルダウンメニューで選択するようにしたいのですが
ボックスに表示する部分なのですが
mysql_list_dbsを使ってmysql_fetch_arrayでいけますか?
0879nobodyさん
2010/07/09(金) 03:37:15ID:xzt7gYmYユーザー定義関数内でデータベースを扱う場合、
各関数内に
//MySQLに接続
$con=mysql_connect(DB_SERVER, DB_USER, DB_PASS);
//データベース選択
mysql_select_db(DB_NAME,$con);
として一々データベースに接続しているのですが、
パフォーマンスは悪くならないのでしょうか?
みなさんがどうしてるか知りたいのです。
もし一々接続しなくてもいける方法、
もっとパフォーマンスが良くなる方法などがあればご教授ください。
0880nobodyさん
2010/07/09(金) 04:23:31ID:???0882nobodyさん
2010/07/09(金) 17:23:12ID:7d5uHpFB0883nobodyさん
2010/07/09(金) 17:29:30ID:???http://php.net/manual/ja/language.oop5.interfaces.php
0885nobodyさん
2010/07/09(金) 21:53:07ID:???同じ引数で接続する場合は既存の接続を再利用してくれるが
USE `database` を毎回発行するのは無駄なので、
リソースをどこかにプールしておくべき
function get_connection() {
static $c;
if (!$c) {
$c = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
mysql_select_db(DB_NAME,$con);
}
return $c;
}
0886名無しさん@そうだ選挙に行こう
2010/07/10(土) 04:56:21ID:WdQ5SbfS外部へのコネクションが極端に時間がかかるのです。
普通のテキストを読み込むだけで10〜20秒程度要します。
厳密には関係ないかもですが、ネットワーク帯域自体は細いわけではなくサイトは瞬時に表示されます。
ただのこの外部へのコネクション時は非常に時間がかかるんです。
PearのHTTP_Clientを使って接続しているのですが、何か情ありませんでしょうか?
0887名無しさん@そうだ選挙に行こう
2010/07/10(土) 04:58:08ID:WdQ5SbfSPHPは5.1,6です。
0888名無しさん@そうだ選挙に行こう
2010/07/10(土) 05:37:00ID:4d57FSnB$fruit = array("Apple" => "りんご", "Orange" => "みかん",
"Grape" => "ぶどう");
で例えばAppleの中にある文字が本当にりんごだった場合のみ
処理を続行するようなことってできますか?
もしAppleに「みかん」が入っていたら処理を中断するような感じにしたいんですけど
0889名無しさん@そうだ選挙に行こう
2010/07/10(土) 06:07:03ID:WdQ5SbfSif ($fruit['Apple'] === 'りんご') {
echo 'Appleはりんごだよー';
}
else {
echo '中断するよ';
}
887です。
原因はDNS周りにありそうです。汚しましてすいませんでした。
0890名無しさん@そうだ選挙に行こう
2010/07/10(土) 12:37:46ID:2QvhDB/50891名無しさん@そうだ選挙に行こう
2010/07/10(土) 12:41:51ID:2QvhDB/50ch PHP
http://script.s16.xrea.com/2ch/php/
Sch BBS
http://www.sanadake.info/sch/bbs/
0ch BBS
http://0ch.mine.nu/
0892名無しさん@そうだ選挙に行こう
2010/07/10(土) 14:58:38ID:g8ZkkqTi調べるにはどうすればいいのでしょうか?
$text = 'testName';
$type = 'Name';
if (strstr($text, $type)) {
echo $text."に".$type ."は含まれています";
}
とするれば一応出来るのですが、「末尾が$typeである」
という条件を加えたいと思います。やり方を教えてください。
0893名無しさん@そうだ選挙に行こう
2010/07/10(土) 15:01:24ID:2QvhDB/5PHP5とかからだと、文字列の後方検索に対応していたはずだけど。
多くで動くようにするなら、正規表現。
0894名無しさん@そうだ選挙に行こう
2010/07/10(土) 15:10:36ID:g8ZkkqTiif(preg_match("/(.*)+" . $type . "$/", $text, $array)){
echo $text."に".$type ."は含まれています";
}
0895名無しさん@そうだ選挙に行こう
2010/07/10(土) 15:15:33ID:2QvhDB/50896名無しさん@そうだ選挙に行こう
2010/07/10(土) 15:21:46ID:g8ZkkqTiもし別の条件で通ったり通らなかったり無いか自信が無くて・・・
とりあえずこれでいきます。
0897名無しさん@そうだ選挙に行こう
2010/07/10(土) 16:01:10ID:???if( substr( $text, 0-strlen($type)) === $type )
0898794
2010/07/10(土) 17:45:08ID:9rtjPRpZ0899名無しさん@そうだ選挙に行こう
2010/07/10(土) 17:57:03ID:???$title .= "test";
echo $title; //bakatest
0900794
2010/07/10(土) 18:18:52ID:9rtjPRpZ0901名無しさん@そうだ選挙に行こう
2010/07/10(土) 22:32:13ID:0jjmMoFCちなみにPHPのネストの上限ってあります?
後者が内部的にはネスト扱いとなるなら、関係あるのかなーと思って。
0902名無しさん@そうだ選挙に行こう
2010/07/10(土) 23:11:38ID:o7F/R3R50903901
2010/07/10(土) 23:44:49ID:0jjmMoFCなるほど〜。どうもです。
インタプリタ的には前者を使った方が優しいかな。
0904名無しさん@そうだ選挙に行こう
2010/07/11(日) 01:19:52ID:C1oKqEx50905名無しさん@そうだ選挙に行こう
2010/07/11(日) 02:54:27ID:???function is_class_extended($base) {
foreach (get_declared_classes() as $super) {
$class = new ReflectionClass($super);
while ($class = $class->getParentClass()) {
if ($class->getName() === $base) {
return true;
}
}
}
return false;
}
echo 'Exception is extended? ', var_export(is_class_extended('Exception'), true), PHP_EOL;
echo 'stdClass is extended? ', var_export(is_class_extended('stdClass'), true), PHP_EOL;
0906名無しさん@そうだ選挙に行こう
2010/07/11(日) 08:03:31ID:???0907名無しさん@そうだ選挙に行こう
2010/07/11(日) 11:42:10ID:???0908名無しさん@そうだ選挙に行こう
2010/07/11(日) 19:08:50ID:aH0kYx2z./aaaディレクトリ内においてディレクトリ名がbbb/
さらにその中のccc/までたどり着くには
どういった記述がよろしいのでしょうか
0909nobodyさん
2010/07/12(月) 10:44:20ID:???0910nobodyさん
2010/07/12(月) 18:29:55ID:2AUEyQFR正規表現で投票してみればいいさ。
0911nobodyさん
2010/07/12(月) 20:09:58ID:o18xCfm1$res = mysql_query($sql);
while($row = mysql_fetch_array($res,MYSQL_ASSOC)){
print_r($row);
}
とした時に、nameの部分が被って配列に代入されます。
フィールド名の指定を「user.name, category.name AS cate_name」
みたいに変更する以外に方法はないのでしょうか?
0912nobodyさん
2010/07/12(月) 21:29:01ID:r9oprwp5結局bind時に変数名がかぶるから、asった方がいいと思う。
0913nobodyさん
2010/07/12(月) 23:47:53ID:???その実装方法は地雷だからやめた方がいい。
「必要なメソッドが実装されているか」だけを検査すべき。
スマートにやるならインターフェイスを使う。
0914nobodyさん
2010/07/13(火) 00:07:54ID:???クラスが継承されている場合、継承元のクラスファイルを読み込む
ような仕様がしたいのですが、これも地雷になるのでしょうか?
0915nobodyさん
2010/07/13(火) 00:43:05ID:lEQMzPMj0916nobodyさん
2010/07/13(火) 00:51:22ID:???0917nobodyさん
2010/07/13(火) 01:02:31ID:???その場合、親クラスは絶対に読み込み済。だから読み込む必要などない。
やってみればすぐ分かるが、親クラスを読み込んでいない状態で子クラスは宣言できない。
0918nobodyさん
2010/07/13(火) 03:29:43ID:???クラス定義する時にどのファイルが必要か判ってるんだから
require_once 基底クラス を書いておくか、
オートローディングを使うのが定石
http://www.php.net/manual/ja/language.oop5.autoload.php
A.php
<?php class A {}
B.php
<?php require_once 'A.php'; class B extends A {}
C.php
<?php require_once 'B.php'; new B();
0919904
2010/07/13(火) 10:11:14ID:???ありがとうございます。
クラス定義する時、どのファイルが必要か分からないようにしたいんです。
フレームワークのように、柔軟に作ったファイルが読み込まれるような。
オートローディングは使っているのですが、
PHP4に対応させたい場合、どうすればいいかと思いまして。
また、918さんのような書き方もB.phpを各ファイルに書かなくてはいけず、
効率が悪いと思います。
0920nobodyさん
2010/07/13(火) 10:26:14ID:???俺も困ったけど諦めた。
0921nobodyさん
2010/07/13(火) 10:32:32ID:???0922904
2010/07/13(火) 10:35:05ID:???捨てても良いかもしれませんね。Class定義しにくいし。
オートローディングでやります。
0923nobodyさん
2010/07/13(火) 20:22:51ID:hmJ3ix43xmlのエレメントを再帰的に配列に格納したいと思いますが、
いい案が思い浮かびません。
xsltのように捜索してテンプレートにマッチさせ値を取得できればと思っています。
xpathを利用しても、取り出す要素は固定化してるし。
何かいい方法はありませんでしょうか。
0924nobodyさん
2010/07/13(火) 20:51:27ID:???$array = Zend_Json::decode(Zend_Json::fromXml($xml, true));
0925923
2010/07/13(火) 22:32:14ID:hmJ3ix43さすがに、アトリビュートも取得する方法はありませんでしょうか。
一応取得時にarrayでなく、objectも指定しましたがアトリビュートの値までは
取得できませんでした。
0926nobodyさん
2010/07/13(火) 23:06:59ID:???0927923
2010/07/14(水) 01:19:28ID:ez+KFUZ4ありがとうございました。
0928nobodyさん
2010/07/14(水) 08:49:45ID:XR87xhsM$b = '$a = "あいうえお"';
var_dump($b);
$aの変数を取り出す方法はありませんでしょうか。
0929nobodyさん
2010/07/14(水) 09:37:02ID:???$b = $a.'="あいうえお"';
じゃないのか?
シングルクォートで囲んでたら文字列扱いされるよ
0930nobodyさん
2010/07/14(水) 09:42:02ID:XR87xhsMレス数が900を超えています。1000を超えると表示できなくなるよ。