【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等)・フレームワークは各該当スレへ
0802nobodyさん
2010/07/04(日) 20:28:54ID:???で、issetでチェックしてあれば、ショートサーキットで後ろの評価しないんで・・・
0803nobodyさん
2010/07/04(日) 21:59:15ID:lkrZPMsoすいませんが、定数の定義付けってdefine("定数名","定数の値") でなくとも
できるのでしょうか?
どうしてこういう書き方をしているのかご教授お願いいたします。
0804nobodyさん
2010/07/04(日) 23:07:11ID:???0805nobodyさん
2010/07/05(月) 01:21:12ID:kve1q94Kclass Main extends Sub
{
public function __construct()
{
echo $this->test;
}
}
abstract class Sub
{
public function __construct()
{
$this->test = 1;
}
}
$ob = new Main;
というコードを書いたのですが、何も出力されません。
イメージ的には継承されたSubの値がMainに反映されて
結果が表示されると思ったのですが、継承元でconstructは無理なのでしょうか?
0806nobodyさん
2010/07/05(月) 02:01:53ID:???子クラスでコンストラクタを定義した場合は
明示的に parent::__construct() で呼ぶ必要がある
0808nobodyさん
2010/07/05(月) 05:10:09ID:???0809nobodyさん
2010/07/05(月) 05:13:11ID:???揚げ足で悪いが未入力じゃないというのは語弊がある
正しくは存在し且つNULL以外で初期化されている変数だと思う
0811nobodyさん
2010/07/05(月) 12:23:16ID:???0812nobodyさん
2010/07/05(月) 12:54:33ID:???==による緩やかな比較の欄どぞ
http://php.net/manual/ja/types.comparisons.php
0813nobodyさん
2010/07/05(月) 13:26:37ID:E/YNQXWp}
else {
echo "titleが未入力ですよ";
}
未入力チェックってこういうことだと思うんだけど、
"0"の場合に未入力と判定されちゃわない?
質問になってしまったのでID出し。
0814nobodyさん
2010/07/05(月) 14:01:03ID:???0815nobodyさん
2010/07/05(月) 14:36:41ID:???0816nobodyさん
2010/07/05(月) 15:00:30ID:???0817nobodyさん
2010/07/05(月) 15:06:22ID:???される
それをやりたいなら
if(isset($_POST["title"]) && $_POST["title"] != "") {
}
とするべき
0818nobodyさん
2010/07/05(月) 15:06:31ID:???もよく見るけど、あれと == "" とは違うの?
0820nobodyさん
2010/07/05(月) 15:13:38ID:???0821nobodyさん
2010/07/05(月) 15:15:29ID:???is_nullをいつも使っているんだが
0822nobodyさん
2010/07/05(月) 15:18:34ID:???!== とか === 使えって。
== NULL って、 false でも 0でも 空の配列でも "" でも 通るぞ。
0823nobodyさん
2010/07/05(月) 15:25:57ID:???0824nobodyさん
2010/07/05(月) 16:03:47ID:???0825nobodyさん
2010/07/05(月) 16:08:53ID:???0826nobodyさん
2010/07/05(月) 16:33:32ID:???0827nobodyさん
2010/07/05(月) 16:36:38ID:???0828nobodyさん
2010/07/05(月) 16:38:39ID:???0829nobodyさん
2010/07/05(月) 16:42:07ID:???0830794
2010/07/05(月) 17:07:39ID:XGgM750L$_POST["title"]がtrueを返すときの条件が比較表?みてもわからない;
http://www.phppro.jp/school/phpschool/vol13/2
今このスケジュール表のプログラミングしてるんですが、このページの下のほうにある
<dl>
<dt><label for="schedule-title" id="label-title">タイトル
</label></dt>
<dd><input type="text" name="title" id="schedule-title"
value="<?php print(htmlspecialchars($_POST["title"],
ENT_QUOTES)); ?>" /></dd>
<dt><label for="schedule-body" id="labe-body">内容</label></dt>
<dd><textarea name="body" id="schedule-body">
<?php print(htmlspecialchars($_POST["body"], ENT_QUOTES)); ?>
</textarea>
</dd>
</dl>
これは正しいのですか?
何回試してもエラーが出てしまいます。
Undefined index: title in <b>C:\Apache2.2\htdocs\schedule_edit.php</b>
on line <b>121</b><br />
<br />
<b>Notice</b>: Undefined index: body in <b>C:\Apache2.2\htdocs
\schedule_edit.php</b> on line <b>125</b><br />
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のネストの上限ってあります?
後者が内部的にはネスト扱いとなるなら、関係あるのかなーと思って。
レス数が900を超えています。1000を超えると表示できなくなるよ。