【PHP】下らねぇ質問はID出して書き込みやがれ 98
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/09/18(土) 19:20:37ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 97
http://hibari.2ch.net/test/read.cgi/php/1279833891/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0011nobodyさん
2010/09/19(日) 11:07:50ID:eIEN7Yyo【PHPのバージョン】5.3
【連携ソフトウェア】なし
【質問内容】>>9
0012nobodyさん
2010/09/19(日) 11:11:59ID:???0013nobodyさん
2010/09/19(日) 11:13:12ID:???>何度もやり直してはいますが まったくできませんでした
質問内容を省略しすぎてて意味がわかりません
0014nobodyさん
2010/09/19(日) 11:39:28ID:???そのくらい推察しろよカスどもめが…とか思ってるかもしれんが、
面倒なのは仕方ないと割り切った上で落ち着いて丁寧に質問してくれ。
もしこれ以上の情報が必要ないと考えているようだと、
それはそれで大問題だ。いろんな意味で。
0016nobodyさん
2010/09/19(日) 12:39:44ID:NWy7q6Wmindex.html (文字コード UTF-8)
<html>
<head><title>New Document</title></head>
<body>
<div>
<form action="" method="post" id="test">
<input type="hidden" name="a" value="あ">
<input type="hidden" name="b" value="い">
<input type="hidden" name="c" value="う">
<input type="hidden" name="d" value="え">
<input type="hidden" name="e" value="おあ">
<input type="submit" value="send">
</form>
</div>
</body>
</html>
0017nobodyさん
2010/09/19(日) 12:40:32ID:e0G02OVN同じURL上で、カテゴリをプルダウンメニューで選択すると表示が変わる、
動的なページを作成しています。
POSTでデータを受け渡した時は、選んだカテゴリが次のページにも反映されるのですが、
GETで受け渡した時は、初期カテゴリに自動的に戻ってしまいます。
選んだカテゴリをURLに反映させたいのでGETを使いたいのですが、
なにかヒントをもらえないでしょうか?
0018nobodyさん
2010/09/19(日) 12:41:17ID:???$url = "index.html";
$file = file_get_contents($url);
$doc = new DOMDocument();
$doc->encoding = "UTF-8";
$res = $doc->loadHTML($file);
$items = $doc->getElementsByTagName('input');
$cnt = $items->length;
$str = $items->item(0)->getAttribute('value')."\n";
$str = mb_convert_encoding($str, "UTF-8", "auto");
echo $str;
?>
サーバ側もindex.htmlもencodingもUTF-8にしたのに文字化けしてしまいます
0019nobodyさん
2010/09/19(日) 12:43:22ID:???これいらんのじゃ
0020nobodyさん
2010/09/19(日) 12:44:02ID:???これも
0024nobodyさん
2010/09/19(日) 13:07:40ID:???ttp://hain.jp/index.php/tech-j/2007/02/13/%EF%BC%B0%EF%BC%A8%EF%BC%B0%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91
0025nobodyさん
2010/09/19(日) 13:21:49ID:???<?phpの次の行に
header("Content-Type: text/html; charset=UTF-8");
0026nobodyさん
2010/09/19(日) 13:44:14ID:DdIFZWUf削除してみましたが結果は同じでした
>>21
postで送信するのではなく index.htmlというページにあるvalueの値を取得したいのです
>>22
encodingはUTF-8でした
>>23
サーバからです
>>24
それを読んでみましたが まったくダメでした
>>25
それもダメでした…
0027nobodyさん
2010/09/19(日) 14:14:16ID:???0028nobodyさん
2010/09/19(日) 14:18:30ID:d8+XLEjxーーーーーーーーーーーー
クロスサイトスクリプティングの解説記事でよく説明される「入力データチェックを厳密に」という表現から,
フォーム受付時のタイミングでサニタイジングを行うのかと思いがちである。
サニタイジングは(2)HTML生成時のタイミングで行うべきである。
次章「クロスサイトスクリプティング対策の詳細」で説明するが,
データを埋め込むHTML中の文脈に合わせて適切なサニタイジング手法を選択する必要があるからである。
また掲示板の例では,将来的にデータベースへの記事の書き込み手段として,メールによる投稿が導入された場合でも,
HTML生成時のタイミングでサニタイジングしていれば,
なんら手を加えることなく,いろんな入力源から入り込んでくるデータを漏れなくサニタイジングできる。
また,同じデータに誤って2回以上サニタイジングしてデータの意味が変わってしまうという設計上のトラブルも防げる。
ソース
http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html#PHP_Session_about
今はデータベースに入れる前に、こんな感じで、
function delete_tag_changing_line($str){
$str=strip_tags($str);
$str=htmlspecialchars($str,ENT_QUOTES,"SJIS");
return str_replace(array("\r\n","\r","\n","\"","\'"),'',$str);
}
$hoge=delete_tag_changing_line($_GET['hogehoge']){
って感じでエスケープしてるんだけど,
上の記事見ると、print関数とかのhtml出力時にエスケープすべきみたいなんだよね。
でも、正直今の設計上で出力時に全部エスケープすると、かなりソースに変更が必要になってしまうです。
だから、今まで通り
$hoge=delete_tag_changing_line($_GET['hogehoge']){
このやり方で、リクエストのフォームデータを扱う時にエスケープかける方向でいきたいんだけど、
>同じデータに誤って2回以上サニタイジングしてデータの意味が変わってしまうという設計上のトラブルも防げる。
>メールによる投稿が導入された場合でも,
ここら辺が問題なければ、現状通りのやり方でも大丈夫かな。
お手間かけてすみませんが、見解聞かせてください。
00316
2010/09/19(日) 14:35:36ID:???qd_simple_mailは知らなかったのですがそっちの方も使ってみたところ同じでした。
mbstring.detect_orderが原因でした、ASCII,JIS,UTF-8,EUC-JP,SJISにしたら文字化けしなくなりました。
Qdmail側がそこら辺はうまい具合にやってくれてると思ってたんですが違ったようです。
0032nobodyさん
2010/09/19(日) 14:42:52ID:???index.htmlの頭に
<?xml version="1.0" encoding="utf-8" ?>
付けたら出たよ
あとID出してね
0037nobodyさん
2010/09/19(日) 15:43:06ID:RW6Zh2z2$str = trim($str);
文字列から半角スペースだけ削除したいのですが消えません
どなたかご教示おねがいします
0039nobodyさん
2010/09/19(日) 15:48:05ID:???0040nobodyさん
2010/09/19(日) 15:57:35ID:+3xl6Ak5eclipseに移行した場合、どのようなメリットがありますか?
テキストエディタからeclipseに移行することで開発スピードは上がりますか?
0042nobodyさん
2010/09/19(日) 16:11:39ID:???0043nobodyさん
2010/09/19(日) 16:39:27ID:???><form action="" method="post" id="test">
actionはマジで空っぽ?
0044nobodyさん
2010/09/19(日) 16:57:53ID:???0045nobodyさん
2010/09/19(日) 17:00:41ID:LNQ8CDVBecho $test[0];
これがtを表示するのは何故ですか?
0046nobodyさん
2010/09/19(日) 17:08:14ID:4bBjydvfデータベースと接続する部分は共通化していますが、
各データを扱う部分は、直接各クラス毎に、
$sql = "SELCT COLUMN FROM TABLE_NAME WHERE CONDITION = '123'"
という風に書いています。
こういう書き方って、皆さんから見るとどうでしょうか?
データ取得部分だけクラス化するという話もききますが、
それだと、SQLの数だけクラスが増えて相当なクラス数になると思います。
どのような方法が一般的なのか、お伺いできればと思います。
宜しくお願いします。
0047nobodyさん
2010/09/19(日) 17:11:14ID:???そこらへんはCと同じような考え方からきてんじゃないのかね
Cは文字列というものは存在しなくて文字の配列を文字列としてるから
0049nobodyさん
2010/09/19(日) 19:41:04ID:4bBjydvfご回答ありがとうございます。
O/Rマッパーについて調べてみたのですが、Java専用でphpのものはないそうです。
phpでそれに該当するようなものはございますか。
度々のご質問で申し訳ございません。宜しくお願いします。
0050nobodyさん
2010/09/19(日) 19:47:19ID:???過疎ってるけど
【propel】PHPのORMについて語ろうぜ【peropero】
http://hibari.2ch.net/test/read.cgi/php/1173181854/
ORMの問題ではなく、まずはMVC学んで有名どころのフレームワーク使った方が良いと思うが。
サンプルが参考になるはず
0051nobodyさん
2010/09/19(日) 21:05:03ID:2wvRyPkxブラウザに出力です
0055nobodyさん
2010/09/19(日) 22:03:35ID:???0056nobodyさん
2010/09/19(日) 22:08:46ID:???0057nobodyさん
2010/09/19(日) 22:23:54ID:???0058nobodyさん
2010/09/19(日) 22:46:55ID:???/(スラッシュ)って必要?
preg_match("検索パターンを表す文字列", 比較文字列)
だと動作にどういう違いが生じる?
0059nobodyさん
2010/09/19(日) 22:50:52ID:???やってみた。自分でやってみるほうが早いと思うけどね。
Warning: preg_match() [function.preg-match]: No ending delimiter '.' found in ......
で false を返したよ。@5.2.13
0060nobodyさん
2010/09/19(日) 23:09:42ID:???0061nobodyさん
2010/09/20(月) 00:01:59ID:???mysql_query("rollback") and $this->db['autocommit']= 1;
や
mysql_query("begin") or $this->dberr("トランザクション開始エラー");
はどういった意味になるのでしょうか。
ifも書かれていないため、条件分岐でもなさそう
ですので、悩んでます。
よろしくお願いいたします。
0063nobodyさん
2010/09/20(月) 00:29:55ID:???orの場合はその逆で偽なら実行
if文とかでもそうでandとか&&は
先の結果が真の時以外その後は実行されない
0064nobodyさん
2010/09/20(月) 00:30:41ID:???http://jp.php.net/manual/ja/language.operators.logical.php
0065nobodyさん
2010/09/20(月) 00:33:59ID:???本当だ・・・
warning返された・・・
なんてスラッシュなんて要求するんだろう?
ない方が手間も省けるのに
0067nobodyさん
2010/09/20(月) 00:44:25ID:zsEPGaUeすみません。
ID出してませんでした。
>>63 >>64
ありがとうございます。
つまり、
if (!$this->db['autocommit']){
mysql_query("commit") and $this->db['autocommit']= 1;
}
は、書き換えると
if (!$this->db['autocommit']){
if(mysql_query("commit")){
$this->db['autocommit']= 1;
}
}
になり、
if (!$this->db['autocommit']){
mysql_query("commit") or $this->db['autocommit']= 1;
}
は
if (!$this->db['autocommit']){
if(!mysql_query("commit")){
$this->db['autocommit']= 1;
}
}
になるという解釈で宜しいでしょうか。
度重なる質問ですみません。
0068nobodyさん
2010/09/20(月) 00:47:16ID:???0069nobodyさん
2010/09/20(月) 01:39:01ID:zsEPGaUeありがとうございます。
大変助かりました。
0070nobodyさん
2010/09/20(月) 03:41:18ID:???一方htmlの画像表示タグ
<img src="(パス)/(ファイル名)">
では(パス)の部分にrealpath()で取得した絶対パスを指定しても正しく画像を表示できないのはなぜ?
これができるようになったら便利なんだけどね・・・
0072nobodyさん
2010/09/20(月) 05:29:32ID:???一方htmlの画像表示タグ
<img src="(パス)/(ファイル名)">
では(パス)の部分にrealpath()で取得した絶対パスを指定しても正しく画像を表示できないのはなぜ?
これができるようになったら便利なんだけどね・・・
0073nobodyさん
2010/09/20(月) 08:52:50ID:ZY/coBt6【PHPのバージョン】5.2.13 (cli)
【質問内容】
CLI版のPHPは自動でメモリの開放はしてくれないのでしょうか?
ループしているだけで、メモリ使用量がどんどん増えていって、最終的に
メモリが足りなくなって落ちてしまいます。
原因や、回避策をご存知でしたら、教えてください。
例)
<?php
require_once('./simplehtmldom/simple_html_dom.php');
for ($i = 0; $i < 100; $i++) {
$url = "http://www.yahoo.co.jp";
$obj = file_get_html($url);
unset($obj);
var_dump(memory_get_usage(1));
sleep(3);
}
int(5505024)
int(9961472)
int(14942208)
int(19660800)
int(24117248)
int(29360128)
int(33816576)
int(38535168)
0074nobodyさん
2010/09/20(月) 10:02:34ID:???ここをfile_get_contentsにしてやってみ
ちゃんと開放されてるから
原因はfile_get_html
require_once('./simplehtmldom/simple_html_dom.php');
こいつの中身にあるんじゃないかと
なんかメモリにキャッシュするようにしてるのかもしれん
0075nobodyさん
2010/09/20(月) 10:29:28ID:???imgタグのsrcはwebサーバではドキュメントルートからのパスになるし
realpathから$_SERVER["DOCUMENT_ROOT"]を引けばOK
0076nobodyさん
2010/09/20(月) 10:36:00ID:???そこらへんHTML5では改善されるといいね
些細なことだけどプログラム上の余計な手間なんだよね>imgタグのsrc指定
0077nobodyさん
2010/09/20(月) 10:53:27ID:???0078nobodyさん
2010/09/20(月) 10:58:12ID:???<img src="/home/takashi/public_html/img/hoge.jpg">とか書くつもりか
0079nobodyさん
2010/09/20(月) 11:01:18ID:???〜〜〜〜〜〜〜〜|〜〜〜〜〜〜〜〜〜〜
>( c´_ゝ`) |
|
>( c´_ゝ`) J
>( c´_ゝ`)
|
〜〜〜〜〜〜〜〜|〜〜〜〜〜〜〜〜〜〜
| >( c´,_ゝ`)
|
J >( c´,_ゝ`)
>( c´,_ゝ`)
0080nobodyさん
2010/09/20(月) 11:09:18ID:ZY/coBt6「メモリにキャッシュする」というのが、
具体的にどういう処理かがよくわからないのですが。
とりあえず、関数の中で static な変数を保持しているとかはありませんでした。
file_get_html の中では、object を new して返してます。
file_get_html が返した object を unset しても、どんどんメモリが増えていきます。。
file_get_contents なら、増えないことは確認できました。
0082nobodyさん
2010/09/20(月) 11:34:46ID:???マニュアルに書いてありますねぇ
file_get_contents()はファイルの内容を文字列に読み込む 方法として好ましいものです。もしOSがサポートしていれば パフォーマンス向上のためにメモリマッピング技術が使用されます。
0084nobodyさん
2010/09/20(月) 13:22:28ID:Z65z5cwSjcode.phpで文字コードを調べてみると ASCIIコードになっていたようです
0085nobodyさん
2010/09/20(月) 13:25:07ID:???0086nobodyさん
2010/09/20(月) 13:28:19ID:???0087nobodyさん
2010/09/20(月) 14:21:44ID:???0088nobodyさん
2010/09/20(月) 14:28:16ID:M5nqlNJA@を禁止ワードとしてしたいのですが、
strpos($_POST['aho'],"@");
とすると、何故かフォームahoに全角スペースとか入っていると、
falseが返ってきません。
文字コードがshift-jisだからかなとは思うのですが、
何か対策ありますでしょうか。
ちなみに禁止ワードは@以外にも可能性があり、@だけ削ればいいわけではなく、
しっかり禁止ワードを検出して、入力したユーザーはアクセス規制をかけるという処理です。
0090nobodyさん
2010/09/20(月) 14:39:08ID:???0092nobodyさん
2010/09/20(月) 14:54:36ID:???0094nobodyさん
2010/09/20(月) 15:05:27ID:???0096nobodyさん
2010/09/20(月) 15:07:43ID:???009888
2010/09/20(月) 15:14:07ID:???だからしっかり教えてあげただけです
010392
2010/09/20(月) 15:40:03ID:???0106nobodyさん
2010/09/20(月) 15:44:01ID:???↓
バカを釣るためです
さすが
0107nobodyさん
2010/09/20(月) 15:58:27ID:???PHPを使ったパスワード認証をお教えください。
HPにyahooのリンクがあったとします。
そのリンクをクリックした際に(ポップアップ等で)パスワード認証を
かける方法を探しております。
0108nobodyさん
2010/09/20(月) 15:59:30ID:???0111nobodyさん
2010/09/20(月) 16:21:01ID:???スレタイと>>1を読んで、やりたい事をもっと具体的に書いて。
「yahooのリンク」のリンク先(yahoo)は自分のサイト(PHPを動作させているサーバ)なのかい?
それとも自分のサイトでPHPで認証させて、外部(yahoo)に飛ばすという意味なのかい?
■ このスレッドは過去ログ倉庫に格納されています