【PHP】下らねぇ質問はID出して書き込みやがれ 85
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/06/15(月) 22:53:52ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 84
http://pc11.2ch.net/test/read.cgi/php/1240835951/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0301nobodyさん
2009/07/02(木) 17:39:03ID:???0302300
2009/07/02(木) 18:00:44ID:???自己解決。
いや、解決してないけど。
debパッケージ版のソースと見比べたら、
php_filter_validate_email内の正規表現が変わっていました。
実際に両者の正規表現で直接マッチするか試したら、
5.2.10のソース版の方だけ'test..@example.jp'がマッチすることを確認できました。
Cはよくわからないのでこれ以上追えませんでしたが。
0303nobodyさん
2009/07/02(木) 18:51:38ID:???debianパッチとか見てみた。
> + - CVE-2007-1900/MOPB-45 ext/filter Email Validation Vulnerability
これじゃね? どうもタイムスタンプとか見る限り、debianのメンテナが、
PHPの新版が出るのを待って、そこからバックポートのパッチを作る時間を
惜しんで自分で作ったパッチと、PHPの中の人が作ったパッチとが違うようだ。
危険度highのセキュリティフィックスだし、本家の更新を待たずに独自パッチ作るのは
良いと思うけど、振る舞いが本家と異なるのはダメダ
さぁDebianメンテナにケツを持ち込むんだ。
0304300
2009/07/02(木) 19:24:29ID:???サンクス。
どうも修正原因は2009-02-02のこれっぽい。
http://bugs.php.net/bug.php?id=47282
内容がちょっとおかしいですけど。
e.x.a.m.p.l.e.@example.com
や
a@com
が通るように修正されたらしい。
自分的にはdebin版(というか5.2.8以前の版?)の動作を期待していました。
> This bug has been fixed in CVS.
と、バグとして処理されているので、それが本来の振る舞いってことでしょうか。
単にFILTER_VALIDATE_EMAILが自分の期待していたものとは違ってたってことですかね...。
lenny版(5.2.6)のソースから件の正規表現を持ってきて使うことにします。
0305nobodyさん
2009/07/02(木) 19:40:17ID:???0308nobodyさん
2009/07/02(木) 20:48:04ID:???0310nobodyさん
2009/07/02(木) 23:03:27ID:FF1NZIiG毎日、午前8時に自動的にmail関数を実行する事は
可能でしょうか?
もし、不可能なら、どんな言語・技術が必要でしょうか?
0312nobodyさん
2009/07/03(金) 00:05:48ID:???0313nobodyさん
2009/07/03(金) 01:42:59ID:O2VxaChrglobal $config;
}
とすると関数外の変数をグローバル変数にして取得することが出来ます。
では、classの場合はどう書けばいいのでしょうか?
0314nobodyさん
2009/07/03(金) 01:47:49ID:DH30LmcYなんとか出来そうです
@メールを送信する度に送信日付をdat書き込み
↓
Aアクセス毎に送信日付と現在の日付を比較
↓
B一致しなければメール送信
↓
@へ戻る
0316nobodyさん
2009/07/03(金) 02:08:04ID:O2VxaChrクラスの関数内でglobalを宣言すればいけます。
ただ、それだとクラスの意味はないと思い質問しました。
メンバ変数をグローバル変数にするような事が出来ればいいのですが・・。
0317313
2009/07/03(金) 02:12:24ID:O2VxaChrclass class1{
function class1{
global $config;
$this->config = $config;
}
}
0318nobodyさん
2009/07/03(金) 04:35:44ID:???0319nobodyさん
2009/07/03(金) 06:44:13ID:???普通に受け渡しすりゃいいのに
0320nobodyさん
2009/07/03(金) 09:17:30ID:0BOHJIMnこれってGESTパラメータを受けてXMLを返せばOKってことよね?
0321nobodyさん
2009/07/03(金) 09:18:49ID:0BOHJIMn0322313
2009/07/03(金) 14:10:56ID:O2VxaChrですよねw
>>319
$configはサイト設定に値する配列なのですが、
普通に受け渡しをすると、毎回、$obj->config = $config
のような指定を書かなければいけないし、クラス内の関数じゃなくて
普通のユーザ関数内で使いたいときもあります。
その時にグローバル変数化しておくとどのページでも参照できて便利なんです。
なので、もう一つ上の書き方・効率の良いソースはないかと思い、質問しました。
0323nobodyさん
2009/07/03(金) 15:04:35ID:???http://framework.zend.com/manual/ja/zend.config.html
0325nobodyさん
2009/07/03(金) 23:54:14ID:???static変数はほぼグローバル変数と同じ感じで使える。
http://jp2.php.net/manual/ja/language.oop5.static.php
class Config{
static $hoge;
}
Config::$hoge = 'hogee';
echo Config::$hoge;
0327nobodyさん
2009/07/04(土) 01:11:23ID:LBMY5xnE同じページの最初にジャンプって
出来ますか?
headerは何も書いてないときしか
使えないんですよね?
0328nobodyさん
2009/07/04(土) 01:25:38ID:???0329nobodyさん
2009/07/04(土) 04:06:05ID:???出しちゃったらあとはできちゃったのを待つしかないように・・
ページの途中で、<img onload="やりなおし関数"> を仕込むとかw
チラっとページが見れたと思ったらまたリロード。img の中身はエロ画像な。
0330nobodyさん
2009/07/04(土) 06:51:21ID:???リロードさせたいって意味?
0331nobodyさん
2009/07/04(土) 09:07:22ID:tI0ECBzn0332nobodyさん
2009/07/04(土) 09:14:08ID:???最終出力する関数をつくって、その中で最終的なヘッダを操作するようにすればいい
関数名はコンドームで
0333nobodyさん
2009/07/04(土) 10:58:00ID:???0334nobodyさん
2009/07/04(土) 11:12:34ID:???プログラムの構造化で真っ先に取り組むべきは、画面出力箇所とロジック部分の切り分け(VとMCの分離)なわけだが、そこからしてできていない。
最低でも、echoする箇所は1つの関数内にまとめろ。
んで、その中ではループ処理とisset($var)やif($var)レベルの処理以上のロジックを扱わないようにしろ。
>333
そこまで限定されるとフレームワークっつうよりパッケージソフトだな。もしくはコンサルウェア。
PHPにあるかどうかは知らんが、あったら書いた奴の根性を尊敬するわ。
0335nobodyさん
2009/07/04(土) 16:05:04ID:???http://jp2.php.net/manual/ja/function.header-remove.php
0336nobodyさん
2009/07/04(土) 20:33:01ID:LBMY5xnEいろいろな助言ありがとうございます。
説明が下手でしたね…
echoというか、本当はソケット関数で
通信を行って、5秒後に再度同じ処理を
初めから行いたかったんです。
その場合もheader_removeでいいんでしょうか?
0337nobodyさん
2009/07/05(日) 03:42:21ID:???テキストとして保存するという処理を行うとメモリ容量エラーで終了しません。
50KBぐらいだと普通に処理できるので設計の問題ではないと思われます。
なにか別の方法があるでしょうか?
0338337
2009/07/05(日) 03:44:06ID:S+gPtyj70339nobodyさん
2009/07/05(日) 04:44:02ID:???通常、8Mだから、そんなことやってるとメモリ制約に
ひっかかる可能性がある。php.ini の値を自分で変更
できない環境なら、小出しに中間ファイルなど使って
やっていくしかないかも。
0340nobodyさん
2009/07/05(日) 14:59:44ID:7afKnISw複製した同一ファイルにアクセスがあるのとでは
前者の方が負荷は高くなりますよね?
前に、「PHPでのアクセスならファイルを分けても負荷は変わらない」
と言うようなことを聞いたので、どうだったかな?っと思い質問しました。
0341nobodyさん
2009/07/05(日) 15:13:27ID:???0342nobodyさん
2009/07/05(日) 15:13:41ID:???0343nobodyさん
2009/07/05(日) 15:51:45ID:eOwA/AWQ$contents2 = "ABCDE\n";
file_put_contents(file.txt,$contents1);
file_put_contents(file.txt,$contents1);
とやると、file.txtにはABCDEしか入ってないんですが、
なんでabcdeは入っていないんでしょうか?
0344nobodyさん
2009/07/05(日) 15:56:31ID:???0345nobodyさん
2009/07/05(日) 16:12:10ID:eOwA/AWQ自分では、\nで改行されているので、
上書きされないはずと考えてしまうのですが?
0346nobodyさん
2009/07/05(日) 16:20:12ID:???0347nobodyさん
2009/07/05(日) 16:21:13ID:???>filename が存在しない場合はファイルを作成します。
>存在する場合はそのファイルを上書きします。ただし FILE_APPEND フラグが設定されている場合は別です。
0348nobodyさん
2009/07/05(日) 16:36:03ID:eOwA/AWQわかりました、ありがとうございました!
0349nobodyさん
2009/07/05(日) 18:06:39ID:???前者のほうが僅かに軽くなる。
ただ、体感できるレベルの差ではないので気にしなくていい。
0350nobodyさん
2009/07/05(日) 23:44:16ID:eOwA/AWQ|a|a
|a|a
見たいな感じで、
文字の前に'|'を入力したら表になるようなプログラムを作りたいのですが、
<table></table>をどう処理していいかわかりません。
なにかいいアイディアはないでしょうか?
ちなみにexplodeでtxtファイルから一行ごとに取り出し、
正規表現を使って先頭の'|'を判断し、それをexplodeで分割して、
<td></td>の間に表示するというやり方で作っています。
0351nobodyさん
2009/07/06(月) 00:14:41ID:???なんでそんな入力になるの?
なんでもいいなら、FCKやMCEエディタ入れて、
ユーザーにHTML入力させればいいじゃない。
0352nobodyさん
2009/07/06(月) 00:18:32ID:???0353nobodyさん
2009/07/06(月) 00:52:20ID:MPcI6fKXweb上で使えるメモ帳みたいなものを作りたいので
>>352
preg_replaceですか?
確かに使えそうですね!やってみます!
ありがとうございました!
0354nobodyさん
2009/07/06(月) 02:47:50ID:???で、行頭に<tr><td>
パイプに</td><td>
行端に</td></tr>
終わりに</tbody></table>
explode でいいんじゃねーの?
何が難しいのか分からん。
0355nobodyさん
2009/07/06(月) 16:41:05ID:qPA0wc5K何か問題あったりする・・・よなorz
0356nobodyさん
2009/07/06(月) 16:47:44ID:???0357nobodyさん
2009/07/06(月) 17:05:31ID:???0358nobodyさん
2009/07/06(月) 17:07:03ID:qPA0wc5Kしまったそれだwwww
とりあえず
find ./ -name *.php | xargs chmod 0775
で一括変換してくるよありがとう
0359nobodyさん
2009/07/06(月) 17:22:16ID:???0360nobodyさん
2009/07/06(月) 17:24:15ID:???0361nobodyさん
2009/07/06(月) 17:24:37ID:qPA0wc5K./(ドットスラッシュ)なので大丈夫です><。
見えづらくてごめんよー
0362nobodyさん
2009/07/06(月) 19:30:04ID:Zv6if7aohttp://say-move.org/
0363nobodyさん
2009/07/06(月) 20:07:29ID:???他にjavascript、能力、やる気なども必要。
ちなみに、何か「できないかも」と思う機能があるの?
そういう懸念があるのならそれも併記すべき。
そういうことすら判らないのでとりあえず聞いてみた、
ということなら、あなたには難しいんじゃないだろうか。
0364nobodyさん
2009/07/06(月) 20:29:52ID:Zv6if7aoありがとうございます
javascriptも勉強してみます
0366nobodyさん
2009/07/06(月) 22:19:16ID:???・コンテンツごとのユーザーアップロード・コメント管理
→CMS全般・RDBMS
・動画コンテンツの再生制御
→主流はFlash。ただFlashだとツールが高いので、
SilverLightを勉強するとよろし。FLVは使えないけど、
WMVが使える。
CMSをPHPベースのものにすれば、カスタマイズする
ときにPHPが使えるよ。MT等、静的HTMLを出力する
タイプのCMSだったら、ベースがPerlでもPHPでのコン
テンツ開発ができる。
0367nobodyさん
2009/07/07(火) 10:17:56ID:???0368nobodyさん
2009/07/07(火) 11:42:17ID:???早いしわかりやすい気がするのは僕だけですね
0369nobodyさん
2009/07/07(火) 12:04:41ID:???開発ツールと同期させたり、WMVストリーミングと組み合わせると
MSのサーバー製品が必要になる。けど、Flashみたいな使い方なら
Win鯖なくてもおk
>>368
お決まりのテンプレートが自分の手中にあればいいけど。
ゼロから開発ならCMS使ったほうがいいでしょ。製品によっては、
コーディングを最小限にしてテンプレートと設定だけで実現できるし。
0370nobodyさん
2009/07/07(火) 12:09:35ID:YRT2t6kR0371nobodyさん
2009/07/07(火) 12:24:36ID:???http://www.microsoft.com/japan/msdn/vstudio/Express/
Visual Web Developer Express edition + Silverlight Tools
http://www.eclipse4sl.org/update/
Eclipse + Eclipse4SL
FlashだとSuzukaとかあるけど、使いであるんだろうか。
0372nobodyさん
2009/07/07(火) 12:59:47ID:2bX5okbx/hoge/fuga.php?id=5
で、
/hoge/fuga/id5.php
を表示させたいのですが(動的URLで静的ページを表示)
RewriteRule ^/hoge/fuga\.php?id=5$ /hoge/fuga/id5.php [L]
としても表示してくれません
記述方法が間違っているのでしょうか・・・
0373nobodyさん
2009/07/07(火) 13:39:18ID:???あとRewriteCondは正しいかとか、そもそもRewriteLogはどうなってんのとか。
0374nobodyさん
2009/07/07(火) 13:44:40ID:2bX5okbx?もエスケープしてみましたが同じでした。
RewriteLogはどこで確認すればよいのでしょうか?
0375nobodyさん
2009/07/07(火) 13:50:34ID:???0376nobodyさん
2009/07/07(火) 21:30:03ID:q2UkOan/知りたいです。
session.cookie_lifetimeの値を0にすればブラウザを閉じるまで
セッションが継続することは分かったのですが、どうもこれだけ
ではダメなようです。
session.gc_maxlifetimeの値も関係しているようですが実際どうすれば
永続化できるかが分からないです。
0377nobodyさん
2009/07/07(火) 21:37:39ID:???0378nobodyさん
2009/07/07(火) 22:41:45ID:???0379nobodyさん
2009/07/07(火) 22:55:20ID:???いつまで経っても処理が完了しないページなんて糞以外の何者でもないよな。
0380nobodyさん
2009/07/08(水) 11:39:13ID:???>session.cookie_lifetimeの値を0にすればブラウザを閉じるまで
>セッションが継続する
session.cookie_lifetimeはクライアントが保持するセッションクッキーの生存期間。
session.gc_maxlifetimeサーバー側に保管されているセッションデータの生存期間。
※サーバーがsession.gc_maxlifetimeでごみ掃除するよう設定されていれば、だが。
なお、セッションは永続化すべきでない。
セッションハイジャックのリスクについて調べてみよう。
session_regenerate_idも忘れるな。
セッションハイジャックされても困らないようなものなら、単に寿命を長くしたクッキーに保管すれば良い。
0381nobodyさん
2009/07/08(水) 17:40:20ID:Y5N6FZ0y%%って何?
0382nobodyさん
2009/07/08(水) 17:45:38ID:???0383nobodyさん
2009/07/08(水) 17:58:01ID:Y5N6FZ0y拡張子phpのファイルで%%の表記を見たので気になりました
0384nobodyさん
2009/07/08(水) 18:09:55ID:???0385nobodyさん
2009/07/08(水) 18:29:58ID:Y5N6FZ0yデータベースとなにか関係がありそうな感じのコードになっているのですが…
伝わりにくい説明で申し訳ないです
0386nobodyさん
2009/07/08(水) 18:54:20ID:???0387nobodyさん
2009/07/08(水) 19:01:09ID:???mysql と php で、mysql 内の日付関数使うのに。
sql文の条件更新は sprintf でやっているから。
0388nobodyさん
2009/07/08(水) 19:19:21ID:???mb_send_mailでメールを送り、メールアカウントが存在せずに送れなかった、
等の細かいエラーステータスを取得することはできますか?
もし、PEARやZend Framework等でできるのであれば、それでも構いません。
0389nobodyさん
2009/07/08(水) 19:20:20ID:Y5N6FZ0yひょっとしてSQLの命令文てphpに直接書いて問題なく通るんですか?
>>387
日付関数とは違うと思います
なんというか…
DBから読んだ情報をそのまま表っぽく出力させていた感じでした
0390nobodyさん
2009/07/08(水) 19:23:16ID:???0391nobodyさん
2009/07/08(水) 19:25:35ID:Y5N6FZ0y今それが出来る環境ではなかったので…
申し訳ないです
0392nobodyさん
2009/07/08(水) 19:41:47ID:???どうして目を通そうとは思わないんだろうな。
0393nobodyさん
2009/07/08(水) 20:45:39ID:foGDI8Y6$str1 = "a,b";
$str2 = "a";
$str3 = "b";
$arr1 = array( $str1 );
$arr2 = array( $str2 , $str3 );
echo var_dump( $arr1 );
echo var_dump( $arr2 );
?>
$arr1を$arr2のようにarrayするにはどうすればいいかアドバイスください
0394nobodyさん
2009/07/08(水) 20:48:23ID:foGDI8Y6結果
array(1) {
[0]=>
string(3) "a,b"
}
array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
}
0396nobodyさん
2009/07/08(水) 21:03:17ID:foGDI8Y6できました
ありがとうございます
0397nobodyさん
2009/07/08(水) 22:28:52ID:E0xRJmX/5.2.10はあるのですが、5.3が見つかりません。。
0398nobodyさん
2009/07/09(木) 00:07:17ID:???0399nobodyさん
2009/07/09(木) 01:30:42ID:???SELECT * from TableName where Cullum1=? and Cullum2=?
のようなクエリ文から、プリペアドステートメントを使いながら、レコード数(行数)を取得する方法はないでしょうか?
PDO::prepareを使うと、PDOStatement->rowCountから、SELECT文の行数を返さなくなってしまい、
PDO::queryを使うと、プレースホルダが使えないため、SQLインジェクションに対して弱くなってしまいます。
やはり、PDO::queryとmysql_real_escape_stringを使って、行数を取得するしかないでしょうか?
0400nobodyさん
2009/07/09(木) 01:35:11ID:???0401nobodyさん
2009/07/09(木) 01:45:51ID:???PDOStatement::rowCount() は 相当する PDOStatement オブジェクトによって
実行された 直近の DELETE, INSERT, UPDATE 文によって作用した行数を返します。
関連する PDOStatement によって実行された直近の SQL ステートメントが SELECT 文の場合、
いくつかのデータベースは文によって返された 行数を返すかも知れません。
しかしながら、 この振る舞いは全てのデータベースで保証されていません。
さまざまな場所で使用するアプリケーションでは、 これに頼ってはいけません。
http://www.php.net/manual/ja/pdostatement.rowcount.php
mysql で LIMIT なら calcfoundrows() かな。
全部持ってきてるなら php でカウントの方が早いんじゃね
■ このスレッドは過去ログ倉庫に格納されています