【PHP】下らねぇ質問はここに書き込みやがれ 30
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/10/05(木) 01:38:25ID:y1WWhz/pまず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0076nobodyさん
2006/10/06(金) 08:49:39ID:???でも独学ならそんなに無理して使う必要ないけどね。
最初からオブジェクト指向でやってる人なら無いとやってらんないだろうけど。
0078nobodyさん
2006/10/06(金) 10:23:12ID:???フレームワークを使ってみるとか。
今はsymfony、cakephp、zend frameworkが有力らしいです。某スレによると。
0079nobodyさん
2006/10/06(金) 10:43:47ID:???0080nobodyさん
2006/10/06(金) 11:00:41ID:???受け取ります。迷惑メールにならない方法ってありますか?
0083nobodyさん
2006/10/06(金) 12:14:24ID:???PHPのsession使うのはセキュリティの関係上DBにしてたのですが、
PHPをCGIとして動作させる場合、同様に共用レンタルサーバーでの
sessionの管理方法として、
DB、ファイル、どちらか優劣を決めることはできるでしょうか?
0085nobodyさん
2006/10/06(金) 14:09:59ID:???下のだと、たまに4文字しか抜き出せなかったりします。
何かお薦めの方法を教えてください。
$mictime = microtime();
$registdate = substr($mictime,2,5);
0086nobodyさん
2006/10/06(金) 14:15:50ID:???var_dump(microtime());
とかやって、どんな出力するのか確認してごらん。
で、マニュアルを読む。
http://www.php.net/manual/ja/function.microtime.php
0087nobodyさん
2006/10/06(金) 14:43:00ID:???5文字ってことは英数字でもいいの?
だったら
$microtime = md5($microtime());
$registdate = substr($mictime,0,5);
とかが簡単
008887
2006/10/06(金) 14:44:24ID:???$microtime = md5($microtime());
じゃなくて
$mictime = md5(microtime());
ね
0089nobodyさん
2006/10/06(金) 14:45:12ID:???http://www.thinkit.co.jp/free/news/0610/6/
0090nobodyさん
2006/10/06(金) 14:59:52ID:???ありがとうございます!
数字で取得したかったので、87さん、すいません。
substr($mictime,2,5)で取り出しても、最初の数が0だと抜き出す数字は
4桁になるのを、前に数字をつけて解決することにしました。下の
ような感じで取得することにしました。
$registdate="5".substr($mictime,2,5)
0091nobodyさん
2006/10/06(金) 15:02:26ID:???押したことになってしまいますが、これを無効にする方法ってありますか?
0093nobodyさん
2006/10/06(金) 17:19:11ID:???データ量が多くなるとパフォーマンスは落ちますでしょうか?
0094nobodyさん
2006/10/06(金) 18:22:26ID:???0095nobodyさん
2006/10/06(金) 18:46:31ID:???そうなの?
$_SESSION['hoge']とかで呼び出したときに、
その部分だけファイルからメモリに読み込まれるんだと思ったが・・・
0097nobodyさん
2006/10/06(金) 23:15:41ID:???効率も良かったりするけどな。(その代わりディスク容量食うけど)
残念ながらPHPのはファイルに$_SESSION配列を丸ごとシリアライズで格納、
って方式だから$_SESSIONの中身が太るとパフォーマンス落ちるよ。
0099nobodyさん
2006/10/07(土) 00:19:55ID:prmnYVal検索結果が配列の先頭にしか格納されません。
全ての検索結果を格納するにはどうすれば良いでしょうか?
お力添え、宜しくお願い致します。
環境 Win XP, PHP 5.1.4, Apache 2.0
$str ="2004 2005 2006";
$ary = array();
if (mb_ereg("[0-9]{4}", $str, $ary)) {
echo "[0]".$ary[0]."<br />";
echo "[1]".$ary[1]."<br />";
echo "[2]".$ary[2];
}
実行結果
[0]2004
[1]
[2]
0101nobodyさん
2006/10/07(土) 00:58:51ID:???$str ="2004 2005 2006";
$ary = array();
if (mb_ereg("[0-9]{4}", $str, $ary)) {
print_r($ary);
}
// ereg()は1回マッチしたら検索を止める。
// だから$aryに"2004"だけ入れてTRUE返して終わり。
// >>99の方法では$ary[1]や$ary[2]は存在しないので未定義としてエラーが出ているはず。
// 結果:
// Array ( [0] => 2004 )
echo "<br />\n";
// マッチするものを全部出す場合はpreg_match_all()とかを使う。
preg_match_all("/[0-9]{4}/", $str, $ary);
print_r($ary[0]); // $ary[0]は正規表現全体(この場合は4桁の数字)にマッチした部分でできた配列である。
// 結果:
// Array ( [0] => 2004 [1] => 2005 [2] => 2006 )
0102nobodyさん
2006/10/07(土) 01:11:32ID:???ありがとうございます、お陰さまで期待通りに動きました。
eregは1回しか検索してくれないのですね./ ,' 3 `ヽーっ
0104nobodyさん
2006/10/07(土) 01:26:37ID:???0105nobodyさん
2006/10/07(土) 02:05:48ID:JIECxGar解説サイトはありますか?
0106nobodyさん
2006/10/07(土) 02:23:27ID:???0107nobodyさん
2006/10/07(土) 02:27:00ID:JIECxGarごめんなさい、CSVファイルからでした ^^;
0108nobodyさん
2006/10/07(土) 03:03:47ID:???0109nobodyさん
2006/10/07(土) 03:13:54ID:???0110nobodyさん
2006/10/07(土) 03:15:01ID:JIECxGar日本語含みます。EUC-JPです。
0111nobodyさん
2006/10/07(土) 03:26:17ID:???0112nobodyさん
2006/10/07(土) 12:35:56ID:2Dg2VxQNそこでsessionについて質問があります。
例えば、idとパスワードで認証が行われるとします。
それが、DBに存在するものと一致すればログイン成功
その時にsession_idがクライアント側に渡される
次にsession_idがなければアクセスできないページがあると
isset()で確かめて認証するとします。
この場合だとsession_idを持っている=会員というところまではわかるのだと思いますが
どの会員かは、わからりませんよね?
ひとりひとり個人として認証する場合にはsession_idを渡すときに同時に
DBにもsession_idを登録しておきそれと一致するものを探すと言う作業をしなければ
ならないのでしょうか?
よくわからない日本語となっていますがよろしくお願いします。
0113nobodyさん
2006/10/07(土) 12:56:43ID:???0114nobodyさん
2006/10/07(土) 14:11:31ID:???いつも
$i =0;
while($i < count($hoge)){
}
としているのですが、
もっと簡単な記述方法ないでしょうか?
whileのなかで、さらに繰り返すとき
$i2 = 0;
とかしなければならなくていつもゲッソリするです
0115(^ω^)
2006/10/07(土) 14:21:43ID:???0116nobodyさん
2006/10/07(土) 16:31:02ID:???$i
ときたら次は
$j
だろう。
0117nobodyさん
2006/10/07(土) 17:05:05ID:???できないんでしょうかね?
エクセルに貼り付けるような感覚で。
できたらすごい便利だと思いませんか?
0118nobodyさん
2006/10/07(土) 17:26:46ID:???それが便利かどうかはともかく、可能か不可能かと言われれば余裕で可能です。
そしてそれを自動化したものの一種がいわゆる『きんたま』と呼ばれるものです。
0119nobodyさん
2006/10/07(土) 17:27:52ID:???PHPだけで実現するとなるとちょっと難しいかも知れんね。
0120nobodyさん
2006/10/07(土) 17:35:03ID:???URLに日本語がそのまま表示されたり、その語が削除されたりします。
日本語で検索をするときは、urlencodeを使うべきなのでしょうか?
解決策を教えてください。
0121nobodyさん
2006/10/07(土) 17:52:29ID:???0122nobodyさん
2006/10/07(土) 18:03:58ID:???RFCで調べても、わからないです。もう少しヒントを下さい
0123nobodyさん
2006/10/07(土) 18:36:40ID:???0124nobodyさん
2006/10/07(土) 19:22:02ID:???受け取った値をmysql_real_escape_stringをしないとセキュリティは危険なのでしょうか?
$keyword = $_GET[keyword];
if (get_magic_quotes_gpc()) {
$keyword = stripslashes($keyword);
}
$keyword = mysql_real_escape_string($keyword);
0125nobodyさん
2006/10/07(土) 19:40:28ID:???それで十分な場合もあるし、不十分な場合もあるし、十分すぎる場合もある
0126nobodyさん
2006/10/07(土) 19:44:56ID:???0127117
2006/10/07(土) 20:15:12ID:+DkGqdImそれってウィルスのことですか?
詳しく教えてくださいな。
0128nobodyさん
2006/10/07(土) 20:56:36ID:???ありがとうございます。その後の使い方は、WHERE comment = $keywordみたいに
使って、当てはまるものを抽出して、HTML上に表示させています。
この場合は平気でしょうか?
0131nobodyさん
2006/10/08(日) 00:31:23ID:???0132nobodyさん
2006/10/08(日) 00:44:39ID:???ありがとうございます。じゃあ、WHERE comment = '$keyword' こんな感じで
平気ですよね!?ありがとうございます。
あと、ついでみたいで悪いのですが、
$con = mysql_connect($DBSERVER〜);
$selectdb = mysql_select_db($DBNAME〜);
$sql=SELECT〜
みたいな感じで、毎回DBを使うときは、$conと$selectdbを書いているのですが、
これは、一つのファイルにまとめて、インクルードして
$sqlだけ、個々のページに記述するのが普通なのでしょうか?
0133nobodyさん
2006/10/08(日) 00:50:47ID:???DBクラスや関数等を作るか
PEARのDBとかを使ったりするのが殆どだと思うけど
そのやり方で問題無いなら別にそれでも良いんじゃない?
0134nobodyさん
2006/10/08(日) 02:28:15ID:???これ認証が必要なSMTPは無理ですか?
0135nobodyさん
2006/10/08(日) 07:05:44ID:???013671
2006/10/08(日) 07:56:30ID:???今度は文字コードの件ではまってます。
SQL Serverでは、nvarcharのカラムのデータを、
PHPで取ってくるとShift-JISになります。
PHPではUTF-8で処理したいのですが、どうするのが一番良いでしょう?
DBから取得するごとにmb_convert_encodingでShift-JIS -> UTF-8
するのでしょうか?
0137nobodyさん
2006/10/08(日) 09:05:00ID:oH20wXBjシフト-JISではいけないのですか?
0139137
2006/10/08(日) 09:21:53ID:oH20wXBjなるほど、文字化けという重要な問題が原因だったのですね。
ありがとうございました。
0140nobodyさん
2006/10/08(日) 10:49:17ID:???現象としては文字化けで済む場合もあるが、
本質はPHP(ZendEngine)がSJISのソースを実行できるようになっていない、
またSJISはEUC-JPなどと違ってきちんとSJISを考慮していない
(ASCII前提のものとか)と、適正な処理ができないコードが混じっているため。
必要なら別にSJISで書いたって構わないよ。
・PHPの設定で、ZendEngineに渡す前にSJISを解釈できる文字コードに変換するようにしておく
(ZendEngineから渡された文字コードをSJISに変換する逆方向も)
・その変換処理によるパフォーマンスやコストに目をつぶれる
ならば。
0142nobodyさん
2006/10/08(日) 11:54:22ID:???0143nobodyさん
2006/10/08(日) 12:04:16ID:???0144nobodyさん
2006/10/08(日) 13:32:33ID:???0145nobodyさん
2006/10/08(日) 14:45:45ID:???0146nobodyさん
2006/10/08(日) 15:05:32ID:???0147nobodyさん
2006/10/08(日) 17:49:43ID:???0148nobodyさん
2006/10/08(日) 19:19:40ID:???結局何にしようが文字化け怒る時は怒るよ
0149nobodyさん
2006/10/08(日) 19:31:53ID:???なめてんのかこるるるるるるあああああああああああああ!!!!!!!!!!!!!!!!!!!
0150nobodyさん
2006/10/08(日) 19:43:02ID:???下のようにindex.phpのあとに、/〜って書き込むと、index.phpがバグって
表示されます。これはどうすれば良いのでしょうか?セキュリティが
かなり危険だと思われるのですが、アドバイス下さい。お願いします。
http://localhost/php/index.php/aaa〜
0151nobodyさん
2006/10/08(日) 19:50:11ID:???0152nobodyさん
2006/10/08(日) 19:58:07ID:???0153nobodyさん
2006/10/08(日) 20:10:09ID:???これは相対パスで指定してるからでしょうか?
というか、これは危険なのでしょうか?
普通は、そのファイルは存在しません、みたいな表示をさせるのでしょうか?
0154nobodyさん
2006/10/08(日) 20:23:59ID:???0155nobodyさん
2006/10/08(日) 20:27:46ID:???0156nobodyさん
2006/10/08(日) 21:07:06ID:???0157nobodyさん
2006/10/08(日) 21:25:10ID:???絶対path使え
これ /index.php/hoge だと
ブラウザにはディレクトリが違うという判断になるはず
0158nobodyさん
2006/10/08(日) 21:56:06ID:???0159nobodyさん
2006/10/08(日) 22:25:44ID:???のですが、いまいちわかりません。
今は下のようにしているのですが、これだとできません。
どうか教えてください。
ereg_replace('http://+[a-zA-Z0-9\.\-\=\/\%\$\?\&\_]*', "<a href ='\\0'>
<font color=ff0000>"."\\0"."</font></a>", $string)
0160nobodyさん
2006/10/08(日) 22:36:30ID:???0162nobodyさん
2006/10/08(日) 23:54:56ID:???ていうときには、全部一度にやらずに、分割してテストしながらやるといいと思うよ。
まず、http・・・にマッチする正規表現を調べる、これが第一段階。(replaceじゃなくてmatchするしないだけをしらべる)
第二段階は、リンクを張るやり方のテスト。簡単な文字、例えば、aaaを<a href="aaa">にreplaceするやりかたを調べる
第三段階で、その両者を合体させる。
0163nobodyさん
2006/10/08(日) 23:57:11ID:???0164nobodyさん
2006/10/09(月) 00:56:36ID:???http://www.amazon.co.jp/gp/product/4774126713/
↑この本とか読めば、全て解決する。
0165nobodyさん
2006/10/09(月) 01:02:06ID:???Apache:2.0.55
PHP:4.4.2
PHPファイル自身が、自分が表示されているURLを取得するにはどうすればよいでしょうか?
=HTTPとHTTPSで別々の処理をしたい時に、URLのスキーム(http://、https://等の部分)を取得して判別しようと考えています。
例)
http://www.example.com/check.php
https://www.example.com/check.php
check.php自身が、上記のような自分がページとして表示されている場合のURLを取得するには?
PHPマニュアルで、
ストリーム関数
http://www.php.net/manual/ja/ref.stream.php
ソケット関数
http://www.php.net/manual/ja/ref.sockets.php
を見てみましたが、URLを取得する関数があるのかよく分かりませんでした。
0166nobodyさん
2006/10/09(月) 01:11:28ID:???「$_SERVER SSL」とかでぐぐってみないかねー。
0167nobodyさん
2006/10/09(月) 01:17:31ID:mIjkQc8Ghttp://learning.no.land.to/php/s/ver0/s/check_ver002.phps
一応、入力したパス、記事番号が一致したら
「一致しました。」
と出力する処理が成功している辺り、
やはり問題なのは記事の削除に使っている
array_splice()関数なようなんです><;;
どこが悪いのか教えていただけたらうれしいです。
初心者丸出しの質問ですがお願いしますm(_ _)m
0168nobodyさん
2006/10/09(月) 01:19:15ID:???結局、現状何がどうなって困ってるんだ?
0169nobodyさん
2006/10/09(月) 01:30:54ID:???おk、順を追って考えてみよう
1.ログファイルを配列に読み込む
$lines = file(LOG_FILE);
2.行を削除
array_splice($lines,$i,1);
3.ログファイルを更新
ファイルへの書き出し処理はどこに書いてるんだ?
0170165
2006/10/09(月) 01:38:20ID:???アドバイスどうもありがとうございます。
とても助かりました。m(__)m
$_SERVERの項目をhttpページとhttpsページで見比べて、違う箇所を発見しました。
$_SERVER[SERVER_PORT] => 80 という部分も違いましたが、
$_SERVER[HTTPS] => on というそのものスバリのパラメータがあったので、とりあえずこれをSSLページ判別に利用してみます。
0171nobodyさん
2006/10/09(月) 01:58:44ID:???与えて、Aボタンが押されたら、名前変更、Bボタンが押されたら、メアド変更
みたいにしたいのですが、受けとるページで、if(isset($_POST[B])){}のように
書いてもAボタンのif文が実行されてしまいます。
どうすればいいでしょうか??教えてください。
0172nobodyさん
2006/10/09(月) 02:17:29ID:???受け取るページに、
print_r($_REQUEST);
と書いて、受け取っている値をチェックしてみよう。
ボタンがたくさんある方のページは、
(1)ボタン毎に<form>〜</form>で囲んで確実に違う動作にする
(2)JavaScriptでボタン毎に動作を違うものになるようにする
という方法があるんじゃないでしょうか?
0173nobodyさん
2006/10/09(月) 02:19:33ID:???if ( isset( $_POST[B] ) ) { }
の部分を
if ( !empty( $_POST[B] ) ) { }
に変えてみたら動作変わる?
0174nobodyさん
2006/10/09(月) 02:24:32ID:???ありがとうございます。
ボタン毎にformを設定しているのですが、何か変な挙動が。笑
print_r($_REQUEST);←を使って色々と頑張ってみます!
あと、もう一つだけお願いがあるのですが、enterキーを押しても
submitが押されたことになるのを止めたいのですが、どうすればいいのでしょか?
0175nobodyさん
2006/10/09(月) 02:59:58ID:???■ このスレッドは過去ログ倉庫に格納されています