【PHP】下らねぇ質問はここに書き込みやがれ 29
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。
まず読め→【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カテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
\ /:.:/:.:.:/:.:.:.:.:.:.:.:.:.:.:.:.l:.:\ ヽ \ ヽ/:.:.:/:.:.:/:.:.:.:.:.:.:.:.:.:.:/:./:/:.:.:.:.!ヽ ヽlヽ /:.:.:.:|:.:./:.:.:.:.:.:.:.:.:.:.:///:.:l:.:.:.:|:.:ヽ / l . |:.:.:.:..|ィ‐_-_、_. -///;ハ:.:|:.:.:.:!:.:.:.V l . |l:.:.:.:.N r‐ァ-、` ̄ メ/‐-ヽ|、:.:|:.:.:.:| _」 ハ:.:.:.:l 弋:ソ /´ ィ=‐、、\/:.:.:./-r ´ /:.li \_\ , 弋:ソ '´/:.:.:./:.:.:.l . __ /:.:.li il、 , -- ‐、 _/:.:./:.:.:.:.:.! /´‐-、ト,:./:li ※ il:.:\ {__ } ア ̄/l:.:.:.:.:.:l:.l 下らねぇ質問はここに書き込みやがれ、ちび。 . / ‐-〈//li il:.:.:.:.:.> 二ニ´ィ:li ※〃:.l:.:.:.:.:.:.l:l l `ニ7'´: :.li il ̄ ̄ _\ノヽ._l:li il-lユ‐_-、:.:!l r‐l |フ!: : にli il〃 ̄ ィトK\ li ilこ|ー‐ |:.:.:.l |〉l イ _): :.にli※/ \///)l:l l:l ヽli. ilこ!|二 /:.:.:.:.:! />にLイ<:.:にli /´ //(!|:| L!==li※!こl./ /!:.:.:.:.:.:.l 丁L__|ーLノ:.:.:.にX // )!|:| ハ ilこ! l /ヽl:.:.:.:.:.:.:l
7 :
nobodyさん :2006/09/17(日) 05:03:55 ID:WkDxxiWw
n進数表現への変換にトライしてますが 16進数で8桁以上になると、 PHP_MAX_INTを超えてしまい、 正確な余が算出できなくなります。 大きな16進数をn進数にするには どうすればいいのでしょうか?
>>8 ありがとうございます
ちょうどpearを探してました
>>7 念のため言っておくとその基数が2の冪なら何の苦労もいらないよ
<?php
require_once("XML/RSS.php");
$rss=new XML_RSS("
http://manabekawori.cocolog-nifty.com/blog/index.rdf ");
$rss->parse();
?>
<h2><?php print(mb_convert_encoding( $rss->channels['title'],"EUC-JP","auto")); ?>
</h2>
<?php foreach($rss->items as $item){ ?>
<?php print(date(($item['dc:date']))) ?> <a href="<?php print($item['link']); ?>" target="_blank">
<?php print(mb_convert_encoding($item['title'],"EUC-JP","auto")); ?>
</a><br>
<?php }
?>
と書くと
2006-09-17JST00:41:11+09:00 夫婦別姓制度はまだなのか
2006-09-13JST22:46:23+09:00 おやすみ投稿か
2006-09-08JST00:08:49+09:00 カッチカチやぞ
2006-08-31JST22:40:11+09:00 エロかわ…?
言う風に表示されるのですが、
JST00:41:11+09:00の部分を削りたいのですが、
どうすれば宜しいか分かる方いらっしゃいましたら宜しければ教えていただけると幸いです。
>>12 $item['dc:date']
こいつの中身を正規表現でJST〜部分を消してあげれば良いんじゃない?
ヒント : 先頭10文字
15 :
12 :2006/09/17(日) 07:40:49 ID:???
>13 ほんと、自分はまだまだでして、、、 まったくなんですよね。。。 ちょっとわからないでん。。。 >14 すみません、 もう少し詳しくもらえると嬉しいです。。。
>>15 <?php print(date(($item['dc:date']))) ?>を
<?php print(substr($item['dc:date'], 0, 10)) ?>に
>>15 >>16 で解決できるけど、ちゃんとsubstrが何なのかって言うのを調べるように!
18 :
12 :2006/09/17(日) 07:52:09 ID:???
>16
おお!
すごす!
できました!
有難う御座います!
>>17 なるほど、substrが大事なのですが、
ネットで調べまくります!
>>18 違う!そうじゃないぞぉ!
ちゃんと毎回これがどういうことをしてどういう結果になっているのか
って言うのを理解していかないと良いプログラマンにはなれんのだよ!
21 :
12 :2006/09/17(日) 08:05:58 ID:???
>20 なるほど、今色々調べてたのですが 最初のヒント10文字ってのはそういうことだったんですね、、、。
22 :
nobodyさん :2006/09/17(日) 10:55:24 ID:lKV/vaA2
require_once("XML/RSS.php"); これって XML.phpとRSS.phpのふたつのファイルを読み込むって意味ですか? なら、$Data=file("data/database.csv"); でdata.csvとdatabase.csv2つのCSVファイルを読み込むことはできますか?
SEOツールを作りたいのですが、ようはサイトURLを指定するとサイトのメタタグが出てきてそれの
一覧を出して自分のサイトのメタタグの参考できるようなサイトにしたいなと。
<html><head><title>メタタグ参考ツール</title></head><body><h1 style="background:#CCCCCC">メタタグ参考ツール</h1>
<?php
//URL
$url = array("
http://ega.chu.jp/all ","
http://www.bb-chat.tv/ ","
http://www.snsnavi.jp/ ","
http://yahoo.co.jp ","
http://mixi.jp ","
http://livedoor.jp ","
http://iki.2ch2.net/ ");
//$url配列を一個づつ処理
foreach ($url as $value){
//メタタグの内容を取得
$array = get_meta_tags($value);
$array = mb_convert_encoding($array, "EUC-JP", "auto");
//メタタグの内容を表示
echo "<p>サイト名(サイトへリンク):"."<a href=".$value.">サイト名</a>";
echo "<p>サイトのサムネイル:";
echo "<p>サイトの内容:".$array["description"];
echo "<p>サイトのキーワード:".$array["keywords"];
echo "<p>はてなブックマーク数:";
echo "<hr />";
}?></html></body>
今できない事が
1、サイト名を表示させたい
2、文字化けしてる所を文字エンコードで直したい。
3、サイトのサムネイルを自動で表示させたい
4、サイトのURLを外部で書き込みできるようにし、
「url.dat」みたいな外部ファイルから読み取りたい。
と言うことをしたいなと、全部は流石にあれなので一つでもいいので教えていただけると嬉しいです。宜しくお願いします。
25 :
nobodyさん :2006/09/17(日) 11:24:04 ID:lKV/vaA2
>>23 すいません、2つ以上のファイルを読み込むにはどうしたらいいでしょうか?
$Data=file("data/database.csv"); ???
>>25 $Data[] = file("data/data.csv");
$Data[] = file("data/database.csv");
28 :
nobodyさん :2006/09/17(日) 12:13:34 ID:lKV/vaA2
>>27 $Data= を $Data[] にすればいいんですね。
ありがとうございました。
>>28 もうプログラミングなんかしないほうがいいぞ?
PHPなんてプログラミングに入らんだろw
入るだろ。プログラミング自体、誰でもできる単純作業だからなw
32 :
nobodyさん :2006/09/17(日) 13:00:09 ID:Zr3tx6hp
直接このスレとは直接関係ないのですが疑問があるので教えて欲しいです 私A - 同窓会関連のテキストや画像などを自宅サーバにて管理(Linux+Apache+PHP+MySQL)しています 友人B - 同窓会員で自宅PCから接続してきます Bが複雑な検索をしてきて(私の技術のなさからなのですが、検索に2分ほどかかるとします) 待ちきれずに1分ほどでブラウザの停止や、ブラウザを閉じてしまうなどをしてしまうと プログラムがecho,printなどで出力しようとしているデータはどこで消えてしまうのでしょうか? BのPCまで行ってブラウザが閉じているのでそこでなにもせずに消える Bが要求をやめてしまっているのでAのサーバ内で消える など漠然と考えてはいるのですが検索などしてみても答えが分かりません ”検索速くしてよ、途中で止めることあるよ” とか言われて、いろいろと試行錯誤はしているのですが、 ふと、途中で止められたデータはどこに行ってるんだろう?と疑問に思ったのです こういうのはネットワーク系(?)のスレッドのほうがいいかとも思ったのですが ご存知の方おられましたらよろしくお願いいたします
>>32 ブラウザ閉じたことはサーバーは知らないから
処理を最後までやって出力→そのデータは誰も受け取らない
ってなるだけ
POSTされたテキストデータの両端にある余分な半角スペースや全角スペースを削除したいのですが、 trim関数では日本語が扱えないため、全角スペースを消せません。 この場合、どうするのが一番良いでしょうか? 正規表現などでしょうか?
if(mb_strpos($str, ' ') == strlen($str) - 1) $str = mb_ereg_replace(' $', '', $str); とか。実行してないけど
$str = mb_ereg_replace('/[\s| ]*$/', '', $str); でよくね?
ゲラゲラゲラ
40 :
nobodyさん :2006/09/17(日) 19:05:08 ID:Eys1a2Y2
レンタルブログスクリプトを丸ごと入れたいんだけど、 どっかにオススメ無い?有料(事業者登録)OK。 今も自分のWEBサーバに事業者登録してるのを入れてるんだけど、 妙に使いにくくて、人に貸しにくい。 ちなみにプログラムなんて書けません。
ここは作る人の質問スレなんで他所で聞いた方がいいんじゃないかな
42 :
40 :2006/09/17(日) 19:07:13 ID:Eys1a2Y2
そうみたいですね。 思いっきり失礼しました。
WinXPにPHPインストールするのには何か特別なことが必要なの? win2000では普通に動かせていたのに 色々なphpインストールtips見てその通りやったのに何回やっても404表示だお(´Д`) 考えられる原因を並べてくださいエスパーたん(*´Д`)
考えられる原因:見落としていることがある。
>>36 $rm = "( | )";
preg_replace("/^$rm+|$rm+$/","", $text);
デフォルトのtrimに全角SPを追加したいだけなら $rm = "( | |\\t|\\n|\\r|\\0|\\x0B)";
textareaとかで各行対象なら "/(?<=\r|\n|^)$rm+|$rm+(?=\r|\n|$)/"
47 :
nobodyさん :2006/09/17(日) 20:51:43 ID:5LNOCvxa
>>46 その正規表現じゃダメだろ。
前後両方に空白が入っていた場合。
>>44 eregは推奨しないがmb_eregは問題ない。
具体的にはeregがバイナリセーフでなく、且つpreg系関数より大抵10倍前後遅い。
mb_eregはバイナリセーフだし、代用できる関数も無い。
>>48 UTF-8でスクリプト書いてりゃpreg_関数で
/[あ-ん]+/みたいなことは出来るけど?
それとバイナリセーフのソースは?
>>50 用にはなってないだろう、それは。
mb_eregとmb_ereg_replaceは最新版ではバイナリセーフの模様。
mb_ereg_matchはバイナリセーフじゃなかった。
何かお勧めのSMTPServerソフトありませんか? 自分はMELON使っているのですが、携帯にメールができなくて・・・
それはWindows用の話か?
>>53 そうです
最近携帯宛のメルマガだったんですが、最近メールが送信できなくなってしまって・・・
前は送れてたのに今は送れない、とかだと スパム業者扱いされてIPでブロックされてるのかもな。 だったらソフトをいくら変えても無駄だと思う。
56 :
nobodyさん :2006/09/18(月) 12:52:59 ID:9uSI0qsK
57 :
nobodyさん :2006/09/18(月) 13:54:16 ID:crSwhLpg
ftp_login( $link, 'example_user', 'example_password' ) FTP関数でログインする際に、パスワードをパラメータに指定するのですが これって(ファイルを誰かに見られる事はないとは思うけど)例えると「紙にパスワードをメモしておく」のと等しいよね? 大丈夫なのかな?
そもそもプログラムソースを悪意ある第三者に見られてる時点で セキュリティとしては大穴だと思うけどな。
>>57 サーバのユーザが特定の人しかいないなら問題無いんじゃね
パスワード書いてるファイルにパーミッションなり、MD5にするなり、サーバのセキュリティなりによって違うでしょ。
パラメータ値だけを入れたincludeファイルを別に分けて DOCUMENT_ROOTより上位のディレクトリに置いておく くらいは常道かなと思う。 あとパーミッションも他のユーザ・グループでは 閲覧できないようにしてもいいよね。
>>57 そもそもFTPは平文でパスワードが流れるんだから、心配してもしょうがない。
気になるのなら、SFTPやSCPを使うこと。
>>61 いいたいことはわかるけど、より正確には、
ネットワーク上に平文で流れることと、
ソースコード中にパスワードが平書されていることは、
次元が違う話でしょ。
ソースコード中にユーザID/パスワードを書きたくない。
もしくは最小限にしたい。という発想は大いに結構だと思いますが。
ようは、そこをがんばってもFTPである以上平文パスワードという
限界があるんだよ。ということを知ってればよいと思います。
63 :
nobodyさん :2006/09/18(月) 21:24:29 ID:S7kQJtix
PHP 5.1.6 (cli) なんですが register_shutdown_functionがうまく利きません。 具体的には <?php function hoge($param) { sleep(3); echo $param; } register_shutdown_function(hoge, 'TEST!!'); ?> を実行しても3秒後に'TEST!!'が表示されてしまいます。 特にregister_shutdown_functionの記述に不備はないと思うのですが、 この現象について解説していただけばと思います。
まったく問題ない。
あと、CLIだから動いてるんだと思うけど ブラウザで動かしたらそれエラーになるだろ?
>>63 プログラムを実行したら、メイン処理終了後に3秒経ってechoが実行されたんだろ?
記述通りに動いてるようにしか見えないが何が問題なんだ?
そもそもそれはどのように動くべきだと考えてるんだ。
マニュアル記載ではsutdown_functionではechoは使えないことになってるが
それはブラウザとの通信が途切れるSAPI版の話であってCLIでは関係ないしな。
68 :
nobodyさん :2006/09/18(月) 21:44:59 ID:S7kQJtix
>>63 テスト用としてCLIの例を挙げましたが実際はSAPIでの結果です。
私の勘違いかもしれないですけどregister_shutdown_functionは
レスポンス後に実行される関数と思っているのですが、
それは間違いでしょうか?
ちなみにSAPIの場合でもechoは</HTML>の後に表示されましたが
マニュアルの注意書き(printまたはechoのような文を使用してデバッグを行うことはできません。 )は
「できるけどやってはいけない」ということでしょうか?
69 :
nobodyさん :2006/09/18(月) 21:45:49 ID:S7kQJtix
>>68 レスポンス後、の意味が不明瞭だけど
echoの結果が表示されたのは奇妙だな。
echoが使えないのは昔のバージョンの話。今は仕様が変更されてる。
ttp://php.plus-server.net/function.register-shutdown-function.html > PHP 4.0.6 以前のバージョンを Apache で動かしている場合、 登録されたシャットダウン関数は
> リクエストの完了後(結果の 出力を含む)に実行されます。そのため、echo() や print() を用いて
> ブラウザに出力したり ob_get_contents() を用いて出力バッファの内容を 取得したりすることが
> できませんでした。
> PHP 4.1 以降、シャットダウン関数はリクエストの一部として実行される ようになり、そこから結果を
> 出力できるようになりました。
本当だ!今実行したらCLIでもApacheで動かしても出た! でも、apacheで動かした場合は何故か「START!」もTEST!!と同時に3秒後に表示されちゃった <?php echo "START !"; register_shutdown_function(hoge, 'TEST!!'); function hoge($param) { sleep(3); echo $param; } ?>
>>72 START!の出力が3秒後に出たのは出力のバッファリングのため。
フラッシュをかけない限り、出力はある程度溜まらないとブラウザに送信されない。
あれ?じゃあ上までのレスを見てみて結局
>>63 の問題ってどうなるんだ?
何の問題もない、でFAだと思うんだが、何か問題が残ってるか?
結局
>>68 の求めているのはブラウザに返した後に
スレッドを実行したいみたいだが
FAだとしても現実問題の正解はなんだ?
phpのバグ?
Apacheのバグ?
環境の不備?
>>76 実際に実行したい処理を提示してもらわん事には
なんとも言えんだろう
>>76 > phpのバグ?
> Apacheのバグ?
> 環境の不備?
仕様の不理解、じゃないの?どっからバグなんて話が出てるのよ。
リクエスト/レスポンスに影響を与えずバックグラウンドで動作する処理を書きたい場合は
普通はsystem()辺りで標準出力/エラー出力をcloseしたプログラムを&付きで実行させる、
とかの手段を使うと思う。
>>78 >仕様の不理解、じゃないの?どっからバグなんて話が出てるのよ。
可能性の話だよ。プログラムにはバグは憑き物だから
当然理解不足だって可能性はある。
>register_shutdown_functionはレスポンス後に実行される関数と思っているのですが、
おれもそのように理解していている。
俺の理解も間違ってなかったとしたら
sleepした時間待たされてechoした文字が
レスポンスされるのはおかしいと思わないか?
>>81 コーヒーでも飲んで落ち着いてからマニュアル嫁
閉じるのは「出力バッファ」だ、どこが矛盾してるのか俺に教えてくれ
>>81 PHPの出力バッファ機能とブラウザへの出力コネクションは全然別の話。
出力バッファが閉じることで出力ハンドラを通した加工出力処理は一切使えなくなるが
出力そのものができなくなるわけでは無いのだよ。
>>82 今、酎杯呑んでるからコーヒーとのちゃんぽんは合わんな。
>>83 なるほどよくわかりました。
>>82 もコーヒーでも飲んで落ち着いてから
このように教えてくれればいいのに。
またおまえか
86 :
82 :2006/09/19(火) 00:42:29 ID:???
>>84 頭が足りない方への配慮が欠けていたようですね。
頭が足りないやつがいるとこまるな。
88 :
nobodyさん :2006/09/19(火) 01:49:40 ID:sfulj2+A
>>63 です。
>>78 具体的にはブラウザにレスポンスした後に
外部サーバ上のDBの更新したいとの思いからですが、
その更新は返って来るまで平均10秒くらい掛かって、
しかも外部の範疇の処理のため、チューニングなど手を加えることができず
そのためにはregister_shutdown_functionを使うことで対応できるかと
思って実験的にsleepで試したのですが・・・
そのような場合もsystem()など使うのが妥当なのでしょうか?
シェルを経由すると環境や共通関数など単純に流用できないですね。
ちょっと実機の環境で再度register_shutdown_functionを確認してみます。
shutdownコールバックはアボート時も含めて プログラム終了時に必ず実行する処理を書くためのもので、 並列実行のスレッド処理を書くためのものじゃないだろう… そもそも最大リクエスト数の制約を受けるApacheプロセスを 10秒も起動しっぱなしにさせてたら困ることが多すぎないか? 10秒もかかるDB更新をリクエスト毎に処理なんて無謀だから 俺だったら処理データをファイルなりローカルDBデータなりにセットしといて cronで数分〜1時間おきくらいに動かしたバッチに処理させるな。
>>46 遅レスですが、ありがとう。
その正規表現でバッチリでした。
>普通はsystem()辺りで標準出力/エラー出力をcloseしたプログラムを&付きで実行させる、 これについてやり方や実例が詳しく解説してあるページとかないですか?
94 :
nobodyさん :2006/09/19(火) 06:35:21 ID:DMPs8Yp+
1.requireでhtmlファイルを読み込み・表示 2.echoでhtmlファイルの内容を出力 どちらのほうが負荷が小さいでしょうか?
そらまぁ、requireを使わない方が負荷は小さいけど 微々たるものだからメンテナンス性の方が重要よ?
repuireされる側に<?とかPHPタグがあったらやばくない?
>>95 メンテナンス性もいいのでrequireを使うことにしました。
ありがとうございます。
98 :
nobodyさん :2006/09/19(火) 09:50:13 ID:9qvktJUT
>>89 register_shutdown_functionを実機環境で試した結果。
やっと理解できました。
ブラウザには即時にレスポンスを返しますが、register_shutdown_function
で登録した関数がが完了するまでクライアントは次の操作を行えないようですね。
ということはregister_shutdown_functionでは要件を満たせないということで
この方法は却下します。
色々なご意見を参考に別な方法を検討したいと思います。
99 :
nobodyさん :2006/09/19(火) 09:52:01 ID:RXMAlMKx
基本画面で入力、確認画面、書込み処理画面 と、三段階にページをわけてます。 入力した情報を加工してから書込みを行いたいのですが、 基本画面で危険なコードを入力されたら確認画面で実行されされてしまうし、 確認画面で情報を加工しても、情報を改ざんされて書き込み処理画面で情報に 不正なコードが潜んでるかもしれません。 確認画面と書き込み処理画面の両方で加工したほうがよろしいのでしょうか?
[ブラウザ側] 基本画面で<form>に入力。 ↓ [サーバ側] 入力されたデータの正当性チェックと、必要ならデータ加工。 データをセッションに保存。 ↓ [ブラウザ側] 確認画面に内容表示。 確認ボタン(?)か何かクリック。 ↓ [サーバ側] セッションのデータを復元し、DBなどに書き込み。 ↓ [ブラウザ側] 書き込み完了しました。とか表示。
>>99 お・・・ おいおい・・・・
お前の作ったシステムは恐ろしくて使えないな。
phpでのhtml出力時にContent-Lengthヘッダーを付加したいのですが
ttp://ns1.php.gr.jp/pipermail/php-users/2004-May/022383.html をためしてみましたがうまくいかず
Transfer-Encoding: chunkedとなってしまいます。
Content-Length と Transfer-Encoding: chunked が両方送信されて
Transfer-Encoding: chunkedが優先されているように感じます。
どうすればいいでしょうか。
phpinfo
PHP Version 4.3.2
output_buffering no value
output_handler no value
mbstring.http_input pass
mbstring.http_output pass
>>102 サーバやOSの情報も書いたほうがいいよ。
まともな挙動としては、Transfer-Encoding: chunkedが設定されている場合でも、
header('Content-Length: '.$length);
を加えれば、サーバはTransfer-Encodingの行を消すべきだから。
105 :
nobodyさん :2006/09/19(火) 12:12:28 ID:9qvktJUT
register_shutdown_functionの件でお世話になりました。 結局皆さんの意見を総合して flush(); ignore_user_abort(); register_shutdown_function(); <body onload='javascript:window.stop()'> でやることにしました。 ありがとうございました。
>>103 そのページを見ると、要するに
str_replace( "\0", "", $arr );
でNULLバイトを削除せよ、ということだと思うんだけど、
\0だけでなく\x00も考慮しなくていいのかなぁ??
107 :
102 :2006/09/19(火) 13:29:24 ID:???
>>104 OS
Linux aaa-bb-ccc 2.4.21-40.ELsmp #1 SMP Thu Feb 2 22:22:39 EST 2006 i686 i686 i386 GNU/Linux
サーバ
Server version: Apache/2.0.46
Server built: Dec 15 2005 04:19:10
Architecture: 32-bit
rpmからインストールしました。
Content-Typeをapplication/octet-streamにするとContent-Lengthが出力されました。
Content-Length: 190
Content-Type: application/octet-stream
text/htmlだとTransfer-Encoding: chunkedになってしまいます。
Content-Type: text/html
Transfer-Encoding: chunked
perlでもためしてみましたが同じ結果となりました。
別サーバのdebian+apache2でもためしてみましたが同じ結果になりました。
Content-Type: text/htmlでContent-Lengthを出力したいです。
どうすればいいでしょうか。
108 :
nobodyさん :2006/09/19(火) 13:29:50 ID:9qvktJUT
自分のレスに補足です。 window.stop()はIEではできないので 隠しfreamで対応したいと思います。
>>105 意見を総合したら、cronかsystemでやれって事では・・?
まぁ・・自分が関わるわけじゃないから、どうやってても別に構わんけど
110 :
nobodyさん :2006/09/19(火) 14:08:43 ID:f+iMimQf
$name = $_POST["name"]; と、いう箇所でNotice: Undefined index: name in 〜ソースのアドレス というふうに怒られてしまいます。 <?phpのすぐ下に書いてあります。それより上にphpのコードは何もありません。 どのように書くのが望ましいのでしょうか? ご教授お願いいたします。
111 :
102 :2006/09/19(火) 14:20:16 ID:???
>>104 firefoxのLive HTTP headersで確認していて今度は
ie + ieHTTPHeaders
wget -d
で調べたらちゃんとContent-Length値が出力されていました。
firefoxで
Pragma: no-cache
Cache-Control: no-cache
というのがリクエストに含まれていたのが悪かったのかなと思います。
Modify HeadersのFilterで消せなくてあきらめましたが。
どうもすみませんでした。
>>24 マルチポストは止めてくださいね、ながかわさん^^
既存の配列を、 新しい配列にそのまま格納する、 関数はありませんか?
>>114 どう格納したいのか具体的な希望が無いのでアレなんだが
単に
$new = $old;
でいいんじゃないの?
これで「違う」って言うなら質問の仕方が悪すぎる気がする。
^^;
117 :
nobodyさん :2006/09/19(火) 15:17:36 ID:j2rsOfI9
配列の一番最初の値は[0]で参照出来るのですが、一番最後の値は どうやって参照するんでしょうか? 最初にカウント取らないと無理?
>>117 配列の添え字は1とか2とかから始まる場合もあるし
添え字にマイナスも使えるから0が先頭とは限らないよ。
$last = end($arr);
で最後の値は取得できる。
>>110 $name = '';
if(isset($_POST['name'])) $name = $_POST['name'];
が望ましいです。
121 :
nobodyさん :2006/09/19(火) 15:41:30 ID:j2rsOfI9
>>118 ありがとうございます。end()なんてあるんですね。
> 添え字にマイナスも使えるから0が先頭とは限らないよ。
つことは、今、[0]で取ってるので、いくないですね。
end()があるなら、ファーストもと思って調べたら、なかったですorz
>>121 何使って関数探してるの?
公式のオンラインリファレンス(
>>1 )使えば
関連する関数が説明文の下に参考として書かれてるから
その種の問題はすぐに解決できるよ。
>>121-122 ありがとうございます。
画面ちっちゃいから、本で調べてるんですけど、PHP(ポケットリファレンス)
オレンジのやつ。対義語が載ってないくさい。
※2ch開く余裕はあるってつっこみはなしで。
>>123 のサイトをチェック致します。
ありがとうございました!
>>121 変なことしてなければ0からだから問題ないけど
>>125 変なことしてないなら最終要素も
$last = $arr[count($arr) - 1];
で取れるけどな。
>>106 表記方法が16進数になっても null の意味は変わらないから一緒だと思う。
実際に確かめてみると、ちゃんとNULL バイトが取り除かれているのがわかる。
おまいらsafety firstだぞ。 無防備なのはイクナイ!!
129 :
nobodyさん :2006/09/19(火) 16:38:10 ID:Uo5rUHBV
FORMから受け取ったデータを削除するにはどうしたらいいのでしょうか? たとえば、 A.php入力フォームから受け取ったデータを B.phpへ持っていき、書込み処理を終えたらデータ削除 が行いたいと思っております。 何かヒントがあればご教授願います。
>>129 FORMで送信されたデータなんて、どこにも保存しなければ勝手に消えると思う。
>>129 消すのなら unset ($_POST['hoge']); でいけるけど・・何故データを消す必要があるんだ?
それにB.phpに持って行くと言っても、
FORMから送られたデータはスーパーグローバルだから、
特別な事をやらなくてもA・B双方から参照できるしねぇ
何が言いたいかって言うと、意味がわからn(ry
133 :
nobodyさん :2006/09/19(火) 17:06:28 ID:Uo5rUHBV
formからのデータを拾うのと書込みを同一ページで処理しているのですが、 リロードするとformから受け取ったデータが残ってまして、 同じ内容が書き込まれてしまうんです。
>>133 それは変数の$_POSTの中身を消した所でどうにもならない。
クッキーなりセッションなり使ってリロード対策するしかない。
>>124 お前バカか? どういう本の読み方してんだ。
『PHPポケットリファレンス』のendのページの下の部分に
関連関数としてresetがしっかり載ってるじゃないか。
これで「対義語が載ってないくさい」などとよく言えるな、この能無しチンカスが。
>>133 >リロードするとformから受け取ったデータが残ってまして
受け取ったデータが残っているのではなく、
送る側が同じデータを送信している
消したいなら、クライアント側を工夫する+処理後に表示するページを別ページにする
>>133 書き込み完了後にLocationで別ページに飛ばしちゃうのが簡単な対策。
138 :
nobodyさん :2006/09/19(火) 18:20:55 ID:4NYt81r/
構成について質問です。 登録したファイルの拡張子を記録したいのですが、 例えば $upfile="test.jpeg" //JPEGファイルをアップしたと過程 if(ereg(".jpeg",$upfile)){ echo"これはJPEGファイルです"; } っと識別出来るかと思うのですが、必ずしも特定のファイルじゃないと思うし さまざまな拡張子があると思います。 その場合も事前に「これは○○ファイルです」というようにIFを用意しておくのでしょうか? それとも、もっと便利な方法・構造があるのでしょうか?
>>138 まず第一に拡張子はいくらでも変更出来るので実際のファイルが何かは分からない。
これは多分理解してると思うから・・。
あとは正規表現なり、 . でsplitするなりである程度出来るんじゃん。
>>138 目的と頻度次第でお好きなように、ってのが正直なとこ。
システムの目的として拡張子登録が重要な機能で
可能な限り全ての拡張子を網羅しなければいけなくて
必要時にすぐ新規の拡張子が登録できなければ…
みたいな話ならメンテナンス性が重要になると思うんで、
「拡張子文字列」→「ファイル種別文字列」
みたいな対応ファイルを別途用意してそれを読み込んで
処理するような仕組みを採用した方がいいかもしれないし、
判別が画像ファイルだけとか数が少ないならif並べた方が早いし、
追加が緊急では無いが数は多いとかなら配列データとして
includeファイルにリストアップしとくのがベストかもしれない。
配列データからの判定は例えば
$ext_list = array(
"jpeg" => "JPEGファイル",
"jpg" => "JPEGファイル",
"gif" => "GIFファイル",
);
$pathinfo = pathinfo($upfile);
$ext = $pathinfo['extension'];
if(isset($ext_list[$ext])) {
echo "これは{$ext_list[$ext]}です";
}
みたいな感じで処理する。
141 :
138 :2006/09/19(火) 19:01:03 ID:???
>>139-140 アドバイスありがとうございます。
目的としては登録リストを拡張子で並べ替え出来る程度で良いのですが、
140さんが書かれているソースの方法だと汎用性も高いと思うし、
私自身も意味が理解出来るので、良いですね。勉強になりました。
142 :
nobodyさん :2006/09/19(火) 19:03:04 ID:Uo5rUHBV
同時に複数のファイルをロックして書き込み、ロック解除を 処理する記述は大丈夫でしょうか?
>>142 別に問題はないよ。それでロックという目的が果たされてるかは知らんけど。
複数ファイルを一斉にロックする場合、ロック状態を示すロック専用ファイルを
1個だけ用意しておいてロックはそれだけで行うという「プロセスロック」という
考えの方が適切な場合もある。
>>115 返事が送れてごめんなさい。
その方法でうまくいきました。
ありがとうございます。
なんですとー
mysqlで INSERT INTO `tbl` (`key1`, `key2`, `key3`) VALUES ($val1, $val2, $val3) って書き方っていつも面倒くさいと思ってたけど INSERT INTO `tbl` SET `key1` = '$val1', `key2` = '$val2', `key3` = '$val3' って書き方もあるんだね?いままで知らなかった。 この書き方ってなにか問題ありますかね?
`←これどうやって入力するの?どこおせばでるの?
preg_match_allの正規表現が長くなり、 みづらくてしょうがありません。 しかし改行を入れると正規表現が変わってしまい 見やすく整理できません。 どういうふうに整形していけば良いのでしょうか? 現在こんな感じです。 preg_match_all("(<\/TABLE>[^a-z]{15,15}(.+)[^a-z]{15,15}<TABLE border=\"1\"><TR><TD>|<font color=.+>...(.*)...<\/font>.*(http.*)\">(.*)</a>)U",$content,$content);
$reg = "/toooooooooooooo " . "loooooooooooooooong " . "regular expression/"; preg_match($reg, $str);
150 :
142 :2006/09/19(火) 20:37:03 ID:???
>>143 さんのおかげで安心しました。ところが、
日付時間を二つのファイルに書く場合、時間がずれてしまうことはありますか?
おれは左官大臣Zx
157 :
nobodyさん :2006/09/19(火) 22:21:08 ID:sKqysrv5
あるページにパスワードをかける場合、IDとpassの埋め込み型のphpファイルは 安全といえるのでしょうか? また、htaccessを使わずにディレクトリごとロックすることは可能でしょうか? たとえば・・・ public_html-----[abc]←このディレクトリ中のファイルへのアクセスを拒否するのは可能ですか?
>>157 >IDとpassの埋め込み型のphpファイルは安全といえるのでしょうか?
心配なら生Pass記述ではなく、cryptした値で比較すれば?
>htaccessを使わずにディレクトリごとロックすることは可能でしょうか?
httpd.confが弄れるなら可能。
>>157 まあ普通に使ってる限り、拡張子がphpのファイルはソースが見えることはありえないが、
設定ミスなどが怖いのなら、パスワードを書いたファイルはDocumentRoot外に置いて
includeすれば良い。
>>154 あんまり後者の書き方は見かけないんですが・・・
mysql書き始めて2年にもなろうというのに初めてみましたよ>後者の書き方
162 :
157 :2006/09/19(火) 23:36:21 ID:???
ありがとうございます。夕方からいろいろ調べてコード書いてみたんですが、 <<159さんや<<160さんみたいのは新しい発見です。 cryptで暗号化も考えたのですが、結局生のパスワードを書きますから 先輩方のアドバイスを参考にさせていただきまして、もうすこし調べてみます。 ありがとうございます。
気づかないうちにxmlに書き出されたモロ三重コードたまに見るけどな〜
質問です。UML(クラス図)を描いたら、PHPのソースに落としてくれるエディタってありますか?
>>162 >cryptで暗号化も考えたのですが、結局生のパスワードを書きますから
なんで、暗号化するのに生のパスワードを書く必要があるの?
PHP内にはcryptで暗号化した文字列だけ書いておいて、
入力されたパスを同じcrypt化して比較すればいいじゃん。
PHPというか数学的な質問かもしれませんが、、 アクセス数に対し、可変する横棒グラフを作成しています。 例えば、1日(30)、2日(15)、3日(40) ※()内はアクセス数です。 とした場合、どういう風に構築するのが良いのでしょうか? 単純に<img src="bar.gif" width="<?=$access?>">とすると、横に伸びきるし。。 質問内容がまとまっていないかもしれませんが、ご教授いただければと思います。
>>167 アクセス1個分の長さの画像を用意してアクセス数分並べれば?
>>167 とりあえずメール欄は空白も何も無しが正解。努力は買うが。
仕様として、横バーの最大を固定にするか可変にするかでも変わる。
1日(30)、2日(15)、3日(40)のときで40のグラフが横幅いっぱいになるようにするなら
$acc = array(1 => 30, 2 => 15, 3=> 40); //アクセス数のリスト
$maxwidth = 400; //バーの横幅最大
$max = max($acc);
$rat = $maxwidth / $max;
?>
1日<img src="bar.gif" width="<?=$acc[1] * $rat?>"><br>
2日<img src="bar.gif" width="<?=$acc[2] * $rat?>"><br>
3日<img src="bar.gif" width="<?=$acc[3] * $rat?>"><br>
という感じだろう。
それに対して、アクセス数100のときに横幅いっぱいになるようにするなら
$acc = array(1 => 30, 2 => 15, 3=> 40); //アクセス数のリスト
$maxwidth = 400; //バーの横幅最大
$rat = $maxwidth / 100;
?>
1日<img src="bar.gif" width="<?=$acc[1] * $rat?>"><br>
2日<img src="bar.gif" width="<?=$acc[2] * $rat?>"><br>
3日<img src="bar.gif" width="<?=$acc[3] * $rat?>"><br>
になるかと。
170 :
167 :2006/09/20(水) 00:48:26 ID:???
>>169 ありがとうございます。ただ、説明不足で申し訳ないのですが、
1日とかは日付が入っているので実際は”2006年9月20日”になります。
それをDBで管理しているので
day | count
2006-09-18 | 30
2006-09-19 | 15
2006-09-20 | 40
というような表から抽出して表示させるわけです。
その場合、arrayで配列に代入する方法は使用出来ないかと思いまして。
説明不足で申し訳ないのですが、もう少しお願い出来ないでしょうか。
>>170 そのくらい、変換して配列に格納すればいいじゃん。
オブジェクト内で定義された変数を、 外部のオブジェクトが簡単に利用する方法は ありませんか? function get_content(){ $aaa = "aaa"; $bbb = "bbb"; $ccc = "ccc"; } たとえばこんな感じに、変数を複数設定してしまったとき、 ほかのオブジェクトも、この変数を利用したいのですが・・・
>>167 後だしじゃんけん的質問はイカン。それに169がここまで書いてくれてるんだから後は
自分で考えるないとなー
?>
1日<img src="bar.gif" width="<?=$acc[1] * $rat?>"><br>
2日<img src="bar.gif" width="<?=$acc[2] * $rat?>"><br>
3日<img src="bar.gif" width="<?=$acc[3] * $rat?>"><br>
を
while ($row = mysql_fetch_assoc($result)) {
$w = $row["count"] * $rat;
echo <<<EOT
{$row["day"]}<img src="bar.gif" width="{$w}"><br>
EOT;
}
とかでいいんじゃまいか?日付の書式は適当にね
>>97 PHPスクリプトとして認識させないならreadfileもあるよ
>>148 xを使う。スペースは\sで。{15,15}は{15}でいいよ。
$str = 'outer"in\"ner"outer';
preg_match('!
"( # デリミタとその内側のキャプチャ開始
(\\\\.|[^"])+ # エスケープを避けて"までの最短マッチ
)" # キャプチャとデリミタの終了
!x', $str, $cap);
var_dump($cap);
>>170 > その場合、arrayで配列に代入する方法は使用出来ないかと思いまして。
それで何が困るのかさっぱり分からん。
$acc = array(
"2006-09-18" => 30,
"2006-09-19" => 15,
"2006-09-20" => 40,
);
というアクセス数の配列にしといて
$maxwidth = 400; //バーの横幅最大
$max = max($acc);
$rat = $maxwidth / $max;
foreach($acc as $date => $cnt) {
?><?=$date?><img src="bar.gif" width="<?=$acc[$date] * $rat?>"><br><?php
}
でふつーに問題なくね?
flush()とob_flush()の違いってなんですか? マニュアルを見た感じ、出力後にバッファをクリアするかしないかの違いしかないような感じなんですが、それだけですか?
ob_start 以降の出力を内部バッファに保存する ↓ ob_flash 内部バッファに保存された出力を、出力バッファへ移動する ↓ flash 出力バッファからクライアントへ送信 まぁあれだ、ob_flash()やってもPHPが常に持ってるバッファに移動するだけで、 それを即座にクライアントへ送りたいならflash()が必要だって事だ。 タブン
>>137 >書き込み完了後にLocationで別ページに飛ばしちゃうのが簡単な対策
飛ばしても、「戻る」ボタンでPOST後のページに戻れば再POSTになっちゃうけどね。
>>178 ならないよ
Location の意味分かってる?
HTTPヘッダーを使用したリダイレクトね。
IE, Firefox, Opera の最新版で試したが、全部ならない。
180 :
nobodyさん :2006/09/20(水) 12:36:06 ID:74yeHhio
PHPのサーバー側の設定の話になるんですが、mail関数をコールすると止まってしまいます。 OSはLinux(CENTOS)で、PHPは4.3。 sendmailそのものは動いています。(telnetからメール送信した) php.iniの記述は↓です。 sendmail_path = /usr/sbin/sendmail -t -i 特に問題ないはずなのに、原因が分からず途方にくれてます。
181 :
nobodyさん :2006/09/20(水) 12:40:45 ID:xiIYenEj
centos 4.4 apache 2.2.0 php 5.1.6 net-snmp 5.2.2 でphpを--with-snmpでコンフィグしてるんだけど、 apache起動時にエラーログに Cannot find modue (IP-MIB): At line 0 in (none) Cannot find modue (IF-MIB): At line 0 in (none) Cannot find modue (TCP-MIB): At line 0 in (none) Cannot find modue (UDP-MIB): At line 0 in (none) Cannot find modue (SNMPv2-MIB): At line 0 in (none) Cannot find modue (SNMPv2-SMI): At line 0 in (none) Cannot find modue (UCD-SNMP-MIB): At line 0 in (none) Cannot find modue (UCD-DEMO-MIB): At line 0 in (none) Cannot find modue (SNMP-VIEW-BASED-ACM-MIB): At line 0 in (none) Cannot find modue (SNMP-COMMUNITY-MIB): At line 0 in (none) Cannot find modue (UCD-DLMOD-MIB): At line 0 in (none) Cannot find modue (SNMP-FRAMEWORK-MIB): At line 0 in (none) Cannot find modue (SNMP-MPD-MIB): At line 0 in (none) Cannot find modue (SNMP-USER-BASED-SM-MIB): At line 0 in (none) Cannot find modue (SNMP-NOTIFICATION-MIB): At line 0 in (none) Cannot find modue (SNMP-TARGET-MIB): At line 0 in (none) Cannot find modue (SNMPv2-TM): At line 0 in (none) てmibsがない旨のエラーがでるんだけどなんでかな。
182 :
nobodyさん :2006/09/20(水) 12:44:09 ID:R2HBn3N4
MySQLのサーバ上に指定のテーブルが存在するか否かを PHPで調べられないか試しています。 以下のようなソースを書いたのですが、思い通りになりません。 どこがおかしいかご指摘いただけないでしょうか? $con = mysql_connect($dbserver, $dbuser, dbpassword); $tabls = mysql_list_tables($dbname,$con); if($tabls=="member"){ echo "memberテーブルが存在します"; }else{ echo "memberテーブルがありません"; exit; }
>>180 パッと見、問題無いように見えるからクリティカルな回答
じゃないが、
phpinfo()関数を実行した時
Local Value
Master Value
共に
/usr/sbin/sendmail -t -i
になっているかな?
後
>mail関数をコールすると止まってしまいます。
ということだけど、止まるって症状をもっと具体的に。
PHPのエラーメッセージも出ないってこと?
186 :
nobodyさん :2006/09/20(水) 14:20:55 ID:74yeHhio
>>185 アドバイスありがとうございます。
はい。local,master共に↓こちらです。(そのままコピペ)
sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i
>ということだけど、止まるって症状をもっと具体的に。
>PHPのエラーメッセージも出ないってこと?
はい。mail();の行で突然止まってます。
関係あるか分かりませんが、mb_encode_mimeheaderをコールした時も同症状です。
ちなみに、mbstringの設定なのですが、Windowsだとextension=php_mbstring.dll
というようにライブラリを呼び出していますが、Linuxは設定しなくても良いのでしょうか?
187 :
nobodyさん :2006/09/20(水) 14:51:35 ID:yPqg/Cyb
php_selfが危ないと言われるのは、ファイル名以外にディレクトリ情報も 含まれているからですか? basenameを併用したら安全でしょうか?
PHP_SELF PATHINFO で検索と幸せになれるかもしれない
189 :
nobodyさん :2006/09/20(水) 15:49:36 ID:ap8SjPDw
>>186 止まるとはmail()から返ってこなくなるということ?
だとしたら具体的なmail()の呼び出し方を貼ったら・・・?
>>186 display_errors をonにしろ
ディレクトリが存在する場合はスルーし、存在しない場合は作成するという 処理を試しています。 $dir_name="$site_url"."files/"; //$site_urlにはサーバのURLが入ります。 if(!is_dir($dir_name)){ mkdir("$dir_name",0777); }else{ echo "作成済みです"; } としているのですが、アクセスする度に何度も作成しようとして、 存在している場合はスルーされません。 $dir_nameに絶対パスを指定しているので、ディレクトリと見なしていないかも しれませんが、こういう場合、どうすればいいのでしょうか?
192 :
nobodyさん :2006/09/20(水) 17:02:59 ID:wx80eLIi
<form action="<?=$_SERVER['SCRIPT_NAME']?>"> こうかいても、ブラウザ上でソースひらくと上記とそのまんま表示されてしまいます。 参考書や多くのサイトでは<?= ?>でくくれって書いてありますけど、 <?php echo $_SERVER['SCRIPT_NAME']?>"> とすると意図した結果を返します。 phpのバージョンによるものなのでしょうか? 当方の環境はphp5.1.6でサーバapache2.0.59です。
phpの設定によるものです。
横から補足すると short_open_tag が off <?=の形式はあんまり推奨されないけど、「どうしても」使いたいなら php.ini の short_open_tag を off に設定するか、 .htaccess に php_flag short_open_tag off を設定する。
195 :
192 :2006/09/20(水) 17:23:41 ID:???
必要ないものは切っておきたいので現状のまま使っていきます。 ありがとうございます。
login.phpにてログインしたらセッションを与えて、 hoge.phpでif文とisset関数でセッション変数をチェックするコードを書きました。 セキュリティに気をつけるところがあればご指摘お願いします。 データベースは使っておりませんが、セッションをデータベースに格納した ほうが安全が高まるのでしょうか?
>>196 漠然としすぎて指摘のしようが無い。
DBに保存するかどうかも安全とはほぼ無関係。
そのレベルの情報量でセキュリティ的なものが判断できると思ってる
キミの無知加減が1番危ない気はするw
質問です。 セッションについてです。 クライアントがリクエスト、サーバがセッション開始 続けてもう一度クライアントがリクエストした場合 クライアントがセッションのIDをサーバに送るのですか? クライアント側にIDみたいなのを保存しなければ成り立たない 機能だと思いますが、そのIDはクッキーとして保存するのですか? だとすれば、クッキーの内容を変更するなどで、 他のセッションIDを送ることもできると思います。 つまりクライアントから受け取ったセッションIDには何の信憑性もないのでしょうか?
>>198 です。セッションIDは通常はクッキーで保持。
クッキーが使えない場合はクエリー文字列のパラメータに埋め込みも使用可能。
(この辺はphp.iniの設定次第)
他人のセッションID送信で中身を横取りする手法はセッションハイジャックといい
セキュリティ対策では重要なポイントの1つだと思う。
セッションハイジャックでググれば問題点もその対策方法も色々出てくると思うよ。
>>198 セッションIDは通常Cookieに保存され(逆にCookieが使える環境ではCookieのみにすべき)、信憑性は無い。
が、個人が現実的な時間内で破れるほどヤワなものではない。
発行されうるIDのパターンは殆どの環境では少なくとも2^128ある。
ユーザが送ってきたセッションIDはサーバに保存されている値と比較され、マッチした場合にのみ保存されている値が取り出せる。
セッションIDの信憑性より、下手な設定にしてセッションハイジャックされる心配をしたほうがいいな
202 :
nobodyさん :2006/09/20(水) 20:21:29 ID:vCicRGZl
データベースにjpg等の画像を登録したいとき、 PHPからはどのような手順や関数を使えばいいのでしょうか? また、登録された画像を取り出したいときはどのようにしたらいいのでしょうか?
もうすこし自分で調べてからにしてくれよ、漠然としすぎて答えてもすぐにわからないことにぶつかるだろ
>>202 base64_encode()でバイナリ→文字列変換してそれをtext型のフィールドにinsert。
取り出しは逆にselectした結果をbase64_decode()でバイナリ変換。
辺りでいいんじゃない?
205 :
nobodyさん :2006/09/20(水) 20:38:54 ID:AVQePo+U
php.iniのsession.auto_start=0の場合、 session_start();はセッションを扱うページすべてに記述しなくてはならないのですか? それとも、あるページに一回だけ記述しとけばいいのでしょうか?
>>204 バイナリのまま入れちゃだめなんですかね
だめ
>>206 DBによる。PostgreSQLならラージオブジェクトとして扱えるが。
image関数で作る画像にデータを渡す方法としては何が好ましいですか? メインスクリプト中にそのまま画像を出すことができないのでGETか何かで渡すのが一番簡単かと思いますが、 データ量が多くなった場合はセッションか何かを使うのがいいのでしょうか?
ありがとうございました>>セッションについて教えてくれた方
>>206 207じゃないけど、PHPでバイナリデータの文字列エスケープ処理なんて正常に動作すんの?
エスケープ処理できなきゃSQL文が壊れる場合があるし俺は怖くてバイナリそのままなんて書けないな。
あと、DBによっては強制的に文字コード変換かけるようなのもあるじゃない。バイナリ壊されるよね。
>>210 ごめん。ちょっと状況が把握できない。
どういう構成のプログラムなんだろ。
>>213 統計値か何かを計算して表にして表示するスクリプトがあるとしますよね。
表だけでは寂しいのでそれにグラフを表示させたい場合、メインスクリプトからどうやって
画像表示スクリプトにデータを受け渡すか、というような場合の話です。
画像表示スクリプト内で同じ計算をするのは無駄ですし、同時に表が出せませんよね(画像で作れないこともないけど)。
それともこういう構成は変なんでしょうか。
>>214 ・メインスクリプトから画像生成スクリプトを呼び出し、
生成した画像のURLをHTMLに埋め込む。
・GET・セッションなどお好みの方法でデータを渡し、生成した画像を返す。
>>214 セッションが良い気がする
書き込み中に読み込んじゃうことないし
あとは画像がどういうデータから生まれたものか分かるように入力値のハッシュを識別子に使うとか
218 :
nobodyさん :2006/09/20(水) 23:46:35 ID:Wdl0S+zk
requireやincludeの内容を変数に代入するって出来ますか? あるファイルを読み込んでそのファイルにデータを追加するというのを 作成したいのですが、書き込まれる内容は別ファイルにある中身に したいのです。 $fp=fopen("$file_name","w"); fwrite($fp,"別ファイル"); 上記の”別ファイル”の箇所に書き込み用変数が入るとします。 何か良い方法はないでしょうか?(別ファイルへのパスを書いても駄目でした。)
>>218 説明が抽象的で勘違いしてるかもしれないが
copyしてそれを追記openしてちょろっと書くだけでは?
requireってことはPHPコード?もしそうならob_start〜
220 :
218 :2006/09/21(木) 00:04:32 ID:???
説明が足りなくてすみません。
目的としてはフォーム(form.html)からファイル名(file_name)とタイトル(title)
を入力して送信(write.php)したら、そのファイル名のファイルが出来上がる。
その出来上がったファイル内には、別ファイルの内容+指定箇所が
フォームで入力したタイトルに入れ替わっているというやつです。
別ファイルの内容を変数に代入するのは
$tmp_file="templete.php";
$array = file($tmp_file);
$templete = join("",$array);
で出来まして、その後に
>>218 のソースを追記したら
新規ファイル内にtemplete.phpの内容が書き込まれているのですが、
フォームで入力した「タイトル」は変わっていないのです。
なのでソースが違うのかな?っと思った次第です。
>>210 テンポラリファイルかDBにデータを保存してファイル名やIDをGETで渡すとか。
で、画像生成プログラムが画像生成完了後にそのデータを削除。
>>220 そもそも説明で言ってる事が分からないし、そんな物を何に使うのかも分からん
"form.html""write.php""template.php"のコードを出すか、「エスパー回答希望」と言ってくれ
まぁ、何か盛大に勘違いして妙な事やってるのだけは理解した。
>>220 最初からテンプレートと言ってくれればw
面倒だから色々汲み取った上でサンプル書いちゃうよ
--- template.php ---
<?php
$username = "%REPLACE_USERNAME%";
$password = "%REPLACE_PASSWORD%";
コード略
?>
--- writer.php ---
<?php
$replace_rule = array("%REPLACE_USERNAME%" => "218", "%REPLACE_PASSWORD%" => "1234");
$tmpl = file_get_contents("template.php");
$fp = fopen("result.php","w");
fputs($fp, strtr($tmpl, $replace_rule));
?>
>>221 削除するのは生成側じゃなくて表示側では
224 :
221 :2006/09/21(木) 00:28:52 ID:???
>>215-216 渡すデータが大きくなった場合にどうするかって話で何故GETが選択肢に入るの?
>>217 セッション使うと同じページを2枚とか3枚とか表示させたとき、
どのデータで画像を生成するのか判別するのが複雑にならない?
こういう場合ではデータIDをページ表示毎に生成した方が都合よさげな気が。
225 :
221 :2006/09/21(木) 00:30:48 ID:???
>>223 表示側=画像生成プログラム だと思うんだが違う?
<img src="画像生成プログラム?データ識別ID">
って形で呼び出されるもんだと思ってるんだけど。
>>225 ごめん、データ=画像データだと勘違いしてた
画像データをDBに入れる場合、わざわざBase64エンコードしなくても、 BLOB型のカラムにすればバイナリのまま入れられるでしょ。
228 :
nobodyさん :2006/09/21(木) 01:34:59 ID:k7zFBu8v
Formで、textareaの文章の先頭に改行を入れてPOSTすると、 なぜか勝手に改行コードが一つ削除されてしまいます。 具体的には、たとえば先頭に改行(エンターキー)3つ置き、 その後に文章が続くものをPOSTし、それを受け取って表示してみると 改行が2つに減っているのです。逆に文章の末尾にある改行コードは影響を受けません。 これはどうしてなのでしょうか? ちなみに上記において、受け取ったPOSTデータは、変換やエスケープを一切せずに 表示しても、やはり先頭にある改行が一つ勝手に削除されてしまいます。 phpのバージョンは4.3.1です。
>>228 4.3.1はハッキリ言って既に非常に古いからアップデートしたほうがいい
231 :
228 :2006/09/21(木) 01:48:37 ID:k7zFBu8v
追記ですが、いくつかの有名サイトでも
>>228 と全く同じ現象を確認できました。
たとえばmixiのプロフィール変更画面で、「自己紹介」の欄(textarea)にて
先頭部分でエンターキーを2回押して改行を2つ入れてから本文を書いたとします。
それで「変更ボタン」を押すと、当然プロフィールには、たった今POSTした内容(改行2つ+本文)が反映されています。
ところが、その状態で再度プロフィール変更画面に行ってみますと、
なぜか自己紹介欄textareaの改行が1つに減っています。そのまま何を手を加えずに「変更ボタン」を
押しますと、当然のことながらプロフィール画面に反映される先頭の改行は1つに減っています。
ここでまたプロフィール変更画面に行きますと、また改行が1つ減っています。
すなわち、こうやって繰り返していると、一番初めに入力したはずの改行は0になってしまうのです。
mixiでも発生する現象だということは、PHPの問題ではなく
HTMLの問題(仕様?)なのでしょうか・・・。
232 :
228 :2006/09/21(木) 01:50:09 ID:k7zFBu8v
>>229 >>231 で書きましたように、mixiで再現できますので、お試しください。
>>230 Perlを使っているmixiでも再現できたので、PHPのバージョンの問題ではないと思われます。
ブラウザの問題かもよ。
234 :
228 :2006/09/21(木) 01:52:15 ID:k7zFBu8v
>>233 たしかにその可能性もありますね。
当方のブラウザはIEの最新版です。
>>231 あー、了解。mixiで再現できた。これはHTMLかブラウザの問題だね。
送信後のデータ受け取りじゃなく、ページの表示の時点で消えてる。
<textarea name=hoge>
<?php echo $hoge ?>
</textarea>
なら多分問題は出ないと思うよ。(最初から前後に改行を含めた書き方)
ところが
<textarea name=hoge><?php echo $hoge ?></textarea>
と書くと、$hogeの最初の改行をブラウザが無視してくれてる。
これってどっちの問題なんだろ…俺も後者の書き方がHTML的には正しいと思ってたんだが。
IEのこのHTML解釈って何かおかしくないか?
236 :
235 :2006/09/21(木) 02:13:46 ID:???
Firefox1.0.4でも同じ解釈になった。(最初の改行は無視) ってことで<textarea>の直後は必ず改行が正しいことになってるのかも。 余談だが、Firefoxでは <input type=hidden name=hoge value=" データ "> みたいな改行を含むhiddenデータは前後の改行が除去されて送信されるw おかげでmixi(確認/キャンセルのデータ受け渡しをセッションでなくhiddenで行っている)では 先頭1行どころか10行分だろうと先頭の空行が丸ごと無視されるという結果になった。
237 :
228 :2006/09/21(木) 02:14:54 ID:k7zFBu8v
>>235 たしかに前者の書き方ですと、
>>231 の問題は解決されますね。
ただその代わりに、今度は余計な改行が常に1つ、先頭に発生してしまいます。
(最初から改行を含めてるので当然ですが・・・)
たとえば前者の書き方をしておいて、textarea($hoge)が空の状態でマウスカーソルを置くと、
1行目が空行で、2行目からカーソルが始まってしまいます。
つまり1行目の改行が勝手に付いてしまっている状態ですので、今度はそれを消す手間が出てしまいます。
><textarea name=hoge><?php echo $hoge ?></textarea>
>と書くと、$hogeの最初の改行をブラウザが無視してくれてる。
そうですね。無視したあげく、再POSTの際には無かったことになっています。
>IEのこのHTML解釈って何かおかしくないか?
もしこれがIEだけでの現象だとしたら、
完全にIEの解釈がおかしいですよね。。。
238 :
228 :2006/09/21(木) 02:24:28 ID:k7zFBu8v
>>236 FireFoxでも同じ結果でしたか。。。
でも、
><textarea>の直後は必ず改行が正しいことになってるのかも。
・・・だとしたら、私が
>>237 で書きましたように、
空のtextareaには必ず先頭に空行が1つ出来てしまうわけで、
かなり気持ち悪いですよねぇ・・・。
239 :
235 :2006/09/21(木) 02:25:24 ID:???
>>237 > たとえば前者の書き方をしておいて、textarea($hoge)が空の状態でマウスカーソルを置くと、
> 1行目が空行で、2行目からカーソルが始まってしまいます。
ごめん。これはうちじゃ再現しない。
<textarea name=hoge>
</textarea>
って状態のHTMLでカーソルが2行目に移動できる、って意味だよね?
Windows IE6、Firefox1.0.4どっちでも再現しなかった。
240 :
228 :2006/09/21(木) 02:32:32 ID:k7zFBu8v
>>239 <textarea name=hoge>
</textarea>
・・・なら問題は無いのですが、mixiのプロフィール変更画面のような使い方をする場合、
実際にはスクリプト内では下記のようになると思います。
echo "
<textarea name=hoge>
$hoge
</textarea>
";
このとき、$hogeに何も入っていないと、出力されたHTMLは
<textarea name=hoge>
</textarea>
となってしまい、空の$hogeの分がぽっかり空行1つになってしまうのです・・・。
(※ちなみにこれはmixiでは再現できません。mixiではプロフを空欄に出来ない仕様なので)
>>240 あー、すまん。
<textarea name=hoge>
$hoge</textarea>
って書き方にしてみてくれ。
242 :
228 :2006/09/21(木) 02:40:15 ID:k7zFBu8v
>>241 あっっ、それで解決しました!!
・・・そうですよね、冷静に考えたら、もし$hogeが空だったときに
<textarea name=hoge>
</textarea>
という形にするには、$hogeの後ろの改行を無くせばいいだけでしたね。。。
頭が混乱しててそんな単純なことにも気がつきませんでした。
>>241 さん、ありがとうございます!!
(それはともかく、やっぱりブラウザの解釈はおかしい部分がありますよねぇ…)
いや、わかんねー。 2大ブラウザで同じ解釈するんならスタンダードは<textarea>の次は改行なんだろうさ。
244 :
228 :2006/09/21(木) 02:49:48 ID:k7zFBu8v
>>243 ということは、W3Cだか何かで、textareaタグの後には必ず改行を
入れるべし・・・などと定めてるんでしょうか?
もし仮にそうだとしても、
<textarea name=hoge>hoge</textarea>
って書いた場合に、勝手に先頭の改行コードを1つ削除する…という動作の意図がよく分かりませんね。。。
246 :
228 :2006/09/21(木) 03:03:59 ID:k7zFBu8v
>>245 それズバリですね!! ありがとうございます。
しかしそれにしても人間に優しくない規則というか、
あまり直感的じゃない決まり事だなぁ・・・。
特にプログラミングする時は、
<textarea name=hoge>{$body}</textarea>
とかって書きたい時もあるのに。。。
>>247 おお…、まさにこのスレでの今回のやり取りと全く同じことが漏れなくまとめられてるw
でもこの問題、意外と話題にならないよね。
少なくとも過去、このくだ質スレで今回のような話題を見かけた記憶がない。
249 :
235 :2006/09/21(木) 04:04:15 ID:???
>>245 SGML的に
「開始タグの直後、終了タグの直前のline breakは無視しなければならない」
ってのは確かに聞いたことあるけど、実際には改行って全然無視されてなくて、
例えば
hoge<span>
aho
</span>hoge
は
hoge aho hoge
みたいに空白が空いて表示されるよなw
しかも、
>>247 のレポートでも触れられてるけど
> その結果、興味深いことがわかりました。
> それは、「テキストエリア textera の場合タグの直前の改行は削除されない」という事実です。
という中途半端っぷりだし。
気付かないと結構ひっかかりそうな問題だよなー。
うん、いい勉強になったわ。
250 :
235 :2006/09/21(木) 04:08:00 ID:???
ちなみに出力にPHPタグを使った場合、?> の後ろの改行はPHPが自動除去するので
<textarea name=hoge>
<?php echo $hoge ?>
</textarea>
という最初(
>>235 )の書き方で多分問題ないんだわ。
>>240 みたいに "〜" の中で変数展開の書き方だと
</textarea>の前の改行が問題になっちゃうのな。
251 :
nobodyさん :2006/09/21(木) 06:21:28 ID:yxCjYnZV
header('Refresh: 0;URL=○○○○○○'); ヘッダー関数は絶対URLで書けとどこかできいたのですが、 この場合でも相対パスは使っちゃいけないのでしょうか?
>>251 Refreshの使用はそもそも、推奨されません。
(W3Cのドキュメントより)
だいたい、それだと、例えば、セキュリティレベルを高にしているIEだと何も表示されないですよ
PHPとは直接関係ないけど、近年希に見る有益な情報だった。
ありがとう。
>>228-250
>>253 うん、意外と重要な情報だと思うけど、滅多に話題に上らないね。
原因は、ブラウザの解釈が徹底してない(というかHTMLの仕様自体が曖昧?)のと、
textarea以外ではその現象が発生しにくい(しない?)から誰も気付かないんだろうね。
今まで改行から始まる文を入力したことがなかったからな これからもだけど
問題は改行から始まる文を入力するだけじゃなく、 それを再度textareaで表示した上で再投稿した場合だからな。 結構気づきにくい問題だよ、これ。
257 :
nobodyさん :2006/09/21(木) 14:23:49 ID:v8Pew90x
リダイレクトの方法が、今ひとつわからん セッションにフラグ用変数を与えて、フォームのアクションで再帰的に読み込んで スイッチ文でそれぞれのページにリダイレクトしてるんだが なんだかまどろっこしい もっとスマートな方法はないものか。
>>257 それはページ遷移判定のロジックが分からんという話であって
リダイレクトの方法が分からんのとは全然話が違うと思う。
というわけでロジックの話ならコードを実際に見せないと
回答のしようがないと思うぞ。
いったいどんだけへんてこなコード書いてるんだよ。
5桁の絶対に被らないIDを生成したいんですが、 例えば、IP+HOST+ブラウザ情報のmd5ハッシュ値を求めて最初の5桁を使うなんてのはどうでしょうか? 自分で言うとc0b52f5db6481563916e30da43495e56で最初の5桁はc0b52になりますが、被る人なんてかなり確率低いですよね? これよりももっといい方法あるでしょうか?
>>259 絶対被らない を求めるなら
かなり確率低い じゃだめなんじゃ・・・
適当に作って発行したIDを保存して
とかじゃだめなの?
md5の最初5桁くらいなら被りそうだ
>>259 5桁で絶対に被らない、って馬鹿?
その条件にこだわるなら、単純な連番にでもしとけ。
>>259 簡単確実な方法は
データを数値で保持しておいて
IDを発行するたびにシーケンシャルに数値を上げていくのが
確実だろうね。
同時にIDを発行した時とかのために排他ロック
は必要だろうけど。
263 :
nobodyさん :2006/09/21(木) 16:28:39 ID:25o/CiRu
>>189 昨日
>>180 の質問をしたものです。
呼び出しのサンプルです。
<?php
mail('
[email protected] ','test','test');
?>
以上です。特に問題があるように思えません。
前にも書きましたが、php.iniには、以下が書いてあり、sendmailを直接telnetで操作すると、きちんとリレーされてきます。(つまりtelnetでならメールが出せる)
sendmail_path /usr/sbin/sendmail -t -i
特に原因が思い当たりません。知恵をお借りしたいです。
264 :
nobodyさん :2006/09/21(木) 16:29:31 ID:25o/CiRu
>>190 mail()やmb_〜をコールすると、そのまま戻ってこないので、エラーも表示されてません。
265 :
257 :2006/09/21(木) 16:58:16 ID:???
266 :
nobodyさん :2006/09/21(木) 16:59:25 ID:yxCjYnZV
「入力ー確認ー書込み」で3つのページを作成しているのですが、 入力されたデータを書き込む前の加工はどのページで行うのがふさわしいでしょうか?
>>263 おれもメール関数でめちゃくちゃ悩んで1ヶ月ぐらいしてあきらめたときがあった。
そんときの解決策。
to,サブジェクト、本文の他にFromも設定してあげたらうまくいった。
たったそれだけだけど、こんなことで1ヶ月も悩んだ。
ためしてみな。これでもだめなら別の回答者が現れるのをまつ。
ソースの軽量化に特化した本とかないかなぁ? ちと、商品数が増えてきて、しんどくなってきた悪寒
データベースにいれるとauの絵文字が文字化けしてしまいます 対処法ありますか??
実体参照に変える
>>259 md5の5桁は20ビットですので1048576通りしかありません
被る確立はかなり高いです
274 :
nobodyさん :2006/09/21(木) 17:39:57 ID:25o/CiRu
xpのcommandからフィールド名を参照したとき MysqlのVARCHAR(10)のDefaultがNOT NULLってあるんですけど、これは どういうときにNOT NULLを使うのでしょうか?
276 :
nobodyさん :2006/09/21(木) 17:56:51 ID:fiT61BpR
質問です。 $result = mysql_query("SELECT id FROM table1"); while($r = mysql_fetch_array($result)){ echo "$r['id']:"; $result2 = mysql_query("SELECT row1 FROM table2 WHERE id = $r['id']"); while($r2 = mysql_fetch_array($result2)) echo "$r2['row1'] "; } と同様のことを、よりスマートに行う方法ありませんか? table1からは200件程度取り出します。
SQLの結合を使う
>273文字化けしました…
>>271 詳しくお願いします。
サンプルソースなどもあればお教えください!
クラスの参照渡しの意味合いがよくわからんです。 だれかこんなおいらに分かりやすい説明をぷりーず
>>278 携帯 絵文字 php
ぐらいで検索したんだよね?
281 :
nobodyさん :2006/09/21(木) 18:48:20 ID:25o/CiRu
>>269 残念ながら関係ありませんでした・・・fromなくっても動きました・・・
282 :
nobodyさん :2006/09/21(木) 18:52:45 ID:yxCjYnZV
セッション変数を消したいとき、unsetを使うものなのでしょうか? またはsession_destroy();で破棄するべきでしょうか? あるサイトでarray()で初期化しろとうたっているページを発見したのですが、 配列でセッション変数を初期化したほうがいいのでしょうか? ご指摘お願いいたします。
283 :
282 :2006/09/21(木) 19:04:35 ID:yxCjYnZV
つづきです。 $hoge=セッション変数;←$hogeにセッション変数代入 session_destroy();←ここでセッション破棄 これがエラー(Notice: Undefined index: hoge)として帰ってきてしまいます。 セッションを破棄したことで、$hogeには何も入ってないからでしょうが、 どう記述していいのかわかりません。
>>284 配列をforeachに読み込んで、mb_convert_encodingで変換
>>284 のやりかただと配列全体にmb_convert_encodingを処理するから
autoの判定が怪しくなるんじゃないの?
287 :
nobodyさん :2006/09/21(木) 20:15:22 ID:8hLu55dO
"=&"ってどういうときに使うものでしょうか?
289 :
287 :2006/09/21(木) 20:20:24 ID:yxCjYnZV
293 :
nobodyさん :2006/09/21(木) 22:24:48 ID:yxCjYnZV
mysql4.1のmy.iniで文字コードをeuc-jpにしたら エラー1067がでて起動できません。 文字コードがsjisだと問題なく起動できるのですが、 eucにするのは無理でしょうか?
>>293 それはMySQLのスレで聞いてきた方がいいと思うよ。
あぁ、データベース板が出来たのはつい最近の話しなんだね……。
十年一昔?
また、えがみボンバイエイかよw
298 :
293 :2006/09/21(木) 23:37:31 ID:???
windowsで使用上、mysqlでeucを使うのが無理だということがわかったのでsjisでがんばります。 お騒がせしました。
299 :
nobodyさん :2006/09/21(木) 23:42:18 ID:wtB1wQTq
>>299 そんな面倒が嫌だから、リンクを作ったりテキストを弄るのは表示直前なんだよ
確実にやりたいならリンクを戻すことから始めりゃいんじゃない。
>>299 まず最初にタグの中と外を分解して、外だけ自動リンク変換するとかにした方がいいんでは。
yyyymmddhhmmssな14桁の文字列を、UNIXタイムスタンプにさらっと変換する関数ってないでしょうか?
>>304 さらっとかどうかは知らんけど
echo strtotime(preg_replace('/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/', '\1-\2-\3 \4:\5:\6', $str));
くらいのもんじゃないの?
306 :
nobodyさん :2006/09/22(金) 02:33:23 ID:0rl6NvDW
質問です。 ログイン情報としてsession()を、掲示板の名前等を記憶されるためにsetcookie()を 同じスクリプト内で使いたいのですが、上手くいきません。どちらかだけだと大丈夫なのですが、 両方使う場合にはどうしたら良いのでしょうか?
>>306 両方SESSIONじゃダメなの?
ってか掲示板の名前を覚えさせる必要って言うのはあるのかな?
POSTとかで事足りる希ガス
308 :
nobodyさん :2006/09/22(金) 02:48:57 ID:0rl6NvDW
>>307 すいません、説明が不十分でした。
掲示板の名前っていうのは投稿した際のHNとかのことです。
>>305 サンクス
$yyyy = substr($src_date, 0, 4);//年
$mm = substr($src_date, 4, 2);//月
$dd = substr($src_date, 6, 2);//日
$hh = substr($src_date, 8, 2);//時
$mm = substr($src_date, 10, 2);//分
$ss = substr($src_date, 12, 2);//秒
なんて面倒なことをするとこでした。
310 :
nobodyさん :2006/09/22(金) 02:56:03 ID:X1gmluk1
$lines = explode ("\n", $lines); 配列である$linesの要素から、正規表現でマッチした配列の要素を削除する 方法が思い浮かびません。これはどうしたら出来るでしょうか? preg_replace ('/^$/', '', $lines) だと、空文字列 ('') に置換できますが 配列の要素自体を取り除くことはできませんでした。
311 :
310 :2006/09/22(金) 03:01:16 ID:X1gmluk1
312 :
270 :2006/09/22(金) 03:07:31 ID:cF1a5TbS
>>280 普通にそれでググってもなくない??
auの絵文字を実体参照に変えるやりかた
>>310 foreach(range(0, count($lines) - 1) as $i) {
if(preg_match('/条件/', $lines[$i])) unset($lines[$i]);
}
>>310 こんなのもある。
$lines = preg_grep(パターン, $lines);
316 :
nobodyさん :2006/09/22(金) 09:04:42 ID:6cSapPbr
すみません、質問です。 PHP Version 4.3.10-16 です。OSはLinuxです (Debian 3.1) 以下のようなスクリプトを実行すると、 echo strtr('abc', 'b', 'B')."\n"; echo strtr('abc', array('b' => 'B'))."\n"; echo "\n"; echo strtr('abc', 'b', '')."\n"; echo strtr('abc', array('b' => ''))."\n"; 以下のような結果になるのですが、 aBc aBc abc ac なぜ、三行目は「ac」にならずに「abc」と表示されるのでしょうか。 説明書を見てもそうなるとは書いてないように読めるのですが。 参考資料などありましたら教えてください。
''じゃ0バイトのデータじゃん。
>>316 > string strtr ( string str, string from, string to )
> この関数は str を走査し、 from に含まれる文字が見つかると、そのすべてを to の中で対応する文字に置き換え、 その結果を返します。
「対応する文字」だと書いてある。
ちなみにソース上では、fromの長さとtoの長さのMIN、つまり小さいほうをとってそこまでの長さ分しか処理してない。
まあ、toに空文字を指定したらfromに含まれる文字を全部削除、みたいな仕様のほうが便利だろうけどね。
俺の経験上strtrってそんなに使用頻度の高い関数じゃないし、何かperl由来の事情か何かあるんじゃね?
なるほど strtrのもとは、perlのtr演算子、そのもとになってるのはUNIXのtrコマンドだろうけど、 確かに、それらには空文字だから削除するなんて仕様はないからこの動作のほうが自然化。 納得。(Perlだと、tr/b//d としないと削除しない) アメリカ人が書いたPHPスクリプトに、あたりまえのように strtr($hoge, array("\n" => "", "\r" => "")) とか使われていたので、ついうっかりしてしまった。 どうもありがとう。
> アメリカ人が書いたPHPスクリプト どこの誰だw
_,,. -‐ '''''""""""'''ー 、, ,.r " 、 ` 、 / )、、 \ / ノ ヽ ヽ、 / ル' ヾ ヽ / / ゙i, ゙i j ,ィ/ ゙i, | lィ' ,ィ/j/ | iリ | /l / '"` | |l リ! ./,ノ _,、=''''`ヘ ,リ ゙! l/ ,:-ー=‐-ミ、,,_,.ノ /(::ノ-‐)ーV´ ヽ,/`ヽヽ .ト、 (;:ソ-‐)- 、,-トi´ ,ノ , ヘ ゙iヽl `ヽ,r'´ ノ ヾー--‐''゙i ,,.く ゙i ゙i ヽ、 __,,、-'" 〉 ,! ハ'´ ゙! ゙i ,! ´ ´ ./.......,,,,,,,,____/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ゙、゙i,__r'゙゙>ー┬-!_j _______ , /;\;;;;;;;;;;;;:;;;;| 私はムスカ大佐だ。 ,゙V" ゙ヽ;;;! l ゙!、 ゙ー一'''''"´ /;;;;;;;;ヽ;;;;;;;;< 呼んだかい? ,.:r''";;;;ヽ. - ''^゙~ ゙ヽ,ヽ ,,.、-─‐- .,/;;;;;;;;;;;;;ヽ;;;;;;;;;;| ,.:r'''";;;;;;;/;;r'´ -‐‐'''"´~ヽ\ (.r‐'''""゙"''''y.);;;;;;;;;;;;;;;;〉;;;;;;;\_____________ ;;;;;;;;;;;;;;;;;l;;;| _,,..、-‐^ヾ゙ヽ、 _,,ヽ ,/'゙!;;;;;;;;;;;;∠、;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;j;;;;| ,⊥, ゙i :レ' ゙!;;;;;;;;;;;;;;;;|;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;!;;;:;| -‐''"´ ゙)ゝ、、 ! !. !;;;;;;;;;;;;;;;;!;;;;;;;;;;;;;;;;;;;;
未だに echo strtr('abc', 'b', '')."\n"; echo strtr('abc', array('b' => ''))."\n の違いがよくわからない私に分かりやすく教えてくれませんか。
replace系使えばいいのにって話で結託しますた
trはgrepとかと一緒でexやsedができた頃の正規表現使ったバッチ編集コマンドの1つだからな。 それに慣れてる人が互換コマンドとして使えばいいものであって、 そうでない人まであえて使う必要はそれほど無いだろう。 でもtrのPHP版での拡張モード(配列で複数ワードを指定し、多重変換は抑止してくれる)は str_replaceで同じことするのも案外面倒くさくて、結構便利な関数だよ。
>>325 str_replaceも配列とって重複避けるモードもあるし、こっちのほうが一般的じゃないか?
PearもZFもこのスレで登場するのもstr_replaceが圧倒的に多数かと思う。
引数のとり方が違うから状況に応じて使い分けりゃいいんだけどね。
>>328 前者は文字単位の指定方法で、この指定では変換対象の文字が無いから無視される。
後者は単語単位の指定方法で、ちゃんと変換単語("")が指定されているから機能する。
そんだけ。
>>327 PHPってほとんど同じ機能なのにI/Fだけ違うって関数多すぎだよねw
331 :
270 :2006/09/22(金) 13:55:44 ID:???
>>313 それは検索で見つけたのですがリンク切れで見れないんですよ…
誰か自作した方いらっしゃらないですか?
>>331 普通に見れる。携帯からでも見れる(笑)
333 :
270 :2006/09/22(金) 14:03:28 ID:???
334 :
332 :2006/09/22(金) 16:08:59 ID:???
>>333 見れるよ。別にあんたと見れる見れないの論争をするつもりはない。
あんたは見れないが俺は見れるんだろ。別に俺は困らん。
335 :
nobodyさん :2006/09/22(金) 16:42:13 ID:0rl6NvDW
>>335 使えない、使えないという前に、その部分をさらしてみろ。
>>337 setcookieの際のパス指定が間違ってるだけでした。。。
お騒がせして申し訳ありません。
>>336 拒否られてるとは荒らしでもしたのかねw
まあ、見れなくても見れてもくそなソースなので利用価値はない
バカには見れません(><)ゲラゲラ
>>333 リンク先を直接クリックしないで、URLをアドレス欄にコピペしな
343 :
nobodyさん :2006/09/22(金) 19:36:45 ID:S0P77otq
344 :
270 :2006/09/22(金) 19:39:08 ID:???
見れました(・д・)つ 確かにあまりつかいがって良くないかも
散々見れない見れない騒いだ挙句にそれかよw こんなくだらんことにも気づけなかったくせに教えてくれた人に礼も無しとはな。
まぁなんとなく言動で あ、こいつ(頭が)足りないな… とは思っていたがw
多分、今もブラウザで見れただけで ソースの確認すら出来てないと思うぜ
348 :
270 :2006/09/22(金) 21:40:32 ID:???
使えねえんだからお礼はいらんだろ
てか始めに見方教えてくれればよくない?
>>280 こいつ性格捻じ曲がってるな
349 :
270 :2006/09/22(金) 21:45:18 ID:???
>>346 頭が足りないってなんですかぁ〜〜プギャァァァァ m9(^д^)
メス豚根性丸出しだな。
351 :
nobodyさん :2006/09/22(金) 23:10:11 ID:aEgPknQ1
fwrite と fputs の違いを教えてください。
353 :
351 :2006/09/22(金) 23:17:56 ID:aEgPknQ1
>>352 なるほど、それなら自分の打ちやすい方でいいのですね。
fwriteが5byteでfputsが4byteなのですが、それの違いによる動作速度の差などは生じたりしますか?
>>353 厳密にはコンパイル速度に差は出るには出るだろうが
ほぼ計測不能なレベルの誤差だな。
ちなみに実体はfwrite。fputsはエイリアス
この板って共産主義者多いの?
なんだそりゃ。初耳だぞ。
360 :
351 :2006/09/23(土) 00:30:44 ID:TznJyQfl
>>354 遅くなりました。
ではなれてるfwriteを使っていこうと思います。 どうもありがとうございました。
頭が足りんって普通に使うよな?(頭を指さして)こっちが足りないとか。脳みそが足りないという意味で。
まぁ
>>270 はかなり痛いということがわかった。
362 :
nobodyさん :2006/09/23(土) 02:07:09 ID:oZb6fCvN
array_splice()についてくだらない質問です。ていうか関数の動作について質問してる時点私はアウトですかね。 $TEST = array("ASP", "Perl", "PHP", "SSL", "HDML"); $RESULT = array_splice($TEST,3,2,"Ruby"); print_r($RESULT); このようにすれば 「ASP,Perl,PHP,Ruby」 のような結果が得られると思ったのですが・・・。 なぜかブラウザには 「SSL,HDML」 が出力されます。。。 これは単に私の勘違いなのでしょうか?><; どなたか解説の方お願いします。
>>362 「ASP,Perl,PHP,Ruby」になったのは変数$TEST。
$RESULT = array_splice($TEST,3,2,"Ruby");
じゃなくて
$DELETE_VALUE = array_splice($TEST,3,2,"Ruby");
って書けば意味分かる?
array_spliceはarray_pushやarray_shiftとかと同じで第一引数を直接編集するもの。
365 :
363 :2006/09/23(土) 02:51:38 ID:???
fwriteで、ファイルに文字を書き込むテストをしています。 Shift_JISで書き込まれるようなのですが、 UTF-8で書き込みしたいです。 文字コード指定などはどのようにやればできるのでしょうか?
>>366 ついでにプログラムソースもUTF-8で書くようにした方がいいぞ
なんども質問すみません。 メールフォームを作っているのですが、 色んなサンプルソースを使ってやっているのですが どうしても自分のgmailで受信すると全部文字化けをしてしまいます。 色んなソースを使っているので、 ソースのせいではないのかなと思うのですが。。 宜しくお願いします。
>>369 質問が曖昧すぎ
ソースとその結果くらいだしたら?
>370
そうですね。すみませんでした。
mail.phpが
<form action="
http://ega.chu.jp/dai/sendmail.php " method="post">
<input type="hidden" name="_email" value="
[email protected] " />
<input type="hidden" name="_subject" value="お問い合わせだお" />
<input type="hidden" name="_result"
value="<?php print($_SERVER['PHP_SELF']); ?>" />
<table width="90%" border="0" align="center" cellpadding="5" cellspacing="5">
<tr>
<td width="34%"><div align="center">お名前</div></td>
<td width="66%"> <div align="center">
<input name="name" type="text" size="40">
</div></td>
でもろもろ・・・。
sendmail.phpが
<?php
$header_info="From: ".$_POST['_from']."\nContent-Type: text/plain;charset=ISO-2022-JP\nX-Mailer: PHP/".phpversion();
$body="■■".$_POST['_subject']."■■\n\n";
foreach($_POST as $key=>$value){
if(!strstr($key,"_")){
$body.="[".$key."]".$value."\r\n";
}
}
mb_send_mail($_POST['_email'],$_POST['_subject'],$body,$header_info);
header("Location: ".$_POST['_result']);
?>
って感じなのですが、メールは届くのですがどうしても文字化けで受信してしまいます。
Zend Optimizer 3ってどうよ? 別名、PHP×2ってくらいで、ダメダメなの? 使っている人は居ますか?
この板って高額所得者に対して 敵意を抱いたり、攻撃したりする 連中が多いって本当?
>>373 むしろ低脳低所得者に対して攻撃が激しいとオモ
このスレもそうだが。
>>371 php.iniで適切なmbstring.languageが設定されてないんじゃないの?
sendmail.phpで
mb_language("Japanese");
って1行入れてみたらどうだろ。
可能であれば、受信メールの生データをエディタで開いてみて
ヘッダ部分の文字コード指定が何になっているかと、
実際の本文の文字コードが何になっているかを
調べた方がいいと思うけど。調べられるなら。
>375 なるほど! 有難う御座います。 やってみます!
>375 おっ、内容は表示されたのですがメール文が 名前に名前、フリガナにフリガナ、会社名に会社名と 入れれるとこういったメールがきます。 最初の??,?笋す腓錣擦世??と?mname?nなどは どうしたらいいのでしょうか。。。 宜しければお願いします。 ??,?笋す腓錣擦世?? ?mname?n名前 ?mhurigana?nフリガナ ?mkaisyamei?n会社名
この板って 「敵」 と勝手にみなした相手に 法律無視でサーバーにアタック しかけたりとか、そういう連中が多いの?
この板って (1)「自分よりもコーディングスキルが低い(=低能)」 でなおかつ (2)「それにも関わらず自分よりも高額の報酬を得ている」 と勝手にみなした相手に対して心の底から敵意と憎しみの 感情が湧いてきて、法律無視で勝手にサーバーに アタックを仕掛けたりとか、そういう連中が多いの?
>>377 凄い勘で書くけど、ISO-2022-JPっぽくない文字化けのような気がする。
どっかがUTF-8とかになってたりして色々混ざってるんでは?
文字コードのこととか、ちゃんと把握してるんでしょうか。
送られたメールの生の文面の見方とかわかりますか?
Gmailだったら、メール開いて詳細オプションを選んで、
出てきたメニューから「ヘッダー情報を表示」
自分で、(Outlookとかを使って) 手で、「正しいメール」を書いて
Gmailに送って、それとPHPが出したメールを比較してみたらどうです?
>>381 > 自分で、(Outlookとかを使って) 手で、「正しいメール」を書いて
Outlook は、正しいメールを出さないから止めた方がいいよ。
Message-Id と BASE6Bエンコードの方法に間違いがあるし、添付ファイルのファイル名のエンコードにも間違いがある。
そのため、RFC準拠の正しいMUAとやりとりすると問題が生じる。
383 :
382 :2006/09/23(土) 13:38:59 ID:???
ってことで、参考にするなら、「Mozilla Thunderbird」 のヘッダーを見よう。
最近、OEとの互換性よりもRFC準拠を重視して、Thunderbird トップページで理由を表示した上で、
Outlook で表示できない RFC準拠の正しいファイル名エンコードをするようにした。
http://www.mozilla-japan.org/products/thunderbird/ シェアNo.1 のクライアントを犠牲にしてでも、RFC準拠の正しいエンコードを行う、この精神は大変素晴らしいものだと思う。
この板って (1)「自分よりもコーディングスキルが低い(=低能)」 でなおかつ (2)「それにも関わらず自分よりも高額の報酬を得ている」 と勝手にみなした相手に対して心の底から怒りと敵意と憎しみの 感情が湧いてきて、法律無視で勝手にサーバーに アタックを仕掛けたりとか、そういう連中が多いの?
何となくマニュアル流し読んでたら LXXXI. その他の関数(Misc) - highlight_string() こんなのまで用意してあるのか
この板って (1)「自分よりもコーディングスキルが低い(=低能)」 でなおかつ (2)「それにも関わらず自分よりも高額の報酬を得ている」 と勝手にみなした相手に対して心の底から怒りと敵意と憎しみの 感情が湧いてきて、法律無視で勝手にサーバーに アタックを仕掛けたりとか、そういう連中が多いの?
せめて改変してくれ。同じのを同じスレに投下すんなよ。低脳。
388 :
366 :2006/09/23(土) 16:57:09 ID:???
>>367-368 レス遅れてすみません。
大変参考になりました。
ちゃんとUTF-8になりました。
どうもありがとうございました。
389 :
nobodyさん :2006/09/23(土) 17:20:39 ID:pwav1FM0
すいませんPHPからjavascriptに引数を渡すことってできますか? できるならどうやるか説明してあるサイトなどを教えてください。 ググってみたけどキーワードがイマイチ分からなくてうまく探せません。
>>389 キーワード:「サーバサイド クライアントサイド 違い」
391 :
nobodyさん :2006/09/23(土) 17:37:49 ID:iHfFDUzp
2chのID(pwav1FM0←こんなの)ってどうやって生成してるんでしょうか??
>>389 JavaScriptのソースそのものをPHPが生成できるから、
データを引数に埋め込んだJavaScriptソースを作って
表示してしまえばOK
393 :
nobodyさん :2006/09/23(土) 17:43:38 ID:pwav1FM0
>>392 おー!なるほど!
頭固かったです。
助言ありがとうございます
この板のヤツってさ、自分よりも低スキル(=低能)と みなした相手が、自分よりも高額の報酬を 受け取ってるって感じると、心の底から激しい 敵意と憎しみと怒りの感情が湧き上がってきて 対象のサーバーを法律無視で勝手にアタックしたり とかしてるの?
397 :
nobodyさん :2006/09/23(土) 21:12:36 ID:+xHt5Ti5
多次元配列の中身を一度すべて外部ファイルに書き出してから 別のPHPファイルでその中身を参照し多次元配列の中身を すべて取り出し、元あった配列と同じように格納したいのですが どのような方法があるでしょうか? 要素数は数字ではなくこちらが任意に割り当てた文字列です ご教示ください。よろしくお願いいたします。
>>397 1:多次元配列の中身をファイルに書き込む
2:ファイルを読み込む
3:読み込んだファイル内容を多次元配列に書き込む
これで良いんじゃないか!?
>>397 やってることはまさにセッションの仕組みだな
>>396 え?否定はしないってこと?
やっぱりやってたんだ
402 :
nobodyさん :2006/09/23(土) 22:18:05 ID:3bqiWr3U
クライアントから入力された情報をデータベースに書き込むのですが、 セキュリティー対策でたとえば何があるでしょうか? xxs対策でhtmlspecialcharsで無害化(『'』も含める)以外に なにかありましたらどうか私にご教授お願いいたします。
>>395 サーバ晒す質問者なんていないだろ。。。
あ、えがみボンバイエイが居たかW
攻撃されたん?
>>402 SQLインジェクション
CSRF
辺りでぐぐる
>>402 htmlspecialcharsは必要無くね?
>>397 serialize() → fwrite() → fread() → unserialize()
>>397 var_export($val, true) か serialize($val) で得られる文字列なら元に戻せる。
408 :
nobodyさん :2006/09/23(土) 23:54:52 ID:9euC2hhU
PHP4で、こういう親クラスがあったとして --------------------------------------- class Parent { var $array = array(1, 2, 3); } --------------------------------------- A: 同一値でvarが上書きされた場合 --------------------------------------- class A extends Parent { var $array = array(1, 2, 3); } --------------------------------------- B: var指定無しの場合 --------------------------------------- class B extends Parent { } --------------------------------------- AとB共に$this->arrayはarray(1,2,3)なんだけど $this->arrayが、Aのように同一値の上書きなのか Bのようにサブクラスで上書き指定がないから継承されてるのか どちらなのかをサブクラス内から判断する方法ってある? get_object_vars/get_class_varsでも継承後の値になっちまう
ない
同じ値で上書きする意味と必要性がない
>>402 xxsじゃなくてxssね。しかもその意味もよく理解していないようだな。
XSSってのはHTML表示の時に問題になるのであって、データベース関連には関係ない。
データベースへの入力にはそれ専用のエスケープ関数があるから調べて使え。
>>404 このド素人に現段階でCSRFなんて言っても無用な混乱を招くだけの気がする。
今からUTFでの文字化けの物まねしま〜す ?????????、???????]?????、???
>>405 htmlspecialcharsはXSS対策の一番簡単な基本だぞ。
データベースの書き込み時にhtmlspecialcharsしない人もいるよ 表示時にhtmlspecialchars
>>413 データベースにデータを挿入する祭にhtmlspecialchars( )で処理すると、text/htmlなどのフォーマット意外
(例えば電子メール)で利用する際に使えなくなるから、再利用性が無いし効率が悪い。
だったらHTML文書でブラウザに出力する際にhtmlspecialchars( )で処理すればいい。
再利用性を考えたらhtmlspecialcharsなんて使わないだろ。
表示部分に再利用性はさすがにいらんだろ。
419 :
nobodyさん :2006/09/24(日) 10:02:50 ID:hqJ9+PnB
>>415 ひろみちゅ先生は、表示時ではなくDB挿入時にhtmlspecialcharsすることをすすめているのか?
アップロードしたファイルを、DBに登録する前に一時フォルダに保存してるんだけど、 登録ボタン押す前に、他のリンクボタンを押されたら、一時フォルダに画像が残る。 どうすれば、良いのですか?
>>420 そのワークの保存が必要な処理なら、定期的に古いファイルを掃除する
スクリプトの実行がベターじゃないかな。
掃除スクリプトはcronバッチでもアップロード処理の頭でもどっちでもいいけど。
>>416-419 一般に表示は更新に比べて使用頻度の高い処理なので、
高パフォーマンスを必要とする大規模サイトではあらかじめ変換しとくよね。
再利用性を意識するなら元データと変換済みデータの2種類保存。
パフォーマンスに特にこだわらないんであれば元のまま置いといた方が便利なこともある。
DB格納ではなく静的HTMLを生成しちゃう場合もあるけどそれはシステムに応じてTPO。
>>418 >>416 みたいにメール配信に使う場合とか、検索処理で使いたいとか(実体参照変換
されてると精度または速度に難が出る)、あと表示データの再編集機能とか付けることもあるかな?
現在から、一週間前までの日付をリストアップしたいんですが、 date関数では現在の日付しか返してくれません。 何かよい関数はありませんか?
>>423 一般に
3600 * 24 * 日数
をtime値から引いて使う
>>421 ファイルをアップ→確認ページ→登録。という流れで、確認ページでファイルの適正を
調べて、エラーがあれば削除、無ければ一時保存してます。
んで、そのファイルを登録ページでDBに登録してるのですが。
cronはちょっと、解らないっぽいす。。
こうゆう場合、どんな風にすればいいんですかね!?
所定のボタン以外が押されたら、削除してリンク先に飛ぶことってできます?
>>425 とりあえず、システムの /tmp に一時保存しておけば?
あれって定期的に自動で削除されるんだっけ。
それから上手に設計することも大切。
というか、ファイルの適正を調べるって具体的に何がしたいの?
>>425 そういう場合、手っ取り早いのはアップロードの開始または受信ページの処理で
古いゴミファイルが残ってないか探して掃除する処理を追加でいれとく方法。
所定のボタン以外クリック〜は結構ムリがあるので諦めた方が吉。
>>426 サーバー再起動が入らなきゃ消えないと思うけど >/tmp
アップロードで途中に確認処理を入れたいくらいはごく普通の話じゃない?
function die_tmpfile( $filename ) { link( $filename ); exit; }
430 :
nobodyさん :2006/09/24(日) 12:29:28 ID:OMjQUi71
function urlsize($url) { $size = strlen(file_get_contents($url)); return $size; }
>>431 おー、どうもありがとうございます。
でも、このばあいファイルがない時すごい時間がかかっちゃうんですけど
タイムアウトの設定とかできないんでしょうか?
>>425 確認ページって別ページに遷移するのか?
そうなら
>>426 のtmpfileは使えない(fcloseで消える)
>>434 allow_url_fopen がOFFなんだろうな。
>>436 fsockopen使ってHEADアクセスしてみるとか。
この板の連中ってさ、 「自分よりも低スキル(=低能)」 とみなした相手が 「自分よりも高額の報酬を受け取っている」 と知ったとき、どういう感情を抱くの?
>>435 それだったらfile_get_contentsもダメのような・・
$fp = fopen($url, 'r');
$stat = fstat($fp);
echo $stat['size'];
とかどうなんだろ
440 :
nobodyさん :2006/09/24(日) 13:49:40 ID:OMjQUi71
とりあえず
>>431 でファイルサイズは取得できるのでよしとしときます
助言ありがとうございました
filesizeにURLが指定できるようになったのはPHP 5から。 マニュアル嫁
443 :
nobodyさん :2006/09/24(日) 14:03:59 ID:DZtBW6OC
てすと
444 :
nobodyさん :2006/09/24(日) 14:36:22 ID:uiOmiLkx
はじめまして。PHP5の環境で勉強をしています。 色々と機能をつけたし、ユーザー関数を雨後のたけのこのように作ってきたのですが、 そうするとあたり前のように似たような関数が作られ、使いがっての悪い関数は使われなくなりソースの片隅に放置されてしまいます。 このように定義はされているが、一度も呼び出される可能性のない関数を調べることは出来るのでしょうか? もしそのような便利な方法などがあればご教授ください。 よろしくお願いします。
>>444 むつかしいな。
grepで頑張るか。
parsekitである程度調べられないかな?(php5で動くっけ?)
定義されてる関数の列挙くらいはできるので、そのリスト+適当にスクリプト書く+grepでやるとか。
つーか、正規表現でゴリゴリ書いてもけっこうすぐできそうだな。
/\bfunction\s(\S+)\s*\(/
で定義を抽出。それぞれの関数名に対して
/(?<!\bfunction\s)\b$func_name\s*\(/
の出現回数を数える。
あ、<?php ?>の外側と文字列とコメントを除かないとマズイか。
それじゃ簡単な字句解析ルーチン作って・・・・・・たぶん俺はこの辺で寝ると思う。
>>423 foreach(range(1,7) AS $passday){
echo date("Y-m-d",strtotime("-{$passday} day"));
}
>>438 技術的な能力が低くても、技術を換金する能力が高いことも
経済社会においては高報酬につながるとあらためて思うだけ。
>>444 Javaのように、種類別にクラス化するとか。
フォームにenctype="multipart/form-data"を指定すると、文字化けする。 この記述をなくすと、正常に次のページで表示される。 ずっと悩んでます。どうか教えてください。 ちなみに両ページともEUCです。
450 :
nobodyさん :2006/09/24(日) 18:08:06 ID:hqJ9+PnB
「次のページ」のヘッダの部分に <!-- 美乳 --> と書いてください。そうすると文字化けがなおります。 詳しくは、Googleで「文字化け 美乳」をキーワードにして検索して自分で調べてみてください
452 :
nobodyさん :2006/09/24(日) 18:31:51 ID:hqJ9+PnB
>>452 ありがとうございます!!!そのページにある
「EUC-JP ユーザ用の php.ini の設定」の設定に変更してみたところうまくいきました!!
本当にありがとうございます。
バージョン言って無くて申し訳無かったです。
PHP Version 5.1.6でやってます。
DBの質問はここで良いのでしょうか?
違っていれば別スレに誘導していただけると嬉しいです。
http://allabout.co.jp/internet/database/closeup/CU20020721/index.htm このサイトを見てMySQLをインストールしました。(3.23.58)
cd mysql\bin と入力すると「指定されたパスはありません」と出たので、
これはc\mysql\bin で解決しました。
次に、
mysqladmin ping
と入力して、稼動しているか調べようとしたのですが
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to MySQL server on 'localhost' (10061)'
Check that mysqld is running on localhost and that the port is 3306.
You can check this by doing 'telnet localhost 3306'
とエラーがでます。
これは、localhostが見つからないということなのでしょうか?
>>419 逆だよ
ひろみちゅ先生は、HTMLとして出力するときに、htmlspecialcharsすることを推奨している
456 :
454 :2006/09/24(日) 20:09:05 ID:???
すみません、サービスを稼動していなかったようです 事故解決しました
>>455 だったら初めから余計なこと言うなボケ。素人に誤解を招く。
>>414 が正しいこと言ってるのに、
>>415 でお前が余計なこと書いたから
このような流れになった。
ちなみに俺はこの流れに一切関係ない。初めて発言した。
アップロードされたファイルのMD5チェックとGDによるサムネイル生成を しているのですが.jpgのギガピクセル超え(5MB以上)だと極端に重くなります。 処理時間におおよそ20秒程度。 これで普通でしょうか
AccessでDBいじれるようになったので記念パピコ 皆からしたら「それくらい?」って思うが俺からしたら大進歩♪
ImageMagickは試した?
>>460 おめでとう。
でも全然PHP関係ないような?
ってかプログラミングにまったく関係無いよな?
>>462 PHP+MySQLなのでここでいいのかな?と思ったがやっぱり場違いでした><;
465 :
nobodyさん :2006/09/24(日) 22:44:08 ID:C1aKz/pP
本を見ると 論理演算子で ! は否定となってるのですが誰か詳しく教えてください。 ifの中に組み込むとか…… たとえば $i = 5; if (!$i = 5){ echo "iは5"; }else{ echo "iは5でない"; } とやると iは5でないとなります。 しかし $i = 4; としても iは5でないとなります。 $i=5; のとき iは5ではない=5 → 偽 となりそうなのはわかるのですが $i=4; のとき iは4ではない=5 → 偽 となるのが意味わかりません。
if (!$i == 5)
その本に書いてあるって絶対・・・。 まぁ誰しも通る道だけどね。
ま、まぁ、しょうがない・・・かな。 本とかマニュアル、よく読もうよと言いたいとこだけど。
PHP以外の言語をいじったこと無い人だと、マニュアルだけでは難しいかも知れない。 あのマニュアルは用語とか多用しているし、プログラミング経験が無い人には取っ付きにくいと思う。 だが日本語訳もあるしかなり環境は良いなPHPって……。
470 :
465 :2006/09/24(日) 23:22:25 ID:C1aKz/pP
$i が真でないときに真を返す となっていました。 ということは $i が偽のとき真を返す。 $i = 4; if(!$i == 5){ echo "iは5"; }else{ echo "iは5でない"; } i=4 =5でないから偽 偽の場合は真を返す → echo "iは5"; のはずなんですが…… 偽の答えがでてきます。 考え方が何か間違ってますでしょうか?
471 :
465 :2006/09/24(日) 23:27:01 ID:C1aKz/pP
$i = 4; if($i>5 && $i<10){ echo "6〜9です"; }else{ echo "6〜9ではありません"; } みたいな、論理演算子で&&と||は理解したのですが…… ! がどうしても。 }
論理の問題だろ。
>>470 演算子の優先順位(掛け算や割り算は足し算引き算より先に計算される、というアレね)で
! は == より上。
だから if(! $i == 5) ってのは
まず ! $i が計算されて、$i が 0 であれば 1に、0以外であれば 1 にされる。
そしてそれが == 5 で 5と一致するか、を判定される。
正しくは if(! ($i == 5)) のように書く。
ただのタイプミスか、本気で間違ってるのかはエスパーじゃないと判断できない。
俺なら if ($i != 5) って書くな
愛を否定するやつらばかりだな
>>477 単に結果だけを得たいならそうなんだけど、
今回は ! 演算子の意味を勉強したいって話みたいだから。
俺なら プリント 5 って書くな
普通そう書くだろうけど、 論理演算子! についての質問だからね。
確かに深く考えると何か頭がこんがらがってきた 風呂行ってさっぱりしてくるか それはそうとちょっと聞いてくれ。 俺10月からPGじゃなくなるんだ 細かく書いちゃうと特定されるかも知れないから書かないけど SEでもない。 やることはもちろんこの業界なんだけど何か寂しい 仕事でプログラミングできないのが凄く寂しい またプログラミングがしたいな
484 :
465 :2006/09/25(月) 00:08:36 ID:9eV2tYIW
>>472 さん
>>474 さん
>>475 さん
どうもありがとうございます。
boolean に変換する場合、次の値は FALSE とみなされます。
がとても参考になりました。
演算子の優先順位があるとは気づかなかったです。 ようやく一歩前に進めたと思います。
これからいろいろサンプル作って試してみます。
どうもありがとうございました。
>>483 まぁ、日曜大工みたいな「趣味としてのプログラミング」も悪くはなかろう
>>484 算数の問題じゃない?
>>483 職業プログラマじゃなくたっていいじゃないの。
何か面白いスクリプトを作って公開しませう。
// というかこの板、職業プログラマが多いのかい。
// 私みたいにWebサイトで使う、ごくごく趣味みたいな感覚の人はいる?
>>486 自サイトですらないローカルで弄って遊んでる人がここに
ぇ、何の為にやってるかって?
・・暇潰し・・・?
488 :
nobodyさん :2006/09/25(月) 00:37:29 ID:dmDwzgtG
>>488 スクリプト改造をいらしているならスレ違い
自分が作った物を提示してください
ここはプログラムする人のスレです
$_POST['message'] の内容をチェックして、特定の語句があれば書き込まないようにすればいいんじゃない?
array() in_array() ifとelse だけで作れるよ
禁止語句という機能を付け加えたいという意味なら ----------------------------------------------- $ng = array('禁止語句1','禁止語句2','禁止語句3'・・・); foreach ($ng as $value) { if (strpos($post, $value) !== false) { echo '卑猥な言葉が盛りだくさんです。'; exit; } } 書き込み処理 ----------------------------------------------- 意図と違ったらスマソ。 ちなみに合ってたとしてもマニュアルでstrpos()をちゃんと調べてね。
492 :
nobodyさん :2006/09/25(月) 12:04:57 ID:rFgBtun6
>492 リクルートってあんた
>>492 そこのURLがRSSフォーマットじゃない
先にXMLとRSSが何かを調べた方がいいかと
simplexml的なのをPEARでやりたいなら
XML_Serializerに入ってるXML_Unserializer使え
496 :
nobodyさん :2006/09/25(月) 15:24:06 ID:d7O7pv61
一応php5のバージョンと出たエラーを書くといいかも
>>496 if(!$_GET[site] || !strstr($_SERVER[HTTP_REFERER],"php.s3.to") || !ereg("^
http:// ",$_GET[site])){
↓
if(!$_GET[site] || !ereg("^
http:// ",$_GET[site])){
499 :
496 :2006/09/25(月) 16:37:04 ID:d7O7pv61
if(!isset($_GET[site]) || preg_match("|^
http://$| ",$_GET[site])){
でどうかな
単にpregしか分かんないってのもあるけど
strstr($_SERVER[HTTP_REFERER],"php.s3.to")
の php.s3.to 部分を自分のドメインにしろって事なのかな、説明が無いから分かりにくい。
501 :
492 :2006/09/25(月) 16:44:32 ID:rFgBtun6
>494,495 ありがとうございます。その通りっぽいです。 pearなどのライブラリを使わないで書く方法が見つかったので、 それでやりたいと思います。ありがとうございました。
502 :
4 :2006/09/25(月) 16:47:25 ID:WNDcSAnJ
DBから取得した日本語が文字化けしてしまいます。 UTF-8が良いと聞いたので、それで書いています。 実行してみると、日本語が???に文字化けしてしまいます。 どのように対処すれば良いのでしょうか?
それをコピーした~~.htmlをつくり表示>エンコードでどんなコードを調べて・・・
506 :
504 :2006/09/25(月) 17:33:21 ID:???
>>505 UTF-8です。
文の最初にmb_internal_encoding("UTF-8");としても文字化けしたままです。
出力時にmb_convert_encoding($str,"UTF-8");とするとうまく表示されるのですが、
出力するたびに変換していたら文が長くなってしまうので、最初に指定しておきたいです。
>>506 それはDBから受け取ったエンコーディングがUTF-8じゃないんじゃない?
DBから受け取った状態のまま、エンコーディングをIEなりで確認してみればいいじゃない?
であとはDBの話っぽいので板違いかも
DB何使ってるか書けば誰かが答えてくれるかも
DB側の出力を何とかする必要があるんじゃないかな
>>506 header関数で文字コード指定してみろ。
509 :
nobodyさん :2006/09/25(月) 17:47:55 ID:gQCSf4GG
DBとだけ書かれても答えようがない。 全部のDBが同じだと思うな。 データベース作成する時に文字コードセットしたか? mysqlならcharacter set utf8 pgsqlなら--encoding=utf8
510 :
504 :2006/09/25(月) 17:48:15 ID:???
>>507 >DBから受け取った状態のまま
これは、エンコーディングをせずそのまま出力して確認ということでしょうか?
でしたらUTF-8になっています。
DBはMySQLを使っています。
板違いになりましたが、どなたか答えていただければ幸いです。
511 :
496 :2006/09/25(月) 17:48:28 ID:d7O7pv61
>>500 わざわざすみません;
書いて頂いたその記述と
strstr($_SERVER[HTTP_REFERER],"php.s3.to") に自分のドメインを
入れてみましたがやはり表示できませんでしたorz
ちょっと鯖変えて試してみたいと思います。
ありがとうございました。
512 :
nobodyさん :2006/09/25(月) 17:49:56 ID:gQCSf4GG
あ、あとhtmlのヘッダで <meta http-equiv="content-type" content="text/html; charset=utf-8" />
>>510 > >DBから受け取った状態のまま
> これは、エンコーディングをせずそのまま出力して確認ということでしょうか?
> でしたらUTF-8になっています。
UTF-8でブラウザ側で表示されてるなら問題無いじゃん。
って、違うよね・・
ブラウザ側で色々エンコード変えてみて、テストしてって話だよね・・
あとはDBのエンコード確認する方法をDB関係のスレで聞いてきてはどうですか
>>511 あぁー、レン鯖で外部URLがphpから見れない設定とかなのかな。
515 :
504 :2006/09/25(月) 17:56:20 ID:???
>>508 header("Content-Type: text/html;charset=UTF-8");
と指定したのですが、変わりませんでした。
>>509 MySQLです。
データベース作成時には特に何もいじっていません。
また、設定の仕方がわかりません。
>>512 それはもともと表記されていましたが、消しても書いても変化はありませんでした。
>>513 UTF-8では文字化けした状態で表示
EUC、SJIS、JISでは何も表示されません。
DBの方に言ってみることにします。
有難うございました。
そもそもDBでも文字化けしていないかも心配
Image Magickの話が出たので便乗して質問です。 WinXP、PHP 5.1.4 php_imagick.dllをphp.iniに追加しましたがロードに失敗してしまいます(読み込めないとのエラーがログに吐かれていた)。 mbstringやpdoなど、他のモジュールはロードできています。ファイル名が間違っていないか何度もチェックしましたが合っています。何が原因なのですか?
function str($str){ $str .= aaa; return($str); } $str = "あいうえお"; echo str($str); 上記のようにすると、「あいうえおaaa」と出力されます。 ここまではいいのですが、$str以外の変数にも同じようにしたいのですが、 どのようにすれば良いのでしょうか? つまり、$strだけじゃなく、 str($hogehoge);や str($aiueo);など いろんな変数にも対応できるようにしたいです。
>>518 echo str($hogehoge);
echo str($aiueo);
>>519 ありがとうございます!
functionの変数はその場限りで特に関係ないのですね
>>518 function ($a)
{
$a .= 'aaa';
return $a;
}
$str = 'あいうえお';
$hogehoge = 'ほげほげ';
$aiueo = 'あいうえお';
echo( $str );
echo( $hogehoge );
echo( $aiueo );
>>521 もありがとうございます。
function内で使った変数はその場限りで他に支障はないのですか?
エンコードの話が出ていたので便乗 SJISとJISとEUCとUTF-8 どう違うのでしょうか? また何か説明の載っているわかりやすいサイトはありませんか?
>>522 せめてもう少し書籍等を読んだほうが・・
関数内の変数は外には影響しません
このあたりを実行すれば理解出来るんじゃない
---------------
$a = 5;
print $a . '<br>';
test();
function test(){
$a = 1;
print $a;
}
--------------
526 :
nobodyさん :2006/09/25(月) 18:39:28 ID:gQCSf4GG
>>515 セットの仕方が分かりませんってさ
mysqlならcharacter set utf8
pgsqlなら--encoding=utf8
って書いたじゃん・・・
ページの表示時間を遅くするのってどうやったらいいですか?
ありがとう 今辞書でちょうど見つけたところw 聞く前に調べるべきでした・・・
>>526 次スレで、テンプレに追加した方がいいかもね。
mysql 文字コード指定 でググって一個目で何とかなるんとちゃう
sleep(20)で停止中に再読み込みしたら スクリプトを停止にしたいんですが どうやったらいいですか?
>>532 勝手に止まらなかったっけ?
ブラウザが再読み込み→Apacheにリクエスト中断発信→ApacheはプロセスにAbortシグナル発行
って流れだったと思う。
問題はPHPがsleep中にシグナルを受け取れるかどうかだと思うけど、SQLクエリー発行中はともかく
sleep中なら多分受け取ってると思うんだけど。
535 :
nobodyさん :2006/09/25(月) 22:23:46 ID:UugMM9l5
IISサーバで、直前に表示していたページのURLを取得したいのですが そのような関数や変数はありますか?
Referer
IISだと$_SERVER['HTTP_REFERER']って使えないの?
とある外来オープンソース(I18N化対応、日本語は EUC-JP,SJIS,UTF-8を選択)で、 メールを送信するとISO-2022-JPで送信されない。 なにも特別な対応していないからあたりまえだが。 いままでは、mb系のfunctionで対応してきたが、コアチームからバグが登録されたからどうにかしろ といわれたんだげど、ポリシーでiconv系もmb系も使用しないらしい。 この条件で一体何ができるだろう。なんかいい方法ある?
jcode.phpで頑張るw
ISO-2022-JPで送信するfunctionなりclassなりを追加する。
>>539 540
いいアイデアだけど、日本語に特化したのは130%拒否される。
バグ登録した方がパッチを出しているが、日本語オンリーな上にバグってる。w
事象はわかっていたけどまともな対応はできないので、放置しておいたのになぁ。
いらんことを。
早いうちに、その(クソ)ルールでは無理です、ときっぱり言った方がいい
なんか話がよくわからん・・・ 538,541は、そのオープンソースのメールシステム(パッケージ)を使う側じゃないの? ん・・・コアチームではないけど、開発してるってことかな。 もしそうだとしたら、コアクラスを拡張してISO-2022-JPで送信できるようにするのはパッケージが「日本語に特化する」ことにはならないと思うけど。
>>542 だね。とりあえず、日本ではそのルールをかえない限り、野良パッチするしかないと書いといた。
XOOPSみたいに、日本語版を出すしかないのか。ニッチなOSSだから喜ぶひとはいないし、報われないし。
放置決定。
>>543 いや、翻訳してるだけなんだけど、使う側ではないのよ。キムチの人とか、4000年の人が、
いろいろバグを登録するので、コアチームがわからないとメールをなげてきた。
ごめん。 話から察するにコアチームが言語の汎用性を深く考えてなさそうだから、簡単に拡張できないっていう難しさがあるんだろうね。 ISO-2022-JPに対応するサブクラスを作成したとしても、コアクラスに小さな、または大きな修正が必要になるだろうと。 それをコアチームが認めないのかな。仕事だとプログラミング以外の難しさもあるからね。
543,546です 勝手な想像で見当違いな事を言ってしまい申し訳ない。 バグを登録してくる人達に、コアチームのポリシー・「バグ」ではないこと・修正されないことを伝えるだけだね。
548 :
545 :2006/09/26(火) 00:36:18 ID:???
>>547 いや、普通に考えるとそうだと思う。
Exciteで翻訳しながらそう回答した。
マルチバイトをアメリカンに説明するのはムズい。日本語でも説明できないのに。
Thanks.
549 :
nobodyさん :2006/09/26(火) 03:46:23 ID:byyWwaMP
>>523 文字コードはUTF-8で作っていった方がいいと思うよ。これからの時代。
あるSNSに↓のフォームがあったんですけど、 actionにある記述って拡張子とかいらないのですか? てか、これだけでPHPで作られてるのかわかりますか? <form name="link" method="post" action="../diary/Detail" >
それだけじゃPHPかどうか分からない
自分も疑問だなあ。 たまに拡張子のないページ見かける。 ページ遷移でjspとか出てきたりして、 はじめてJavaだったのかーって感じだったり。 これはいったいどういう仕組み? htaccessかなんかかな?
>>549 自鯖立ててる人は真似しちゃダメよん
※転送量1.5倍(当社比)
554 :
150 :2006/09/26(火) 09:49:36 ID:???
>>551 552
エイリアスじゃない?
プログラム自体の位置を見せたくないとか。
やっぱりわからないですよね。。 拡張子ってどうやれば、隠せるのでしょか? あと、そのサイトがphpやperlで作られているって見分ける方法ってあるのでしょうか?
GREEの写真登録みたいに、登録したあとに、「登録しました」って表示させ、 数秒後に次のページ渡すにはどうすればいいのでしょうか!? sleepとheaderではできないですよね。。
>>556 <meta http-equiv="Refresh" content="秒数;URL=移動先URL">
>>557 おぉー簡単だ!!ありがとうございます!
もしかしたら../diary.phpかもしれん。
function henkan($string){ if(get_magic_quotes_gpc()){ $string = stripslashes($string);} $string = htmlspecialchars($string); return $string; } こうしたstringをそのまま、データベース(mysql)にぶち込んでるけど、 問題ってあるかな?
>>555 作る側が意識して隠してれば分からない
Content negotiationとかrewriteとかScriptAliasとか方法はいろいろある
>>561 問題ありまくる
普通にSQLインジェクションできちゃうよそれじゃあ
564 ですよね。これはXSS対策で、HTMLに表示しなければ関係ないですよね?? これとは、全く別に、POSTで送られてきた値にinitvalやaddslashを用いればいいのでしょうか? それとも、561の関数にinitvalやaddslashを入れればいいのでしょうか?
理想はマジッククォートはOFFで、リクエストされたデータには 何もフィルタかけず(オーバーヘッドを減らすため) SQLInjection対策でDBに突っ込むものを直前にエスケープ(addslashes) XSS対策で出力するものを直前にHTML特殊文字変換(htmlspeicalchars) っていうことじゃないかね
$_SERVER[PHP_SELF]で、ファイルをアップしmove_uploaded_fileで失敗したら、 エラーを表示させてるのですが、この場合、エラーが出たら、 unlinkで削除するのが良いのでしょうか?したら、このファイルは存在しないみたいな エラーがでたので、アップされたファイルは保存されていないのでしょうか?
>>566 なるほど。勉強になります。あざっす!
でも、ホスティングだとマジッククオートonになってるんですよね。。
567です。 すいません。タイプミスでした。ちゃんと削除されました。
570 :
nobodyさん :2006/09/26(火) 16:31:25 ID:EMjXfoVa
class内の処理を途中で抜け出すことって可能でしょうか? $obj = new EveLove(); $obj2= new EveDisLove(); class EveLove{ function EveLove() { echo "test"; echo "test2"; ここで抜ける .....echo "test20"; } } class EveDisLove{ function EveDisLove() { echo "1"; echo "2"; .....echo "20"; } } 表示を test test2 1234...20となるようにしたいです 可能であれば関数等教えてくださいm(_ _)m
return
>>572 意味が分からん。が、書いてる内容そのままに答えるなら
returnで抜けるか、実行させたくない部分をコメントアウト、もしくは削除しろよ。
575 :
532 :2006/09/26(火) 20:00:27 ID:???
やっぱり sleep(20)で一時停止中に再読み込みやストップボタン押しても、20秒後停止が解除されたら スクリプトが最後まで実行されてしまうんですが、 どうしたらいいのですか? 頭にignore_user_abort(1); をつけたのですが変わらずでした おしえてください
>>565 、
>>566 なぜ、わざわざaddslashesを使うんだよ?
SQLエスケープ専用の関数があるんだからそれを使えよ。
お前程度の知識でaddslashesを使うと、必ず穴が出る。
>>576 だからエスケープって書いてるじゃん
上でのaddslashes云々の話から繋がるように例として挙げてる
文脈から判断してくれよそれくらい
579 :
nobodyさん :2006/09/26(火) 21:14:43 ID:OUvdqD7Q
PDOのエスケープは楽ちんだけど、あれって大丈夫?
580 :
nobodyさん :2006/09/26(火) 21:25:16 ID:4x0TvdIu
echo レベルひっくぅ・・・・
>>577 バカかお前は。俺はその本はもちろん持ってるし、高木浩光氏のサイトも読んでる。
お前みたいなバカがいまだにaddslashesなんか使ってるから問題発生するんだ。
>>578 はぁ? 何言ってんの? 勝手に無茶苦茶な話をしてんじゃねぇよチンカス。
だからエスケープにはaddslashesじゃなくて専用関数(mysql_real_escape_string等)使えっての。
郵便番号入れると住所がはいるフォームがありますが、なにか スクリプトは公開されていないでしょうか。
なにやら半島人が紛れ込んでますね^^; そんな真っ赤にならんでも^^;;;;;
>>581 その本読んでるなら、そんなにaddslashesを批判する必要なくない!?
まあ、おれはよくわからんがその本では、mysql_real_escape_stringよりも
addslashesを薦めてるぞ。
585 :
578 :2006/09/26(火) 22:31:27 ID:???
>>581 はぁ?何言ってんの、チンカスレベルプログラマw
あなたはどっち派? mysql_real_escape_string or addslashes おれ、addslashes
>>585 具体的に反論できないチンカス乙
悔しかったらmysql_real_escape_stringよりも
addslashesを使うべき理由を挙げてみろ。
P D O 最 強
基本的に、ストアドついてればいいよ。
>>585 >>587 どっちもチンカス以下のなんだからわざわざしゃしゃり出てくるんじゃねーよマンカス。
>>589 これ↓、無意味なコードじゃねぇ? 別に数値かどうかに関わらず全てクォートすればいいわけで。
数値かどうか判定する分だけ無駄な処理に思われる。
// 数値あるいは数値形式の文字列以外をクオートする
if (!is_numeric($value)) {
$value = "'" . mysql_real_escape_string($value) . "'";
}
mysql_real_escape_string データの安全性を確保するため、MySQL へクエリを送信する場合には (わずかな例外を除いて)常にこの関数を用いなければなりません。
>>586 俺はmysql_〜派
理由。こっちなら文字コード設定に合わせて最適なエスケープをしてくれるから。
UTF-8しか使わないならどっちでもいーんじゃないの?
外部との連携とかあってSJIS使う羽目になったらaddslashesは「使えない」。
magic_quotesだけだと何がだめなの?
addslashesを使うメリットは、 処理が早い。 データベースコネクションの有無に影響されない。 逆変換が容易。 magic_quotes_gpcとの相性が良い。
597 :
現在 :2006/09/26(火) 23:27:22 ID:???
addslashes 1票 mysql_real_escape_string 2票
そもそもmysql_real_escape_stringとaddslashesではエスケープする対象の文字が違う
>>596 > magic_quotes_gpcとの相性が良い。
なんてことを考えていること自体がだめ
magic_quotes_gpc = onだと、addslashesを使う必要ないの?
>>591 マンカスは美味なのでチンカス以下ではありません。明らかに上です。
>>596 逆変換が必要になるケースが理解できない…
どういう場面でそんなことする羽目になるんだ。
magic_quotes_gpcはそもそも真面目にエスケープ処理を考えてる人なら
最初から使うべきものじゃないんだから考慮する必要を感じない。
すまん、HTML中に <?= echo 文字列 . $_POST['なんとか'];?> これが危険な理由がバカな漏れには分からないorz 教えてたもれ。
>>603 XSS
クロスサイトスクリプティング
でぐぐれ
とりあえず、よく分からんヤツはPDOとかPEAR::DBのプレイスホルダつかっときゃ間違いない
606 :
nobodyさん :2006/09/27(水) 00:44:56 ID:S78j1V6H
$_SESSION変数は、そのセッション中、ずっとメモリに保持されているのでしょうか? それとも、スクリプト内で呼ばれた時だけ、セッション・ファイルから 随時メモリに読み出されて利用されるのでしょうか? たとえば$_SESSION['login']='ok'という内容で格納されているとして、 スクリプト中で、if ($_SESSION['login']=='ok') {} のように使った場合、 $_SESSION['login']は、そのスクリプト終了後にメモリから解放されるのか、 それともセッションが継続する限りメモリ内に$_SESSION['login']が残り続けるのかが知りたいです。
>>596 サイテロ本の丸写し乙。
>処理が早い。
処理時間に有意の差が出るほど長大なSQLを使う場面があるとは思えない。
>データベースコネクションの有無に影響されない。
通常、エスケープしたSQLは、当然DBに接続して使うわけで、
結局コネクションは必要になる。
>逆変換が容易。
俺は今まで数々のWebアプリを作ったが、逆変換が必要だった場面など記憶にない。
>magic_quotes_gpcとの相性が良い。
いくらテロリストと相性が良くても、テロリストはテロリストだ。
>>606 1点、そもそも間違ってる部分があると思うんだが、
> それとも、スクリプト内で呼ばれた時だけ、セッション・ファイルから
> 随時メモリに読み出されて利用されるのでしょうか?
と
> $_SESSION['login']は、そのスクリプト終了後にメモリから解放されるのか、
の部分。
まるでスクリプトが終了してもメモリ上にデータが残ってるかのようだが、
スクリプト終了=使われてた全メモリ解放だよ。
というわけで正解は
スクリプトの中でセッションを開始した時点で全部の内容がメモリに読み出され、
スクリプトが終了した時点で全部解放される。
となる。
> スクリプト内で呼ばれた時だけ、
は間違いだが
> そのスクリプト終了後にメモリから解放される
は正解。
609 :
nobodyさん :2006/09/27(水) 01:22:05 ID:S78j1V6H
>>608 >スクリプト終了=使われてた全メモリ解放だよ
よく考えたらそれはそうでしたね。分かってたのに勘違いしました。
>スクリプトの中でセッションを開始した時点で全部の内容がメモリに読み出され
ズバリその点について気になっていたのでした。
たとえば$_SESSION['A']、$_SESSION['B']、$_SESSION['C']とあった場合、
スクリプト中で$_SESSION['A']だけを使った場合、メモリに読み込まれるのは$_SESSION['A']だけなのか、
それともA〜Cまで全部セッション開始(session_start)時に全部読み込まれてしまうのか、
それが質問したい点でした。
>>592 どうなんだろうね。俺はこういうちゃんとした処理してるほうが好きだけど。
俺だったらis_boolも判断して0か1に変換するし。mysqlだとtrue,false使えないんだよね。
汎用性のある、エスケープするfunctionなりクラスなり作るならしっかりやっといた方がいいとは思う。
mysql_real_escape_stringのマニュアルでは、引数にstringとってる。
まぁ何にしろ正常に動作するなら、あとは好みの問題かなぁ・・・
>>600 magic_quotes_gpcがonで、addslashesすると2重にエスケープされちゃうでしょ。
俺はmagic_quotes_gpcがonだったらstripslashesしてDBのエスケープ関数使う派。
でもpostgresのpg_escape_stringは何か問題があるという記事を読んだような気が・・・もう1回調べよっと。
>>610 でもさ、数値かどうかを判定するロジックを仮に無くしたとして、
それで何か弊害が出るかい?
その判定ロジックを省いて、
とにかくmysql_real_escape_stringをかければ、結果は同じでしょう。
612 :
611 :2006/09/27(水) 01:56:17 ID:???
あと、サイテロ本では、クエリ内に「整数であることを期待される変数」を埋めこむときに、 intval()をかけないと致命的だ・・・とか書いてるけど、 俺はそうは思わない。 なぜなら、その変数をPOSTなどから受け取った時点で、is_numericやctype_digitなど 適切な手段にてしっかりバリデートしてれば問題ないわけで。 (むろん、この場合でもmysql_real_escape_stringは必須だが)
いや、だから「正常に動作するなら〜」って書いたじゃん。 好みの問題だから、そこをお互いどうこう言っても仕方ない。 postで受け取った時点でっていうのはあるね。俺も初めの頃はそうしてた。 でも毎回やるのが面倒になったから、DB用のクラスにエスケープするfunction作って、あとはデータ全部投げるだけ。 エスケープ以外のバリデートが必要なところはその場その場でやるけどね。 まぁ、それも好みの問題。 特に俺のDBクラスではいくつかのDBに対応させてて、magic_quotes_gpcがonの時にstripslashesするからfunction内でのis_boolチェックは必須。
614 :
611 :2006/09/27(水) 02:15:59 ID:???
>>613 う〜ん、どうせ同じ正常な結果が得られるのなら、
わざわざ好んで無駄なコードを増やさないほうがいい気がするけど…。
コードが1行増えるたびにセキュリティ・ホールやバグが発生する可能性が増えると思う。
無意味なコードを「好みで」増やすという思考がよく理解できない。
「データ型」というのが理解できてるなら、俺の「好み」も理解できると思うのだが。 もし「データ型」を理解していて、あえて型チェックしないコードを書くのは、まぁアリだと思う。 でも話から察するにそうでもないみたいだね。プログラムの基礎を学んだほうがいいかもしれない。 PHPはデータ型が緩い言語だから柔軟にコーディング出来るのは利点だけど、 「データ型」を意識しない(理解できていない)ところからくるセキュリティホールやバグもあるわけです。 「好みの問題」とは言ったけど、データ型を理解できていないなら好みの問題では済まされない。 少し勉強してみて下さい。
>>615 >>612 の4行目を100回くらい読み直せ。
ついでに言うと、いまの話の流れで、データ型を考慮しないせいで
セキュリティ上の問題が発生するケースはありえない。
617 :
初心者 :2006/09/27(水) 03:04:17 ID:???
PHPでサイトを作っていて セキュリティーを意識した事は一度もないのですが どんな怖いことがおきますか? たまに鯖缶から突然PHPの停止を受ける事があるのですが 関係ありますか 鯖缶は外人なのでうまくコニュミニケーションがとれなくて 困ってます 教えてください
618 :
nobodyさん :2006/09/27(水) 03:27:44 ID:YNifcXJT
まずsageを半角で打てるようになるところから。
素朴な疑問だけど、magic_quotes_gpcがonになっていて.htaccessの php_flag magic_quotes_gpc off も受け付けないサーバーって存在するの?
.htaccessそのものを受付ないやつはそんざいする
input type="hidden"は使わないほうがいいと聞くのですが、 なぜでしょうか? また、使わないとすると代わりに何を使えばいいのでしょうか?
>>619 AllowOverride にOptionかAllが必要
>>621 データを持ち回すときにセキュリティーが必要な場合はセッションを使えってこと
普通の掲示板とかならhiddenで持ちまわしてもいい
>>623 どうもありがとうございます。
セッションですか・・・
ちょっとわからないので調べて勉強します。
tmp_fileをmove_upload_fileで移動させるのは、セキュリティ上、 良くないとどこかできいたのですが、本当でしょうか? 本当の場合、どうやって移動させるのがいいのでしょうか? 教えてください。
なんだそりゃ…
ちょうどmove_upload_file使ってたけど、 関数が定義されてないエラーが出て使えない・・・ PHPのバージョンは5.16。なんでだろう。
DBにINSERTするときに、htmlspecialcharsをしてINSERTするのですか? 別にする必要は無いですか?
>>623 そういう言い方は誤解を受ける。
hiddenだからセキュリティに問題があるとか、セッションだからセキュリティ的に安全ってわけじゃない。
どちらにしても入力データのバリデートや各種エスケープをしっかりやればいい。
もちろん、パスワードなど見せてはいけないデータをhiddenで持ちまわるのは厳禁。
>>628 とりあえずお前の認識は間違っている。
で、このスレを読み返すだけでも答えはあると思う。
mysql_real_escape_stringを行ってisertした値をDBから出して、出力するときは 、htmlspecailcharsをして出力するの!?
>>630 >>402-
>>422 ログぐらいみましょうね。
それとIDは表示してください。礼儀です。
検査せずに使うと、穴をついてきた悪い子の策にハマる可能性がある からな。
>>610 同感。自分も型チェックの分岐を書く。
stringを期待してる関数に他の型を渡す奴は低レベルとしか言いようがない。
>>634 =
>>610 、ジエン乙。
繰り返し言うが、mysql_real_escape_stringをかける段階において、
string型かどうかをチェックしなかったがために問題が発生するということは無い。
型の自動変換などを備えて、型について「わざわざ」甘くしてあるPHPにおいて、
不必要な場面まで型についてこだわるヤツこそ低レベルで馬鹿としか言いようがない。
悔しかったら型変換を怠った場合の問題点でも示してみたまえ(そんなもの無いけどね)。
637 :
634 :2006/09/27(水) 16:19:34 ID:???
俺は610ではないが? お前アレだな。けっこうイタイな。
>>637 負け惜しみはいいからさ、早く具体的な問題事例があれば出してみろよwww
まさかとは思うけど、逃げんなよww
たしかに、型について無闇にこだわる痛いキモヲタは何%か存在する。
640 :
アチャコ :2006/09/27(水) 16:44:56 ID:???
ケンカは良くないと思います
俺もそこまで型に拘らなくてもいいと思う。 参考までに聞きたいが、↓の様なコードを実行する際 $_POST['hoge']をどんな感じにエスケープしてる? $sql = "select * from test where data like '%".$_POST['hoge']."%'"; $result = mysql_query($sql); 俺はこんな感じの関数使ってる。 function sql_escape($sql){ $sql = mysql_real_escape_string($sql); $sql = str_replace(array("%", "_"), array("\%", "\_"), $sql); return $sql; }
PDO使っておけって マジで エスケープいらないから
643 :
634 :2006/09/27(水) 17:29:28 ID:???
%ってエスケープする必要あったっけ?
644 :
trab :2006/09/27(水) 17:29:59 ID:tKdESkZE
trabと申します。 早速ですがご質問です。 mail1.○○○.jp mail2.○○○.jp mail3.○○○.jp という風に複数のメールサーバを用意して phpのプログラム上から条件によって メールサーバを選択してメール送信することは 可能でしょうか? 例えばAさんならmail1.○○○.jp、 Bさんならmail2.○○○.jpという具合です。
646 :
trab :2006/09/27(水) 18:00:57 ID:tKdESkZE
nobodyさんへ 具体的にどのようにすればよいか 教えていただけないでしょうか?
今まさにノリノリのー 元気モリモリのー 色とりどりのー トリオ! さらにノビノビとー このトビトビのー 語尾と語尾をつなぐ 喜び!
あ、'%'自体を検索するときか。
>>646 コード書いてから質問してくれ。
丸投げとか無理
>>644 送る人によってSMTPサーバを変える必要があんの?
セッション変数がよくわからんです -----------st01.php <?php #ファイルの先頭に記述 session_start(); $_SESSION['id']=0; ?> <br><a href="st02.php">Session Test</a> -----------st02.php <?php #ファイルの先頭に記述 session_start(); echo $_SESSION['id']; ?> <form method="post" action="st02.php"> <table border="1"> <tr> <?php for($i=1;$i<10;$i++){ echo "<td><input type=\"submit\" name=\"$i\" value=\"$i\"></td>"; if(!empty($_POST['$i'])){ $_SESSION['id']=$i; } } ?> </tr> </table> </form> 各ボタン押したらそのボタンの値を表示させたいんだが0しか出ないよ(´・ω・`)
うわ、
>>606 らへんに書いてあった。参考にします。
すいませんすいません・・・orz
>>651 >if(!empty($_POST['$i'])){
問題はここにある
>>653 ありがとうございます。"$i"でくくったら出来ました。
でもクリック1回分遅れて表示してしまうので、正常には表示出来ません。
何とか上に表示させたいんですが、何か良い方法あればご教授を願いたいです。
すいません、自己解決しました。 for($i=1;$i<10;$i++){}の後ろにecho $_SESSION['id'];付けたら出来ました。 テーブルの下に表示されちゃうのではないのか?と思ったのですが </table>タグの前なので表示されるんですね、気づきませんでした。 ありがとうございました。
クリックした値を表示したいだけなら、セッションの中身じゃなくて $_POSTそのまま表示すれば良いだろ。 $_POSTで取った値をセッションに入れて、次のページに渡してるんだから クリック1回遅れるのは当たり前。
エラーを一切表示したくないのですが、 すべて@で処理してもエラー文が1行表示されます。 まったく何も表示しないという事は無理なんですか?
エスパーが来てるのか?>
display_errors = Off
呼んだ?
662 :
nobodyさん :2006/09/28(木) 00:18:50 ID:yFiHvde3
$text = '段落段落段落 段落段落段落段落段落 段落段落段落'; という文字列を……: '<p>段落段落段落段落段落段落段落段落</p> <p>段落段落段落</p> という感じで、空行で区切って「<p></p>」で括りたいのですが、どうすれば出来るのでしょうか? いろいろと試してみたのですがベストな方法が浮かびません。 よろしくお願いします。
2連続する改行を</p><p>に置換する
>>662 $text = '段落段落段落
段落段落段落段落段落
段落段落段落段落段落
段落段落段落段落段落
段落段落段落';
echo "<p>" . str_replace("\n\n", "</p><p>", $text) . "</p>";
>>650 携帯電話相手にスパム配信するとかなら必要
666 :
nobodyさん :2006/09/28(木) 02:51:04 ID:Pq7J5CUU
$ncolor = ($colorb) ? $colorb : $colora; ↑これって何ですか?
if ($colorb) { $ncolor = $colorb; } else { $ncolor = $colora; } と同じ意味
>>666 三項演算子。C言語由来の簡易な条件判断式。
670 :
662 :2006/09/28(木) 07:57:28 ID:yFiHvde3
>>663-664 ご回答ありがとうございます。
>>664 だと、連続した三つ以上の改行があると '<p></p>' という内容が空のP要素を
生成してしまいます。
自己解決かもしれませんが、次のようにしたら出来ました。
何か問題があれば指摘をよろしくです。
function 関数名 ($lines)
{
$lines = explode ("\n\n", $lines);
$lines = str_replace ("\n", '', $lines);
$line = '';
if (is_array ($lines)) {
for ($i = 0; $i < count ($lines); $i++) {
if (! preg_match ('/^$/', $lines[$i])) {
$line .= "<p>" . htmlspecialchars ($lines[$i]) . "</p>\n";
}
}
} else {
$line .= "<p>" . htmlspecialchars ($lines) . "</p>\n";
}
return $line;
}
>>670 > 連続した三つ以上の改行があると
そんな変な条件があるなら先に言わないと。
メインの変換処理で多重空行に対応するのも手だけど、
場合によっては先にイレギュラーなデータを補正しとくことで
ロジックを単純にでき、バグの少ない高品質なプログラムを
作ることができる、ということも覚えといた方がいいと思う。
でもぶっちゃけ、その程度なら
echo "<p>" . preg_replace("/\n\n+/", "</p><p>", $text) . "</p>";
でいいと思う。
htmlspecialcharsを仕込むなら
echo "<p>" . preg_replace("/\n\n+/", "</p><p>", htmlspecialchars($text)) . "</p>";
かね。
>>670 関数本体も冗長だな。
>>671 が正解だけど、全く同じロジック書く場合もこれくらい緩くていいよ。
function paragraphs($text)
{
$lines = array();
foreach ((array) explode("\n\n", $text) as $line) {
$line = str_replace("\n", '', $line);
if ($line != '') {
$lines[] = htmlspecialchars($line);
}
}
return '<p>' . implode("</p>\n<p>", $lines) . '</p>';
}
お聞きしたいんですけど、mixiのようなログインしてから個々の自分のページを見れるようにするには、 セッションを用いてるからなんですか?それとも、クッキーを使用しているのですか? セッションは、初期設定では24分!?ごとに一回アクセスがあるかぎり、 保持されると聞いたのですが、mixiの場合はその設定時間をのばしているのですか? また、ログアウトせずに、お気に入りに入れて開いても、何日もログインの 状態にあるのは、クッキーを使用しているからですよね? setcookieとsessionを両方、用いているのでしょか? 長くなって申し訳無いですが、ご教授下さい。
>>673 間違い探し
1.一般にセッションはCookieを利用して実装されるので併用が普通
2.セッションのデータ保持時間はPHPなどが勝手に定めてる
3.mixiはPerlで作られていてPHPのルールは関係ない
4.質問時のメルアド欄は「亜sdfghj」などと入れるものではない
で、本題だがmixiでセッションが使われてるかどうかは知らないが
パラメータなしのブックマークからログインできるのはCookieによるものだよ。
ああ、なんかこれだと回答が足りてないな。 ログイン後のページ遷移が自分のページ基準になるのは 単なるCookieでもできるし持ちまわるデータ量が多い場合は セッションを使う場合もある。mixiがどっちかは知らない。 mixi程度の処理でセッションが必要とも思わないし。 (必要なのはログイン情報だけでページ間でデータを持ちまわらないので)
>単なるCookieでもできるし持ちまわるデータ量が多い場合 データ量が多いとセッションなの!? セキュリティ面でクッキーよか、セッションの方がいいんじゃないの? ちなみに、mixiはphpも使われてます。
session.gc_maxlifetime
受け取った変数の中に「?」が含まれていると勝手に「\?」に変換されているのですが、回避する方法はないでしょうか?
679 :
nobodyさん :2006/09/28(木) 13:35:51 ID:X3mGBPuB
正規表現で '/hoge[1-9]/'の条件に当てはまる文字列を置き換えたいのですが、置き換える時に hoge1の場合はhogeXX hoge2の場合はhogeXXX とゆう置き換えにすることは可能でしょうか? どのようにすれば効率的かご教示くださいませm(_ _#)m
〇いう ×ゆう
682 :
681 :2006/09/28(木) 14:07:06 ID:???
ああ、性器表現でってことか。それはわからん。 わざわざ性器表現使う必要なくね?
683 :
nobodyさん :2006/09/28(木) 14:07:56 ID:bhCM1dKb
$hogehoge[$i]['fugafuga']というPHPの連想配列の値を javascriptのfor(i=0; i<10; i++)の中で取り出すには どういう風に書けばいいでしょうか? for(i=0; i<10; i++) { document.write(<?= $hogehoge[$i]['fugafuga'] ?>); } これは通用しませんでした,,,。 よろしくお願いします。
684 :
nobodyさん :2006/09/28(木) 14:08:41 ID:5RjmQpnD
すみません、配列に数字の0を代入する方法を教えてください $hairetsu[0] = '0'; これだと何も入らず空っぽだと認識されます><
685 :
nobodyさん :2006/09/28(木) 14:09:06 ID:X3mGBPuB
>>681 様
もしご存知でしたらお教えいただけないでしょうか?
str_replaceで'hoge1','hoge2'と置き換えするやり方はすぐに浮かぶのですが、
その場合、
'/hoge[1-9]h(a|b|c)/'という置き換えもありえますので厖大なソースになってしまいます。
>>679 preg_replace_callbackでできるけど、そこまで形が決まってるなら
$from = range(1, 9); $to = array();
foreach ($from as $n) $to[] = str_repeat('X', $n);
$result = str_replace($from, $to, $text);
でもいいかも。
正規表現使うなら、
preg_replace_callback('/hoge([1-9])/', function ($m) {
return 'hoge' . str_repeat('X', $m[1]);
}, $text);
って感じかな。どっちもあんま効率よくなさそうなので、適当に改造してくれ。
688 :
683 :2006/09/28(木) 14:19:36 ID:bhCM1dKb
>686 レスありがとうございます。 実際にはjavascriptの関数の引数として、phpの配列のあたいを順番に渡したいのです。 単に表示させるだけならphpで回すのですが、javascriptで処理しなければならないところがあるので。 phpの配列をそっくりjavascriptの配列に変換(?)するようなことはできないでしょうか?
>>688 できれば$hogehoge[$i]['fugafuga']なんていう面倒な構造に最初からならないように工夫したほうがいいけど、どうにもならないなら、
$hogehoge2 = array();
foreach ($hogehoge as $i => $hoge) {
$hogehoge2[$i] = $hoge['fugafuga'];
}
// ↑ここで ' と \ をエスケープする処理も必要ならいれる
?>
var hogehoge = ['<?php echo implode("', '", $hogehoge2)?>'];
for(i=0; i<10; i++) {
document.write(hogehoge2[i]);
}
こんな感じで無理やりやる。
690 :
nobodyさん :2006/09/28(木) 14:57:33 ID:bhCM1dKb
>689 レスありがとうございます。 javascriptのコードの中にphpの変数を入るというより、 hpの変数が展開されたjavascriptのコード全文を一個の文字列として丸ごとjavascriptに投げました。 強引な手段だとは思いますが、一応動きます。 これはマズイやりかたでしょうか?
691 :
nobodyさん :2006/09/28(木) 14:58:32 ID:bhCM1dKb
入るというより → 入れるというより hpの → phpの すみません。
>>688 Ajaxとかは別にして
サーバサイド---越えられない壁---クライアントサイド
>>690 動くならいいんじゃね?(そもそもやっていることが一般的とは言えないから)
ボトムネックになったら直せばいい。
694 :
662 :2006/09/28(木) 15:25:13 ID:yFiHvde3
695 :
nobodyさん :2006/09/28(木) 15:31:01 ID:bhCM1dKb
>692,693 ありがとうございます。 いま作っているサービスで、googlmapを使っていて、 mysqlからお店のデータをとりだして、map上の各マーカーをクリックしたときに出るふきだしの中身にそのデータを入れたかったんです。 極端にいうと、 $マーカー[マーカーの番号][お店の名前]; $マーカー[マーカーの番号][お店の電話番号]; とかそんな具合にしたのです。 マーカーの番号は、何個お店データが抽出されるか分からないので、 $iとおきました。 あとは、googlemapのjavascriptで、マーカーを表示させる行をforするだけだと思ったのですが、うまくいかなかったので、 そのjavascriptのコード全部を文字列としてphpの変数に入れました。 あとは、googlemapのコードの中でその変数を一回だけ表示させればいいという仕組みです。 ajaxとかは使えませんし、javascript自体もあまり分かっていないので、苦肉の策といったかんじです。
hoge.phpをhogeにリネーム(拡張子なしに) <FilesMatch "^hoge$"> ForceType application/x-httpd-php </FilesMatch>
○.htmlでphp動作させたければ、 AddType application/x-httpd-php .html と書いておけばいい。
>>697 <FilesMatch "^index$">
ForceType application/x-httpd-php
</FilesMatch>
とやって、indexにアクセスしましたが無理でした...
(index.php設置済み)
また、indexで設定した場合、DirectoryIndexの設定はindexになるのでしょうか?
index.phpをindexにリネームしろ
やっぱりリネームしないとダメなんですね… ありがとうです ではDirectoryIndexもindexにする必要がありそうですね
>>701 mod_rewrite使えばいいんじゃね
RewriteEngine On
RewriteRule ^(.*)$ $1.php
703 :
nobodyさん :2006/09/28(木) 18:42:29 ID:loAqiE0j
phpスクリプトの中でHTMLを書くとき <br> ではなく <br/> と書くのはどうしてなのでしょうか? <br>と書いても正しく動作はしました。
>>703 HTMLなら <br>
XHTML なら <br />
それぐらい知っとけ。
主要ブラウザではどっちで書いても同じ動作。
<br/> や <br></br> も XHTML として正しい表記だが、
XHTML未対応の古いブラウザだと誤動作を起こすことがある。(改行されないとか2回改行されるとか)
705 :
nobodyさん :2006/09/28(木) 19:52:10 ID:fnAbwW59
日本語を変数に代入する部分で更新するだびエラーが出たり出なかったりしてこまっております。 スクリプト、出力、データベース入力共にSJISのシステムにアクセスしてからEUCのシステムにアクセスするとこのエラーが発生しだします。 このエラーは上位ディレクトリにあるphpMyAdminでも発生するようになります。 おそらくhtaccessの設定によるものだと思うのですが、なぜ違う上位ディレクトリにまでエラーが出るのかわかりません。 SJISのシステムは携帯の絵文字を使用する掲示板のためEUCにするのは難しいです。 問題点と改善策を教えてください。 お願いします。
>>705 どんなエラーが出るのさ。普通はそんなとこでエラーにならんぞ。
707 :
705 :2006/09/28(木) 20:14:37 ID:fnAbwW59
レスありがとうございます。 Parse error: parse error, unexpected T_STRING in /home/????/public_html/????/m/mobile/includes/languages/japanese.php on line 70 というエラーが出たり出なかったりします。 その行は define('HEADER_TITLE_TOP', 'トップ'); です。
>>703 本によると、規格化するときに<></>にしようとしたらbrがあったので<br></br>だとめんどくさいし古いのだとあれだし、
ましてや<br>だけだとだめだから、からタグ?でコメントないなら<br />で良いやって乗ってたような
709 :
705 :2006/09/28(木) 20:19:51 ID:fnAbwW59
あとphpMyAdminででるのは Parse error: parse error, unexpected T_STRING, expecting ')' in /home/????/public_html/phpMyAdmin/lang/japanese-euc.inc.php on line 19 でその行は $day_of_week = array('日', '月', '火', '水', '木', '金', '土'); です。
mb関連の設定はどうなってる?
>>705 内部は全部EUCにして、出力だけSJISにする。絵文字は文字コード変換前に参照コードに変換しておく。
712 :
705 :2006/09/28(木) 20:39:28 ID:fnAbwW59
php_value mbstring.language japanese php_value mbstring.internal_encoding SJIS php_value mbstring.script_encoding SJIS 掲示板ディレクトリのhtaccessの設定は php_value output_handler none php_value mbstring.http_input SJIS php_value mbstring.http_output SJIS php_value mbstring.encoding_translation off php_value mbstring.detect_order auto php_value mbstring.func_overload 1 php_value mbstring.substitue_charcter none; です。 絵文字に関してですがこの設定じゃないとフォームから入力されてそれを受け取る時点で????なってしまいます。 これ以外の設定でこれを回避する方法もあるんでしょうか?
要は絵文字の変換? ひとまずこのスレを絵文字で検索する事をオヌヌメする。
714 :
nobodyさん :2006/09/28(木) 20:47:28 ID:eG4UHdr9
<?php $Time = date("H"); switch ($Time) { for ($a = 0; $a < 24; $a++){ case $a: print "<P>".$a."</P>\n"; break; } } ?> エラーになってしまいます。何故でしょうか? 教えてください。
internal_encoding SJIS の設定で、 $day_of_week = array('日', '月', '火', '水', '木', '金', '土'); とEUCで書いたスクリプトを読み込んだら エラーが出てもおかしくない理由を理解できないと あんたの根本的解決には至らない気がするな
717 :
705 :2006/09/28(木) 20:57:54 ID:???
>>713 絵文字の変換はできていて掲示板は正しく動くんです。
掲示板にアクセスすると他ディレクトリのシステムでエラーが出るんです。
>>715 そのエラーが出るのは掲示板の上位ディレクトリでinternal_encoding SJISという設定はしていません。
それとも一度どこかでhtaccessで設定するとその設定は持ち越されてしまうのでしょうか?
>>717 >
>>713 > 絵文字の変換はできていて掲示板は正しく動くんです。
> 掲示板にアクセスすると他ディレクトリのシステムでエラーが出るんです。
別のシステム(PHP)なら因果関係は無いはず。
cookieとかセッションとかがかぶってるとか??
719 :
nobodyさん :2006/09/28(木) 21:04:18 ID:eG4UHdr9
>>716 様
どこが間違いかご指摘お願い出来ませんか?
switch ($Time) {
//for ($a = 0; $a < 24; $a++){
case $a:
print "<P>".$a."</P>\n";
break;
//}
}
これはOKですし
//switch ($Time) {
for ($a = 0; $a < 24; $a++){
case $a:
print "<P>".$a."</P>\n";
break;
}
//}
これもエラーになりません。
for とswithを組みあわせるときに注意点などありますでしょうか?
720 :
705 :2006/09/28(木) 21:05:11 ID:???
>>718 なるほど。しかしcookieとかセッションとかかぶることによってこのようなエラーが起きるんものなのでしょうか?
そもそも同じ部分を読んでるはずなのに更新するたびエラーが出たり出なかったりするのが自分の理解の範疇を超えていて困り果ててます。
とりあえずcookieとかセッションとかチェックしてみます。
>>719 case〜breakの中にfor構文は書けるが
caseを包括するようなforなんてのは書けないよ。
switch〜caseの構文を完全に壊してる。
そんな感じでやるならこうだろ。
for ($a = 0; $a < 24; $a++){
switch ($Time) {
case $a:
print "<P>".$a."</P>\n";
break;
}
}
>>717 htaccessの設定は下位ディレクトリにも影響するよ
723 :
705 :2006/09/28(木) 21:59:34 ID:???
上位には影響しませんよね? あるディレクトリから別ディレクトリにリンクで飛ばしたとき適応されるのは飛ばした先のですよね? ちなみに掲示板のほうもおかしな挙動を始めてしまいました。 能で文字化けし、セッションも働いてないようです。 もうダメだ…。頭を冷やして出直します。ってゆーか逃げたいです。 webプログラミングってプログラムじゃないところが難しすぎますね。 みなさんありがとうございました。
>>723 能が文字化けする理由もわからんのにSJIS使ってるのか?
てかWebプログラミングはプログラムじゃないのか、へー。
>>724 揚げ足取るならせめてちゃんと読もうよ。
「プログラミング以外のところが難しすぎる」からどうやったらそう読めるのか…。
「能」の文字化け問題については同意だが…。
>>724 「webプログラミングってプログラムじゃないところが難しすぎますね。」
は
>>724 と同じ意味と受け取っていた、曖昧な表現にも問題があるかと・・。
「PHPってプログラムじゃなくてスクリプトでしょ」って俺もjava野郎に言われた事があって、ちょっと被害妄想も入ってるがw
最初っから悪意を持って読んでるとしか思えんよw
まぁ、社会に出ると色んな捉え方をする人がいるので悪い方向の幅は狭くしたほうがいいかもしれんがな。 そもそも2chは悪意ある発言と思っても間違いではない空間だと思うが。
>>727 java野郎がphp野郎より優れてるとは一概に言えないけど、
javaがある程度できる人とphpがある程度できる人(でもphpしかできない人)って、やっぱ「プログラマ」としての差があるのは否めない。
わりと適当に書いても動いちゃうからかな。
731 :
nobodyさん :2006/09/29(金) 02:13:13 ID:CHXTDEUo
PHP5で「abstract function foo();」という行があると、pear pacakgeをつくるときにエラーになります。 $ pear package Analyzing Foo/Bar.php Error: Parser error: invalid PHP found in file "./Foo/Bar.php" これを「function foo() {}」に変更したら、パッケージが作成できました。 これってpearのバグでしょうか。それともabstractは使うなということ? どなたかアドバイスお願いします。 PHP 5.1.4, PEAR 1.4.9
>>730 まー、PHP「しかできない」のはちょっとどうかと思うよな。
733 :
731 :2006/09/29(金) 02:31:17 ID:???
もうひとつ質問です。 package.xmlで指定するバージョン番号が1より大きいときもエラーになって、 「その場合は<extends>タグを使え」とエラーメッセージに出てくるのですが、 pearのマニュアルを読んでも該当するタグが見つかりません。 エラーメッセージはこんな感じです。 Channel validator error: field "version" - major versions greater than 1 are not allowed for packages without an <extends> tag or an identical postfix (foo2 v2.0.0) だれか<extends>タグの使い方教えてください。
>>731 うーん
PHPでabstractが使えると思った理由は何でしょうか
736 :
nobodyさん :2006/09/29(金) 08:24:54 ID:hGRz7bVi
MSSQLとMySQLのデータベースのバックアップをとる方法はありますか? また、そのインポート方法はありますか? よろしくお願いします。
>>736 各DBのマニュアルちゃんと読みなよ。
バックアップのとりかたなんて詳しく書いてるんだから。
738 :
nobodyさん :2006/09/29(金) 08:57:23 ID:hGRz7bVi
>>737 すいません、php質問スレなのでphpって明記しておくのを忘れてました
PHPを使ってバックアップ、インポートがしたいのですが・・・
その方法が各DBのマニュアルに載っているのであれば失礼
727 >「PHPってプログラムじゃなくてスクリプトでしょ」って俺もjava野郎に言われた事があって へぇ〜 スクリプトはプログラムじゃないのか? ネイティブなCPUコードに落ちていないという意味ではjavaも 中途半端じゃん。 正直、言語の優越はあんまり興味ないな。そんなの切り口で いくらでも評価変わってくるしさ。好きな言語使えばいいじゃん。 一番影響するのは、個人スキルの優越だしな。 チラ裏だが、 俺的には、Webプログラムで飯食ってるやつが XSS、CSRFとか知らないっていうのは恥ずかしいと思う。 1言語しか知らないやつが言語の優劣語るのは恥ずかしいと思う。 まぁ、そういうやつに限って優越語りたがるんだがな。
>>736 お前の質問は、
「八百屋さんに野菜が売っていますか?」
と言ってるようなものだ。
その質問への答えは、「はい」で終わり。
DB::〜〜 みたいに、変数宣言せずにクラスを使うようにするにはどうすればいいの? 一回しか使わないのに毎回変数に入れるのまんどくさい(´Д`)
static
ソース見ると大抵インスタンス使わずにコールされてるようだけど、staticに使うのが一般的なの?
んなもんケースバイケースだよ
746 :
nobodyさん :2006/09/29(金) 17:20:17 ID:hGRz7bVi
>>740 そうですね、失礼しました。
その方法をお願いします
>>746 mysql バックアップ
でググってみてはどうでしょうか。
その後、その方法をPHPで実行する方法を考えましょう。
749 :
nobodyさん :2006/09/29(金) 18:14:10 ID:ejiIN4Ag
empty($_FILES["hoge"]) はtrue返すしvar_dumpで見てもnameやsizeも入ってるのに is_uploaded_file($_FILES["hoge"]) はfalse返ってきます・・・ php.iniですが file_uploads = on ;upload_tmp_dir = c:\windows\temp upload_max_filesize = 5M upload_tmp_dirはコメントアウトしてるので、winsows2003の場合"C:\WINDOWS\Temp"に 入ってるはずが・・・ どこか考え間違いでもしてるんでしょうか凹○
is_uploaded_fileの引数が間違ってる
お! と思いきや$_FILES["hoge"]["tmp_name"]に直しても駄目でした・・・
emptyがtrueってそれ空じゃないのか
753 :
749 :2006/09/29(金) 19:07:32 ID:???
ありがとうございます var_dump($_FILES["hoge"]); var_dump(is_uploaded_file($_FILES["hoge"]['tmp_name'])); 試しにこうやって見ると array(5) { ["name"]=> array(1) { [0]=> string(12) "test.zip" } ["type"]=> array(1) { [0]=> string(28) "application/x-zip-compressed" } ["tmp_name"]=> array(1) { [0]=> string(25) "C:\WINDOWS\TEMP\php81.tmp" } ["error"]=> array(1) { [0]=> int(0) } ["size"]=> array(1) { [0]=> int(3405) } } bool(false) こんな感じなのです。 なんかhttpサーバーが原因な気もしますねこれ、うーん 環境書いておきます。 windows2k3 apache2.0.55 php5.1.2
>>753 win環境ではtmp_nameの\を/に置き換えないとだめっぽい
確かに、公式マニュアルのコメント欄にもそう書いてあるね。
http://jp2.php.net/manual/ja/function.is-uploaded-file.php to get the example to work on windows, youll have to add a line,
that replaces backslashes with slashes.
eg.: $filename = str_replace ("\\", "/", $filename);
前から思ってるんだけど、公式マニュアルにコメント欄がくっついてて、
そこに結構重要な情報が書いてある、っていう
この公式マニュアルの仕様はどうにかならないのかな?
xml_set_character_data_handlerのコメント欄なんかも
It would be nice if someone could complete documentation of
this function. I think that the "splitting" behaviour
should (at least) be mentioned within the documentation,
とか書いてあるし。
(コメント欄で盛り上がった、ある仕様について
「これってドキュメントに書いてあるべきだよね」とか書いてある)
http://jp2.php.net/manual/ja/function.xml-set-character-data-handler.php
>>755 一理あるが、それでもPHPの公式ドキュメントは
かなり親切な部類に入ると思うぜ
無料で最高のサポートを望むのは・・ 英語でどこかに通知すればいいのかな?
$a = str_replace("\\","/",$_FILES["myfile"]["tmp_name"]);
var_dump($a);
var_dump(file_exists($a));
array(1) { [0]=> string(25) "C:/WINDOWS/TEMP/phpCA.tmp" }
bool(false)
重ね重ねありがとうございます!がやっぱ読み取れないっす・・
申し訳なさと焦りで心が折れそうです
>>755 日本語のとこしか読んだことありません 汗
759 :
nobodyさん :2006/09/29(金) 21:03:42 ID:kqk1O6yR
PHPに限ったことではないような気がするのですが質問させてください
URLに
http:// 〜/index.php?2006
のように ?a=1&b=2 などとなっていないのを見かけるのですが、
この場合どうやって'2006'を取得できるのでしょうか?
取得したい変数がひとつの時にシンプルでいいな、と思っています
よろしくお願いいたします
確認せずに書くけど、 $_SERVER['QUERY_STRING']で取れない?
>>758 file_existsがfalseになるってのは、
そもそも、そのファイルは存在しているのだろうかって感じだね。
なにがおこってるんだろ。
WindowsのpHPはつかったことないけど、俺なら
まず、そのファイルが存在するのか、
あと、サーバーがWindows2000みたいだけど、XPではどうか、
Linuxとか(レン鯖とかなんでもいいけど)では、同じスクリプトが動くか、
などを見てみるかな。
763 :
759です :2006/09/29(金) 21:25:06 ID:???
>>760 取得できました!
超即レス感謝です ありがとうございました
>>753 ここを良く見ろ
> ["tmp_name"]=> array(1) { [0]=> string(25) "C:\WINDOWS\TEMP\php81.tmp" }
ファイル名が入ってるのは$_FILES['hoge']['tmp_name'][0]だ
データの親子関係がある構造を表示するとき、どういうデータ構造で保持してますか? 配列で連結しすぎると分かりにくくなるし。 A1−−B1 −−B2 −−B3ーーC1 −−C2 −−C3 A2−−B1 −−B2 −−B3 たとえばこんな感じの。
配列にフラットに並べるとして、最小限、親のIDさえ持っていれば何とかなる。
array( 0 => array(null), 1 => array(0), 2 => array(1) ) で3階層おpk
ethnaのサイトに載ってるこれなんですが、
while ($data[$i] = $result->fetchRow()) {
$i++;
}
って意味のある文なんでしょうか?
$data[$i] = $result->fetchRow()って条件式で
$data[$i] に値を代入していくわけではないですよね??
ttp://ethna.jp/ethna-document-dev_guide-db.html $sql = "SELECT id FROM test";
$result =& $db->query($sql);
$i = 0;
while ($data[$i] = $result->fetchRow()) {
$i++;
}
>>768 データを取り出して、格納したデータを条件式で比較して
データが存在すればまた繰り返すってやつ。
それ最後に無駄なデータがはいっちゃうんだよね。
while ($buf = $result->fetchRow()) {
$data[] = $buf;
}
こっちのほうがいいよ。
下がってきたから上げとく
772 :
nobodyさん :2006/10/01(日) 02:27:44 ID:F96v0AKS
文字化けに悩まされてます。 <?php setlocale (LC_ALL, 'jpn'); print(strftime("%Y年%b月%d日")); print(strftime("%A")); ?> 上の例だと月までは表示されるのですがそれ以降が文字化けします。 曜日もめちゃくちゃです。 phpiniの設定は default_charset = EUC-JP magic_quotes_gpc = Off output_buffering = Off mbstring.language = Japanese mbstring.encoding_translation = On mbstring.http_input = auto mbstring.http_output = EUC-JP mbstring.internal_encoding = EUC-JP mbstring.detect_order = auto mbstring.substitute_character = none phpファイルはEUC-JPで保存。 文字列自体を print("日曜日"); とかすると問題なく出ます。 phpiniの設定など、いろいろな組み合わせを試してみましたが解決しませんでした。 phpは5.14です。 お願いいたします。
あまり調べてないですが、サーバ環境によってsetlocale()の挙動が違う場合があるみたいです。 次のコードで今日の日付と曜日は出力することができると思います。 //今日の日付 print(sprintf('%s年%s月%s日', date('Y'), date('m'), date('d'))); //曜日 $week = array('日', '月', '火', '水', '木', '金', '土'); print($week[date('w')] . '曜日'); もっとスマートなやり方があるかもしれませんが。
setlocale(LC_ALL, 'ja_JP.eucJP' ); でやるとどうなる?
775 :
772 :2006/10/01(日) 12:36:31 ID:F96v0AKS
>>773 なるほどその方法だと出ますね
strftimeのマニュアルに
「注意 (上記の)全ての変換指定子が使用するCライブラリでサポートされてい ない可能性があります。この場合、PHPの strftime()で該当する変換指定子はサポートされ ません。」
こんな記述がありました。
これでしょうか?文字化けなので微妙に違う気もするけど。
Smartyを使ってるんで、プラグイン作るかなあ。
日付は2006/10/01とか2006-10-01でもいいし、
{$data|date_format:"%b"}月{$data|date_format:"%d"}日
とできるけど、曜日が英語表記だとなんだし…
>>774 ごめんなさい。書き忘れましたがwindowsでテストしてるんです。
その書き方はLinuxの書き方でしょうか?
私の環境だと
setlocale(LC_ALL, 'jpn' );
以外は日本語にセットされないみたいです。
setlocale(LC_ALL,'jpn.eucJP');
も試してみましたが曜日が英語で表示されるので効いていないみたい。
ちなみにPHP5.16にしてみましたが同じでした。
776 :
nobodyさん :2006/10/01(日) 13:55:05 ID:U0I6sUmv
htmlだけで書いたソースを拡張子だけphpした場合、 *.htmlと*.phpで数字で見て負荷は変わりますか?
もちろん
下らねぇ質問ばっかりだな
779 :
nobodyさん :2006/10/01(日) 14:13:08 ID:U0I6sUmv
phpファイルに $パスワード=ぱすわーど; $なまえ=ぎこねこ; if($ぱすわーど==$_post[省略]&&$なまえ==$_post[省略]){ echo"ログインしました"; } else { echo"不正なアクセスです。"; } というコードをphpファイルにうめてアクセス制限を行いたいのですが、 BASIC認証と比べて、phpファイルに直接埋め込むこのやり方はどちらが安全でしょうか? また、このやりかたでパスワードやなまえがもれるでしょうか?
>> 775 setlocate(LC_ALL,Japanese_Japan.20932)
ローカルにあるHTMLからScriptタグとその中身だけを削除したいのですが、どうすればよいですか?
エディタで開いて削除
>>782 ローカルでCLIなPHPスクリプト動かして
対象ファイル読み込んで正規表現で
<script.*?</script>を削除して保存。
785 :
nobodyさん :2006/10/01(日) 16:21:39 ID:F96v0AKS
>>780 おお、直りました
ありがとうございます
教えてもらっておいてなんですけど正確には
setlocale (LC_ALL, 'Japanese_Japan.20932');
でした。
シングル、もしくはダブルクオーテーションで囲まないと駄目でした。
ウィンドウズでEUCJPの時はこうみたいですね。
今日は機嫌がいいので
>>784 をコードにしてみた。
foreach ((array) glob('*.html') as $file) {
$contents = file_get_contents($file);
$contents = preg_replace('|<script.*?</script>|is', '', $contents);
file_put_contents($file, $contents);
}
phpって便利ね。
788 :
nobodyさん :2006/10/01(日) 17:19:26 ID:U0I6sUmv
if文で変数に値が入っていなかったら処理するコードを書いているのですが、 empty($_POST["name"])と!isset($_POST["name"])は同じですか? なんかemptyを使うとうまくいくのですが、!issetだと動かないんですよね。
マニュアル嫁
>>788 empty … もし、空ならば
isset … もし、変数がセットされていないならば
$a = "";
だと、変数はセットされていないが、空だという状況になる。
791 :
790 :2006/10/01(日) 17:44:39 ID:???
訂正 isset … もし、変数がセットされて「いる」ならば 否定形と肯定形の関数があるってのは紛らわしすぎるな
>>788 フォームが空でも空文字列で渡ってくる。
つまり$_POST["name"]は空であっても作られる。
>>790 > $a = "";
>
> だと、変数はセットされていないが、空だという状況になる。
変数はセットされているが空、でしょ。
794 :
790 :2006/10/01(日) 17:51:17 ID:???
まぁまぁ、意を汲み取ろうよ。
>>779 どうでもいいけどそのコードじゃ動作しない。
話それるけど >フォームが空でも空文字列で渡ってくる。 nameだからテキストフィールドだと思うけど、たとえばチェックボックスは チェックしてないと渡ってこないよ。
>>782 余計なお節介かもだけどタグに囲まれてない部分のスクリプトもケアしような
onmouseoverとかhref="javascript:〜"とかとか
799 :
782 :2006/10/01(日) 19:03:01 ID:???
説明不足でした、すみません。
>>783 いや…ちょ……
>>784 >>786 >>798 ありがとうございます。
しかし、たとえば極端な例ですが次のような場合に変になってしまって困っています。
<script>for (var i = 0; i < 5; i++) { /* </script> */ document.write("</script>") }</script>
こういうscriptタグが含まれた場合にも上手く削除できるような方法を探しています。
何か良い方法はないでしょうか?
1.そんな物に出会う事は稀で、運悪く当たったらゴミが出るけど気にしない 2.// から行末までと、/*〜*/ を削除
>>799 それよりもまず、そもそもなぜそんなことがしたいのか理由を説明してくれ。
それによって答え方も変わってくる。
functionの中にfunctionって定義できないの?
できる
>>803 できるけどやらないに越したことはない。
これ、つい最近も出た質問だったけど、今日は気分がいいので説明しとく。
function hoge() {
function foo() {
・・・
}
}
と定義すると、hoge();を2回呼び出したときに、fooを2回目に定義することになり、エラーが出る。
if (function_exists('foo'))でチェックして定義すればよいのだが、どうせグローバル空間に名前が追加されるので、関数の中に関数を定義することには
メ リ ッ ト が 何 一 つ な い
と言っても過言ではない。
>>804 みたいな知ったかレスはもうやめてください。
知らないなら答えなくていいですからね!
>>808 できることには間違いはないと思うけど。
それより、マニュアルも読まないで、逆ギレするのはやめたほうがいい!
できるできないだけ聞いてんじゃねんだよ!
>>808 、
>>810 それが質問する側の態度か、ボケが。氏にさらせ!
っていうか質問するならまずIDを表示しろ。
ルールを守れチンカス野郎。
ルール(笑)
>>806 設定によって何か切り替えたいとき、関数の中で場合わけしなくて済むっていう利点はあるな。
たとえば俺は、DBがMySQLかpostgresqlかで関数の定義を分けるのに使った。
>>805 そいやcreate_function()も関数名テーブルに登録されてるな
機嫌がいいからとか気分がいいからとか、何様なんだろうね。
「自分はできる」って勘違いしちゃってるよ。ここもほぼ初心者板なんだからさ。
>>811 ここは2chなんだからさ、態度が悪いのは仕方ないでしょ。実際回答する側だって態度悪いこと多いんだし。
質問です。 PHPより優れたCGIってありますか?
818 :
nobodyさん :2006/10/01(日) 23:22:04 ID:uNLBS1eM
classって多重に継承できないのでしょうか? class Hoge extends Mage extends Moge {} みたいなことがしたいんです。
>>818 class Mage extends Moge
{
}
class Hoge extends Mage
{
}
jpgraphについて、ここで聞いてもいいですか?
OK
Alexaってどんな手法でユニークユーザーとか数えてんのかな? 対象サーバの管理者がログとか提出しない限り、 そんなの計測しようがないと思うんだが・・・。 (※PHPと関係ない話題だけど)
>>823 「Alexa スパイウェア」でぐぐってみw
結論から言えばブラウザにスパイウェアをいれて、閲覧履歴をAlexaに送信して
人気度を計測してる
>>824 俺はalexaツールバーは使ってないし、
スパイウェア対策ソフトも入れてるから、あんまり関係ないな。
っていうかそういう人がほとんどだろうから、
Alexaのランキングってあんまりアテにならないな。
「セキュリティ意識の薄いド素人のネット利用傾向」は分かるだろうけどwww
マイクロソフトひでぇな!! ユーザーに黙って、こっそりAlexaのスパイウェアをIEに混合してたとは。 俺はIEのインストール時に、「スパイウェアが含まれています」なんて 注意書きを見た覚えはないぞ!! これ、ある意味で詐欺じゃねぇの?
>>826 adobeもそうだし。この業界はそんなもん。
>>826 利用規約とプライバシーについてを「全文」読みました?w
実際読む人なんて1000人に1人もいないだろうけどねぇ
膨大な量の利用規約って、よく考えるとおかしいよな。 理論的には、文章を無駄に何百倍にも薄めて 都合の悪い規約を発見されないようにすることも可能なわけだし。 A4用紙1枚程度に収まるような、一目でわかる「要約版」を義務化してほしいもんだ。
>>829 なるほど、もっともな意見だな。
ただ、現行では「利用規約が読めないor同意できないのであれば使わなければいい」という話に持っていかれてしまうので、まだまだ社会全体の精神面での改革が必要かもしれない。
読む奴なんているのか?と思って利用規約の最後の方に私に連絡したら賞金払うって書いた人が居たな。
>>817 プログラム言語とインターフェースは違います。
それと言語の比較は意味がありませんので
アメリカは契約社会なんで、ありとあらゆることをちゃんと盛り込んで おかないと、すぐに裁判おこして金を取ろうとする阿呆が出る。
リアルタイムで今日の日付を表示する方法を教えてください。 2006.10.02みたいな感じにテキストで表示させたいのです。
>>836 <?php
$date = date(Y.m.d);
echo $date;
?>
838 :
837 :2006/10/02(月) 13:39:52 ID:???
あーごめん。これじゃ連結になっちゃうか。 <?php $date = date("Y.m.d"); echo $date; ?>
>>835 何百とDLされたけど、連絡してきたのはたった2人。
って話だったような。
記事読んだのが結構前だから、元記事探そうと検索したけど見付からなくてスマソ
>>839 実際はもっといたんじゃないかね?
俺なら賞金くれるなんていっても連絡しないよ。
めんどくさいし、どうせネタだろ?って思っておしまいだな。
841 :
nobodyさん :2006/10/02(月) 15:01:57 ID:L7olNnvK
$_SERVER['QUERY_STRING']; で?の後の値が取れないんですけど phpのバージョンとか関係ありますか? どんなきっかけでもいいので原因分かる方 お願いします。
自己解決しました。 $HTTP_SERVER_VARS どうも。
>>834 ここはアメリカじゃないぜ!
・・・って言いたいところだけど、最近は日本でもDQNな訴えを
起こすバカが増えてきたからなぁ。
世間的に「セクハラ」とかいう言葉が浸透しだした90年代中頃から、
だんだんおかしくなってきてる気がする。
>>829 実際のところはお役所なり弁護士なり警察なりの指導を受けると、
むしろ「膨大な長さの利用規約でなければいけない」というのが事実。
うちの会社のも利用規約も日に日に太る一方なんですけどorz
要約なんてしたらどうとでも取れる曖昧な表現ばかりになるから
利用規約としては全く通じないのよ。
>>845 「要約」ってのは、もちろん「本来の膨大な規約」があったうえでの話だよ。
要約を用意しておいて、あくまでも「詳しくは本文を見てね」とすれば良い。
そういやアメリカは飼っていた猫を電子レンジでチンして殺してしまって、メーカーを訴えて勝訴して、それ以来電子レンジには必ず猫を入れないよう注意書きがあるとかテレビでやってた。 スレ違いスマソ。
それはただの都市伝説
まあ、でもアメリカならありうる話だわな。 マクドナルドで、ホットコーヒー飲んだら熱すぎて火傷したから金払え! って訴えてマクドナルドから金を取ったバカがいるらしいからなww
850 :
nobodyさん :2006/10/02(月) 18:22:10 ID:UQwx9m4d
<?php $bangou = 0; なんちゃらなんちゃらの処理 $bangou = $bangou++; ?> 次表示するときに$bangouの値を保持したいのだけど、これは別にtxtファイルなど使わないとできないですか?
852 :
nobodyさん :2006/10/02(月) 18:29:23 ID:UQwx9m4d
セッションというのがまだ勉強中でわからないので、調べてみます! どうもありがとうございました。 またわからなかったら聞きに来るのでヒントをいただきたいです……
853 :
nobodyさん :2006/10/02(月) 19:03:06 ID:??? BE:126486656-2BP(1)
>>852 sesseion_start();
$_SESSION["hoge"] = $bangou;
$bangou = $bangou++; は $bangou++; と同じ
php を 5.0.4-5 から、5.1.2 へ rpmで上げようと思ってるんだけど、 spec みたら 5.1.2 のパッケージのに pear ってないです。 それなのに、Requires: file >= 4.0, php-pear になっています。 バージョンが 4.0 以上ならば依存関係なしでいいのでしょうか。
スレ違いごみん
>>849 ドライブスルーで買ったコーヒーひざにこぼして火傷して損害賠償請求
ってのはあった。
マックのコーヒーは他のチェーン店よりも熱い(85℃くらい)ってのが
言い分で数百万$の請求だったと思う。
日本は請求金額に応じて印紙税がかかるとか、判例を作りたくない裁判官
に和解を勧められて1桁少ない額で落ち着く事が多いとか、そういう
違いがあったと思うなり。
>>849 >>857 日本でも、最終的には店側がマニュアル変更するという条件で和解が成立したけど、
ファミレスでお子様ランチのスープが熱くて、飲んだ子供がやけどしたから
48万円の賠償を請求した訴訟とか実際にあるよねw
(で、店が「熱いので注意してください」と声をかけるのをマニュアル化したことで和解)
>>858 お子様ランチのスープが熱いのは店が悪いと思うんだが
対象年齢幼児〜小2 ぐらいだろ?
のび太君は、小学五年生にもかかわらず、お子様ランチを美味しそうに 食べています。(実話)
>>859 被告側の反論
> 被告側は「原因は一気に飲もうとしたため。店では毎月八百六十食の注文があるが事故は他にない」と反論。
> 「お客さまに提供する時の温度は七七度で最もおいしく、札幌ラーメンのスープも七八度が一般的」としている。
実際に熱いのが飲めるか飲めないかは子供によりけりなのに、
最初からまずくして提供するのも問題じゃないか?
別に常識外れの温度にしてるわけじゃないんだし。
いい加減スレ違いうぜーよ
>>854 は!?
$bangou = $bangou++;
は
$bangou = $bangou;
と同じ。(つまり何も変わらない)
$bangou++;
と同じになるのは
$bangou = ++$bangou;
だぞ。
864 :
nobodyさん :2006/10/03(火) 02:34:39 ID:S6+L6oiN
普通に書き間違えただけじゃないの?
>>854 はCと勘違いしたのかもしれん。処理系によっては1増えるから。
まぁ、Cの仕様では動作未定義だが。
へ?ANSI Cでは後置きインクリメントは必ず元の値を返すだろ?
それはi++単独の場合では? i=i++;/*これは動作未定義*/ C99以降の話なら知らん。
>>863 以前どこかのメーリングリストか掲示板で話題になったのを思い出した(Cだけど)。
結果は未定義ということで実際の動作も処理系で違ったんだったっけ。
<?php
$a = 2;
$a = $a++;
echo $a;
?>
結果は"2"だった
#include <stdio.h> int main(void) { int i = 2; i = i++; printf("%d",i); return 0; } VC++6では3になった
前置加算子: $aを返し、$aに1を加える って解釈次第ではどちらとも取れるんだよね
++とか--とかはオペランドの値を変更するけど、 式の結果として何が返るかは、オペレータの定義とは別、じゃないかな?
なんかスレ違いだけど面白い話だ。
>>870 うちにもMS-C v6あるんで追加でやってみた。
#include <stdio.h>
int main(void)
{
int i, j, k;
i = 2; i = i ++; printf("%d", i); //結果は3
i = 2; j = i ++; printf("%d", j); //結果は2
}
なんか原理が理解不能な結果だなw なんだこれ??
PHPのは非常に素直な結果だと思える…
>>872 インクリメント演算子に前置きと後置きの2種類がある理由を調べてごらん。
>>874 副作用完了点 (sequence point)について調べてごらん。
勘違いの元になるから加算子減算子の式を そのまま代入するのはやめましょうってことだな
そうだね、素直に$i++;(i++;)と書けってね。
>873 本題と何ら関係がないが k も使ってあげてください…
いや、一番素直で勘違いが起きないのは $i = $i + 1; だろうww
それはちょっとカコワルイ
kカワイソ
>>880 そうか?
俺はBASIC使ってた頃からの習慣で、これが一番しっくりくる。
変数名が長いときとか++のほうが楽だし、習慣的にも浸透しているから、これに関しては冗長性は減らすに越したことないと思う。
冗長と言うほど大したことじゃないと思うけどな。 そんなに多用するものでもないし。
>>882 $i += 1;
どっちかというとこっちの方が好き。まぁでも++使うかな
短いときだけ$i = $i + 1;って書いといて、長くなったら$hogeObject->nagaiProperty++;とかやるのもどうかと思うけど。
まぁ書きたいように書けばいいよね。 プロジェクトでのコーディング規則があればそれに従ったほうがいいけど。
ifelse文の書き方は皆さんどっち? if(){ } else{ } if(){ }else{ }
>>888 別にバカにしてる訳じゃないけど
まさしくこのスレらしい下らねぇ質問だなw
俺は2番目の書き方の方が好きだよ。
なんか定期的にある世のこの話題 if() { } else { } な俺は少数派かな
if($unko) $chinko; else $manko; $uho = $unko ? $chinko : $manko; switch($unko){ case 1: $manko; break; default: $chinko }
892 :
nobodyさん :2006/10/03(火) 17:26:00 ID:qfH+jnma
会員制サイトで、投稿された画像ファイルを、 ログインしてる会員以外は見れなくする(直リン禁止する?)には どうしたらいいのでしょうか?
ログインしてたら画像を返すPHPを書く(ログインの確認はセッション)
>>893 そんなのは誰でも分かってるだろ。
問題は画像ファイルをどのように鯖に格納しておくか、どのように取り出すか、だろ。
>>894 そりゃ、アンタの好みでやれとしか言えんよ
ほんとそう
アダルトSNS管理人乙!
>>888 if (...):
else:
endif;
もあるよ。
>>889 コーディング・スタイルの話題は下らない話題じゃねえぞ。
プログラマにとって、永遠のテーマだ。
認証確認した後、バイナリモードで画像ファイルを読み込んで それを出力すりゃいいんだろうけど普通にやったら 多分恐ろしくパフォーマンス悪いよなあ
DBのBLOB型に画像ファイルぶちこむとか、
あるいはドキュメント・ルート外のディレクトリに画像置いといて
ストリーミング系関数で取り出すとかあるだろうけど、
どちらにしてもパフォーマンスに問題あるわな。
>>895-898 知らねーなら書き込むなクソもぐら。
下らねぇ質問で恐縮ですが教えてください。 「クソもぐら」って何でつか?
ほんとに頭の悪いヤツばっかりだ。 中学生かよ。
いい大人がぴりぴりすんなよ
908 :
892 :2006/10/03(火) 20:35:44 ID:qfH+jnma
>>900 すみません、バイナリモードって何でしょうか?
>>901 できればデータベースを使わない方法でやりたいんですが・・・
"クソもぐら" の検索結果 約 9 件中 1 - 6 件目 (0.48 秒)
おまいら今日は不機嫌だなwwww
>>909 俺もクソもぐらって何?って思った。
var_dump(クソもぐら instanceof もぐら); // output bool(true) これって合ってるのでしょうか?
912 :
nobodyさん :2006/10/03(火) 21:05:20 ID:f3UZrmTT
913 :
nobodyさん :2006/10/03(火) 21:35:16 ID:f3UZrmTT
自己解決しました スレ汚しをしてしまって申し訳ありませんでした
っ (float)microtime();
917 :
nobodyさん :2006/10/03(火) 21:46:40 ID:6fYukKk6
&=って何? サンプルによくあるのに、だいたいエラー吐くんだか
>>917 左辺式を右辺式でビット毎のAND演算処理した後左辺式に代入
>>916 bオプションを使うのはWindows環境の場合でしょ。
「クソもぐら」ってのは稲中ファンなら分かる単語w
phpinfoのLocal ValueとMaster Valueって何を意味してるの? これぞくだ質っぽいけど。
masterはphp.iniの設定 localは.httpaccessとかでいじった値と勝手に思っていたが違うのか
923 :
922 :2006/10/04(水) 00:50:00 ID:???
「phpinfo Local Value Master Value」でググッたところ一発で解決した ググレ
924 :
921 :2006/10/04(水) 01:02:01 ID:???
解決した。すまんかった。
925 :
nobodyさん :2006/10/04(水) 01:23:55 ID:KYSz6DR6
PHPに動画から静止画を生成する関数とかありますか?
>>925 今さらYoutubeには勝てないから作るだけ無駄だ止めとけ。
YouTubeは動画→動画変換であって動画→静止画だとまた違くね? どっちかっつーとカリビアンな香りw
928 :
nobodyさん :2006/10/04(水) 01:37:08 ID:KYSz6DR6
じゃなしにツベの動画を紹介するときのサムネ画像を生成したいのですが…
ffmpegを使うのがいいかと
930 :
sage :2006/10/04(水) 01:46:29 ID:KYSz6DR6
ffmpeg php で調べると出来そうではあるが?
>>926 勝とうとするやつがこのスレにいるわけねーだろ。
毎月億単位の金がかかってるというのに、一般人には無理だ。
>>930 外部プログラムを経由してデータ変換するってのも立派なPHPプログラミングかと。
>>928 youtubeの紹介?
ってFLV動画からの静止画生成をしたいの?
935 :
nobodyさん :2006/10/04(水) 02:02:12 ID:KYSz6DR6
マジレスffmpegのライブラリーってどうやって使ったらいいんだ orz
937 :
nobodyさん :2006/10/04(水) 02:13:34 ID:tLsYS9Ob
phpで環境変数としてOSの情報を取得したいのですが可能でしょうか?
>>935 それやるには、まずそもそもFLV画像をダウンロードしてこなきゃ
始まらない気はするんだが、そんなのやってYoutubeに怒られない?
about:cache見れば簡単に(ry
>>939 怒られたら何も言い返せないだろうけど、
無許可で動画だけリンクした紹介サイト作りまくったりで・・事実上黙認なのかな。
個人的にはどうかと思うけど、YouTubeが何も言ってない(?)しねぇ
>>940 それとは話が違うでしょww
>>941 動画だけリンクはサービスを第三者を経由して行ってるだけだから些細なんだが、
第三者がユーザとは別に大量の動画データを抜き出したりとかしたら
それはサーバー負荷もすごいかかるわけで大問題になるだろ。
>>942 Googleのイメージ検索だってそうじゃん
漏れのサイトGoogleイメージ検索で勝手にインライン表示(他人のサイトの画像を自分のサイトに埋め込む通称直リンク)されて
物凄い転送量使われてるし、色々な種類のクローラーがきてCGIに大量にアクセスされるから負荷も凄い
その程度ならインターネットの世界では日常的に行われてる
まぁ、マナーとしては、UserAgent に説明のURLいれて、robot.txt で拒否できるようにしとけばいいとおもう
>>941 YouTube自体がembedタグを公開してるし投稿者がembed不可を希望すればリンクできない
アップロードされたファイルの拡張子を調べる関数なんてありませんか? MIMEは$_FILES['files'][type']でとれるみたいですが、 拡張子も調べたい場合はどうしたらいいのでしょうか?
pathinfo
>>946 おー。どうもありがとうございます。
助かりました。
>>928 youtubeで生成してるサム寝入る使えばいいだけだろ。。。
マリンとか?
>>948 どうやって?
自分でどうにかすれば良い
948の頭じゃ直リンしか思い浮かばなかったようです。
API使えばバカでも出来るだろ。 スレ違いかも
youtubeのAPIなんてあったのか。知らんかった。
多分925はバカ。 多分だけどな
正規表現におけるくだらない質問ですが宜しくお願いします。
preg_replace('Ho(.+?)GE', '<a href="
http://... ">\\1</a>', $msg)
この\\1にはいる部分をサニタイズ(htmlspecialchars)したいのですがどんな方法があるでしょうか?
宜しくです
>>956 preg_replace_callback
>>956 もしくは$msgに先にhtmlspecialcharsをかけてしまう
961 :
(^ω^) :2006/10/04(水) 19:57:05 ID:???
preg_replace('Ho(.+?)GE', htmlspecialchars('<a href="
http://... ">\\1</a>'), $msg);
これってできなかったっけ
962 :
956 :2006/10/04(水) 20:01:10 ID:???
>>961 それしちゃうと<a>タグ効かなくなっちゃいますょ
今はpreg_matchで一回とってからサニタイズしてますが、効率とか悪い…
965 :
964 :2006/10/04(水) 20:14:18 ID:Q3Xp5VSe
癖でsageてしまいましたorz どなたか教えて下さい…
サニタイズとか久しぶりに聞いたな
>>964 XREA見てきたけど実行パス書き換えてないのが原因じゃね?
/usr/sbin/sendmail
968 :
nobodyさん :2006/10/04(水) 23:50:42 ID:DvYxKH3S
すみません aaa.inc と aaa.inc.php て どう違うんですか?
>>968 本当にくだらねーな。
どうみても拡張子が違うだけだろ。
ファックじゃねえよ無能がwwwwwwwww
>>968 aaa.inc →「aaa」という名前の.incファイル
aaa.inc.php→「aaa.inc」という名前の.phpファイル
動画ファイルからサムネイルを作るPHPスクリプトを教えてくれ… . . .... ..: : :: :: ::: :::::: :::::::::::: : ::::::::::::::::::::::::::::::::::::::::::::: Λ_Λ . . . .: : : ::: : :: ::::::::: ::::::::::::::::::::::::::::: /:彡ミ゛ヽ;)ー、 . . .: : : :::::: ::::::::::::::::::::::::::::::::: / :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . ::::::::::::::::::::::::::::::::::::::: / :::/;;: ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::  ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄
動画ファイルのフォーマットにもよるべ
既出だったか。
978 :
973 :2006/10/05(木) 00:33:59 ID:???
動画をアップしたときにサムネイル画像を自動で作りたいのです。 動画の種類はavi,mpg,wmvくらいは最低対応したいです。 あと、ffmpegですがレンタルサーバーでも大丈夫なのですか?よくわかりません。
頼んでみれば?
ソース持ってきてコンパイルする必要がありそうだからレンタルじゃ無理そう。
>>978 サーバー管理者に聞いたり交渉したりしてください。
ダメなら無理です。
PHPで自前でなんて書いても遅くて使い物にならないでしょう。
経験上、静止画でさえ生PHPは耐え切れないくらい遅かった。
982 :
973 :2006/10/05(木) 00:43:21 ID:???
>>981 静止画ならサイズとか変えてサムネイルは作れます。
画像掲示板を作ったので。それを動画でやりたいんです。
>>981 それはPHPどうこうじゃなく、あなたがキャッシュという仕組みを知らないからでしょう。
984 :
981 :2006/10/05(木) 00:47:27 ID:???
>>982 いや、静止画のサイズ変更とかはimage系関数やImageMagickがあるからでしょ。
俺の言ってる静止画の処理が遅いってのは、JPEGのパース+やや複雑なフィルタアルゴリズムをPHPのみで記述してみたら遅かったって話(わかりづらくてスマソ)。
なので、動画でそれをやるのは無謀だと言いたかった。
素直にffmpegの可能性を検討して、無理なら諦めるとか、レンサバを乗り換えるとかしてくれ。
985 :
973 :2006/10/05(木) 00:55:11 ID:???
>>984 なるほど。でも、結構ヨウツベの動画のサムネを自動生成したり動画を投稿したら
サムネを自動生成してるサイトあるんだけどみんなffmpeg使ってるのかな?
PHP系のプログラムってのは知ってるんだけど。
PHP系のプログラムって何だろ・・・ そのサイト教えて
987 :
973 :2006/10/05(木) 01:13:20 ID:???
どうせ、URLに.phpが付いてるってだけでしょ
>>987 おk、何やってるか分かった。
PHPと関係NEEEEEEEEEEEEEEEEEEEEEEEEEEEE-
990 :
973 :2006/10/05(木) 01:17:04 ID:???
PHP関係ねぇな
992 :
973 :2006/10/05(木) 01:27:42 ID:???
じゃー987でやってるようなサムネイルを生成するのは何を使えばいいですか? 私はPHPを使ってると思うんですけど。画像掲示板はPHPでやりましたから。
>>990 YouTubeの中の人が頑張ってるだけ。
PHPでもPerlでもJavaでもRubyでもPythonでもHTMLでも・・(ry
>>992 有名所で使えれば確実に達成できるのはffmpeg、他にもあるかもしれんが代わりに探してテストしてやる義理はない。
ついでに言うと次スレ立つまで黙ってろ。
----------------------------------------------------
次スレの関連スレの所の
「中学生がPHPを習得」「宿題ください」を削って
姉妹スレ(単なる重複?)の「くだすれPHP(超初心者用)」
http://pc8.2ch.net/test/read.cgi/php/1150088761/ を加えないか?
994 :
973 :2006/10/05(木) 01:34:45 ID:???
わかったじゃー。ffmpegの使い方を教えて下さいませ。もう3日間気が狂いそうです。 ちなみにYouTubeを使う場合はどこで聞けばいいですか? 一瞬で教えれるならここで教えて下さい。
>>992 だからffmpeg使えと言ってんだろ。レンタル環境で無理だったら諦めろ
もしくは他にあるかもしれんから探せ。日本人が開発したパッケージはほぼないだろうけど。
これはYoutube API使ってるだけ。
投稿欄にyoutubeのURLを指定するっていうとこで気づけ。
ぃゃ、宿題は外さなくていいか?
中学生は最近あんまり伸びてないしどうしたものか、
次スレで話し合うとして今回はこのまま立てるか。
ちょっと行ってくる
>>994 だから黙れと
997 :
nobodyさん :2006/10/05(木) 01:42:15 ID:y1WWhz/p
なんで自分で調べるってことをしないかなぁ・・・ 腹立つけどヒントやるよ。 Services_YouTube マニュアルも日本人が説明付きで書いたサンプルコードも見つかる。ブログとかに。 あとは自分でやれ。
1000 :
nobodyさん :2006/10/05(木) 01:44:58 ID:y1WWhz/p
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。