【PHP】下らねぇ質問はID出して書き込みやがれ 96
質問者はまず
>>1 を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
次スレは
>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 95
http://pc11.2ch.net/test/read.cgi/php/1271636105/ ◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
10. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(
http:// 〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
【簡易FAQ】
1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている 。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
テンプレ終わり FAQ逆になったけど誰も読んでないからいいよね!
うぜえ
8 :
EM114-48-239-103.pool.e-mobile.ne.jp :2010/05/29(土) 00:14:28 ID:P9BwEf5x
【OS名】Windows 2000 【PHPのバージョン】5.2.11 【連携ソフトウェア】SQLite 3 【質問内容】 OCNはこのスレにまだいますか?
|| ★ 荒らしは放置されるのが一番苦手。 || → ウザイと思ったらそのまま放置よ。 || ▲ 放置された荒らしは煽りや自作自演でアンタのレスを誘うよ。 || → 釣られてレスしたらその時点でアンタの負け。 || ■ 反撃は荒らしの滋養にして栄養であり最も喜ぶよ。 || → 荒らしにはエサを与えないで。 || ☆枯死するまで孤独に暴れさせておくのが一番。
フォトショとかのレイヤーみたいな感じで 下地となる画像の上に別の画像を複数配置して、それを一枚の画像として生成したいんだけど、 どうやったらいいのかな?
>>12 まさにこういうのを求めてたんだ!ありがとう。
14 :
nobodyさん :2010/05/29(土) 11:51:54 ID:nCFRCeiE
PHPとMySQLを使ってトランザクションする件について相談です。 お金の入出やポイントの操作などには、トランザクションが必須 だと言うのをググって見たことがあるのですが、 一方でフィールドタイプをInnoDBにすると、パフォーマンスが落ちる と言うことも聞いたりします。 実際、トランザクションは良く導入されているのでしょうか? 上級者の方や仕事でプログラミングしている方はどうしているか知りたいです
mcrypt_decrypt base64_decode とかの関数が失敗したかどうかを確実に検証する方法ってないんでしょうか・・・。
それらの関数の出力結果で判断できるだろうが・・・
これ全部通過して戻り値がバイナリだったり意味不明な文字列になってて困ってるんですよね。 function decrypt($str, $key) { $string = base64_decode($str); if($string==false || is_null($string) || strlen($string) ==0) throw new Exception("decrypt(): base64 decode faild:".$str); $dec = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $string, MCRYPT_MODE_ECB, $key); if($dec==false || is_null($dec) || strlen($dec) ==0) throw new Exception("decrypt(): decrypt faild:".$dec); return trimNull($dec); }
スパゲッティコード乙
別にコード自体は単純なもんだけど、何か暗号化の使い方が間違っているような気がする。 エンコード側どうやってる?
エンコ側はC#なんだけど、PHPだと以下のようになってます。 function encrypt($string, $key) { $string = trim($string); $enc = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $string, MCRYPT_MODE_ECB, $key); return base64_encode($enc); }
22 :
nobodyさん :2010/05/29(土) 22:50:25 ID:kdGy44ix
>>21 それとデコードをPHPだと、うちだと動くんだけどな。
いや、文字列を暗号化してるので文字列に戻ってればOK そうじゃなければException飛ばしたいんだが・・・。 base64_decode は失敗するとfalseが返るとマニュアルにはあるけど 全然if文に引っ掛かってこない。 C#とかだとバイト配列にして検証するんだが・・・。 意味わかっていただけますでしょうか?^^
base64_decodeの第二引数にTrueは指定してるの?
してないっす。 それ以前の問題な気がして。。 やっぱり、元の文字列に必ず決まったワードを仕込んでおいて strpos === false で判定するしかないのかな。
27 :
22 :2010/05/30(日) 02:52:37 ID:jvmNUW56
<div name="popup" id="popup" class="categorybg02">
<table cl
ここまでしか取得できていないんですが、一体なにが原因なんでしょう??
ちなみに
>>22 はブックオフのサイトです。
>>26 PHPでも同じことすればいいんだよ。使ってる文字コードの範囲かチェックすれば。
結果がバイナリだからって失敗ではないのだし。
>>27 5.3で同じ位置での動作確認しました。
HTTP/Requestだと問題なし。
require_once 'HTTP/Request.php';
$url = '
http://www.ebookoff.co.jp/book ';
$request = &new HTTP_Request();
$request->setURL($url);
$result = $request->sendRequest();
if (!PEAR::isError($result)) {
echo $request->getResponseBody();
}
>>27 なんじゃこれ。と思って実験してみたら
UAを設定したら全部取れた。
鯖が途中までしか送ってこない理由は分からん
php 5.2.13/5.3.2 (win)
ini_set('user_agent', 'User-Agent: Mozilla/5.0');
31 :
nobodyさん :2010/05/30(日) 12:16:49 ID:jvmNUW56
>>29-30 ご協力ありがとうございます。
一体どういう理由なんでしょうね・・・
自演乙
>>28 だから、C#でエンコったのはデコードできるんですよね。
そこまでアホじゃないんで^^;
成りすましをどうするか考えているわけです。
>>18 encrypt/decrypt の 第5引数省略したらどうなる?
試してみたけど失敗してくれない
デバッガかけるとかvar_dumpしまくるしかないんじゃないかな
>>33 ◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
そもそも質問時にID出してないしテンプレなんて見てないだろ
C#でエンコードしたのが出来ないのが問題なの? 何したいか分からんなー。成功失敗で何をしたいんだろう。 文字列に戻ってるかのチェック以外、何が必要なんだろうか・・・ base64_decodeの失敗はねるのはいいけど、 文字列のチェックとまったく別の話だし。 ところで、PHP例でのmcrypt_encryptのkeyとivが同じだけど C#でのも同じ? 回答アホだから、成りすましの嵐かしら・・・。
>>39 頭(あたま)大丈夫(だいじょうぶ)でちか?
>>1 を読み(よみ)ましょう
42 :
40 :2010/05/30(日) 23:57:02 ID:???
>40-42 なにこの自演乙
44 :
nobodyさん :2010/05/31(月) 15:40:04 ID:v3qt+P/M
負担の観点からの質問です。 100個のファイルから一つのファイルを読み込む、 require "/home/config.php"; とするのと、100個、個別の require "./config.php"; とした方が良いのか、負担率としては同じなんでしょうか? 全く別物なのでしょうか? よろしくお願いします
前者の100個のファイルは同時に100個処理するするのかどうか書かないと それだけじゃ何とも言えない
46 :
44 :2010/05/31(月) 16:15:07 ID:???
>>45 テンプレートみたいな使い方をしたいんです
設定部分やデザインなんかの記述をしてます
$a="<css--・・・・
$b="ようこそ";
みたいな感じですね。
アクセス数はかなり多いのでどんなものかと思いまして
普通は1つのファイルに収めるよね オープンソースのCMS見りゃ分かるが個別に分けてるものなんてないよね
いい加減スレタイ嫁
>>47 分かれてるがキャッシュにより毎回読み込まないようにしている実装とかよくある
50 :
nobodyさん :2010/05/31(月) 17:12:47 ID:GblyjBgz
小沢一郎幹事長、ソウルの国民大学で講演「日本人は寄生虫、害虫」
民主党の小沢一郎幹事長は12日、ソウルの国民大学で講演後、約250人の学生と
日本人について語り合った。学生から、多くの日本人が学校にも通わず、仕事にも
就かないニートについて聞かれ、小沢氏は「日本のニートの現状はみんな親が悪い。
日本人の親は学校にも行かないで、仕事もしないぶらぶら遊んでいる子供を食べさせ
ている」と持論を披露した。
小沢氏は「学校にも行かない無職の子どもを責める前に、日本人の親達は子供を
甘やかしている。親に民族教育をしっかりしないといけない」と主張した。「日本人の
若者は漠然と他人に寄生し寄生虫として生きているとんでもない害虫だ」とした。
「もともと日本人の親達もどうかしている。日本人は動物にも劣る民族といっても
過言ではない」とした。「日本人はもともと民度が劣るから、君達韓国人のような
優秀な民族の血を日本人に入れない限り、他人やアジアに寄生して生きる害虫日本人
が増えるだけだ」とした。日本の古代歴史についても「韓半島南部の権力者が日本の
国家を樹立したもの」と述べた。・・・・( ソウル発外電 2009/12/13)
【トンデモ史観】小沢一郎・韓国講演
ttp://www.youtube.com/watch?v=uX7xFMvCly8&feature=youtube_gdata 【売国】小沢一郎幹事長言行録
ttp://www.youtube.com/watch?v=NXjgD4jb_Jg&feature=channel
51 :
EM114-48-95-102.pool.e-mobile.ne.jp :2010/05/31(月) 23:42:10 ID:dCMCj0N4
52 :
nobodyさん :2010/06/01(火) 07:26:04 ID:qOSq8mL1
$option = array ( "src" => ここ, "folder" => "folder/", "size" => 120 ); そこに配列の格納された変数を指定したいんですが、 どうすればいいのでしょうか
>>52 そこってどこだ?こういうこと?
<?php
$option = array (
"src" => 'ここ',
"folder" => "folder/",
"size" => 120
);
var_dump($option['src']);
string(6) "ここ"
54 :
nobodyさん :2010/06/01(火) 08:29:02 ID:qOSq8mL1
>>53 わかりにくい書き方してすいません。
こういうことがしたいんです。
$hairetu = array ('aaa', 'bbb', 'ccc');
$option = array (
"src" => $hairetu,
"folder" => "folder/",
"size" => 120
);
配列のうちの一つを指定するなら、$hairetu[0]などで可能なんですが
配列に含まれるすべての値を指定したいんです。foreachでループさせるときのように。
その書き方で $option["src"]にすべて入るけど違うの? foreach( $option["src"] as $var ) { print $var; }
質問の意味が分からない
57 :
nobodyさん :2010/06/01(火) 11:11:13 ID:qOSq8mL1
54 すいません、自己解決しました。 foreachループの中に入れたらうまくいきました。 どうもお騒がせしました。
58 :
nobodyさん :2010/06/01(火) 17:52:51 ID:k/zNPSvj
php.ini display_errors Offのまま、 特定のディレクトリのスクリプトだけ表示させるという方法はないでしょうか?
ini_set('display_errors', 1);
PEAR DB + ORACLE 使ってるんだけど、number型の0.01を取得すると、 文字列の".01"が帰ってきます。 "0.01"を取得するにはどうすればよいですか?
掲示板を作成してるのですが $comにhogeが入ってる場合NGワードが入ってますというエラー文を出すにはどうすればいいのでしょうか
strstr
to_char
65 :
nobodyさん :2010/06/01(火) 19:50:51 ID:6jzz/jSk
ereg_replaceからpreg_matchに切り替えをしたいのですが、 よく分かりませんでした。 $rcd = ereg_replace("\./", "", $filename22); $dr6 = ereg_replace("\./", "", $thum); ↓ $rcd = preg_match("(\./)", "", $filename22); $dr6 = preg_match("(\./)", "", $thum); これでは機能しません。どう記述したらいいでしょうか?
>>65 replaceをやめたいというのは本意なの?
$rcd = preg_match("/(¥.¥/)/", "", $filename22); $dr6 = preg_match("/(¥.¥/)/", "", $thum); 左右を/で囲わないとだめ、もしくは以下のような感じ $dr6 = preg_match("|(¥./)|", "", $thum);
と思ったらereg_replaceかよw
69 :
nobodyさん :2010/06/01(火) 20:31:05 ID:6jzz/jSk
$rcd = preg_match("/(\.\/)/", "", $filename22); $dr6 = preg_match("/(\.\/)/", "", $thum); $rcd = preg_match("|(\./)|", "", $filename22); $dr6 = preg_match("|(\./)|", "", $thum); $rcd = preg_match("|\./|", "", $filename22); $dr6 = preg_match("|\./|", "", $thum); 試しましたが値は0しか帰ってきません・・・・
preg_matchの構文がおかしい マニュアルみたらすぐ解決するのになぜ見ないかね ./を消すだけならstr_replaceでやればいいじゃん
72 :
nobodyさん :2010/06/01(火) 21:44:02 ID:6jzz/jSk
str_replaceで処理するようにしました ありがとうございました
超初級質問です echoの際、シングルクオテーションで囲まれた$変数はそのまま$つきで 表示されるはずなんですが、以下はなんでちゃんと、 $変数の中身が表示されるんでしょう? echo '<a href="check.php?id='.$row['id'].'">チェック</a>'
シングルクォーテーションに囲まれてないから
途中で送っちゃった '<a href="check.php?id=' . $row['id'] . '">チェック</a>' なのだよ
シングルクォーテーションに囲まれてないから
囲まれた・・・
しかも熟女に
79 :
EM114-48-32-41.pool.e-mobile.ne.jp :2010/06/02(水) 11:06:30 ID:mhIc5LxU
質問受付あげ
80 :
nobodyさん :2010/06/02(水) 15:28:49 ID:1PsJc2A4
質問です VBで作ったものをPHP上で動作させることはできますか? それはどのようにして実現できますか? 宜しくお願い致します
system
82 :
nobodyさん :2010/06/02(水) 15:32:50 ID:1PsJc2A4
質問が悪いですかね? 値の受け渡しとかではなく、VBの画面をそのままWebアプリとして使いたいのです フレームか何かでその部分だけはVBの部分と独立させてやれると尚いいのですが
PHPMyAdminのタイムアウトまでの時間を延ばす方法をググったら config.inc.phpというファイルを編集すれば良いことがわかりましたが、 同名のファイルが4つあって、どれをいじればいいのかわかりません。 OSはUbuntuです。 1) /etc/phpmyadmin/config.inc.php 2) /usr/share/phpmyadmin/config.inc.php 3) /usr/share/phpmyadmin/setup/frames/config.inc.php 4) /var/lib/phpmyadmin/config.inc.php 1を編集しても効果ありませんでした。 2を編集したら時間は延びたようでしたが、元に戻ってしまったようです (ファイルの中身はちゃんと追記されたままになってるのに)。 結局どれが正しいファイルでしょうか?
84 :
83 :2010/06/02(水) 16:09:20 ID:1gJ1/kVu
IDを出し忘れました。すみません。
PHPスクリプトのタイムアウト<PHPのタイムアウト(php.ini)<Webサーバのタイムアウト(Apache)<OSのタイムアウト となってるわけでconfig.inc.phpとやら以外に原因がある可能性は?
>>82 無理、といいたいところだけど、そういうActiveX作って、PHPでそれを使うフレームを出力すればいけるのかも
87 :
nobodyさん :2010/06/02(水) 16:44:12 ID:1gJ1/kVu
>>85 そういう優先順位になってるんですね。
http://ameblo.jp/hyperdev/entry-10345093485.html 上のページを見てやってみたんですが、
「php.iniに設定した、ガベージコレクタの時間より大きくなる場合が多い」というのを防ぐために
ini_set("session.gc_maxlifetime", 18000);
っていう一行を入れてるみたいなので、問題はApacheとOSの設定ってことですかねぇ。
でも、昨日2のファイルに設定した直後はちゃんと有効だったのは何だったんだろう…。
73です
>>75 ありがとうございます。
おっしゃられてる方法でわかったつもりで、
以下を書くとエラーで怒られてしまいました・・・。
print '<a href='."$_SERVER['PHP_SELF']".'> 削除 </a>';
ほんとは上の文章が動作していたら、
?をつけてGetで変数を送りたいのですが、
?をつける以前につまづいてしまいました・・・
お助けください。
>>88 print '<a href=' . $_SERVER['PHP_SELF'] . '> 削除 </a>';
あと$_SERVER['PHP_SELF']の部分がソース名(php名)をひっぱってきたいだけなら
$_SERVER['SCRIPT_NAME']を使った方が良い
'<a href=' ←これは文字列 $_SERVER['PHP_SELF'] ←これもの中身も文字列 文字列同士を結合するために . (ドット)を使われるんだよ。 正しく書くと、 print '<a href=" . $_SERVER['PHP_SELF']. "> 削除 </a>'; となる。 hrefのクォートはシングルじゃなくてダブルね。 というか、リンク先を自分と同じスクリプトにするなら $_SERVER['PHP_SELF'] すら要らんよね。 クエリ文字を付けたリンクにしたいなら↓こんな感じ。 print '<a href="?del=1"> 削除 </a>'; あと余談だけど、ダブルクォーテーションの中に変数を入れる場合は 変数を { } で囲む癖をつけておいたほうがいいよ。
91 :
90訂正 :2010/06/02(水) 18:56:09 ID:???
いろいろ間違っててスマソ これもの中身も文字列 ↓ これの中身も文字列 文字列同士を結合するために . (ドット)を使われるんだよ。 ↓ 文字列同士を結合するために . (ドット)が使われるんだよ。 print '<a href=" . $_SERVER['PHP_SELF']. "> 削除 </a>'; ↓ print '<a href="' . $_SERVER['PHP_SELF']. '"> 削除 </a>'; hrefのクォートはシングルじゃなくてダブルね。 ↓ href=の後のクォートはシングルじゃなくてダブルね。
>>91 今回の例ではダブルだというだけだよね。状況によってはシングルの方が便利だし。
93 :
nobodyさん :2010/06/02(水) 22:14:08 ID:D8F23o+y
>>90 何で変数を{}で囲まないといけないんですか?
それが変数出力だとコードを見てすぐわかるから
>>94 そんな理由じゃないと思う。
ダブルクォートに囲まれた部分で配列を使おうとすると分かる。
配列使わないときも囲う癖をつけるべきって人は
>>94 が理由でしょう
>>93 >>94 の言うとおり、わかりやすいっていうのが理由の一つ。
あと、{ } を付ければ前後にスペースがいらない。
例えば、次の3つを比較するとわかる。
(1) echo "ab $text cde";
(2) echo "ab$textcde";
(3) echo "ab{$text}cde";
1はOKだけど、出力結果にもスペースが入ってしまう。
2は不可。
3はOKで、スペースも入らない。
あと、速度も違うんだけど、このことはあまり知られてないのかなぁ。
ちなみに、配列でキー名に ' ' を付けるのと付けないのも速度に差が出る。
99 :
98 :2010/06/02(水) 23:03:54 ID:???
ちょっと補足。 2は不可っていうか、エラーにはならないけど期待する表示にならないってことね。
ちなみに当然だけど文字列リテラルで ダブルクォートとシングルクォートを使うとでも速度は違うね。
>>98 {} なんぞ使ってて速度を気にするような人なんておらんだろ?
そもそも文字列内に変数を展開なんてしないし
速度の違いが分かるほど複雑なスクリプト組んでるわけじゃないけど
>>100 の理由でシングルしか使ってないな。妄信的に
103 :
nobodyさん :2010/06/02(水) 23:57:58 ID:yUWMqjwo
whileで条件式が数値の0のときにも、 TRUE判定させるにはどうしたらいいですか? while($num=strpos(゙あかあおしろ゙,゙あが,0)) ) で一番最初の文字列にヒットした場合弾かれてしまいます。 何かいい解決法があれば、どうかご教示をお願いします。
>>103 while (($num = strpos('あかあおしろ', 'あか', 0)) !== false) {}
>>102 {}使ったほうがすっきりする場合は使ってる。
88です
>>91 ありがとうございます。
print '<a href="'.$_SERVER['PHP_SELF'].'"> 削除 </a>';
は無事動きました。
href="
の部分のダブルクオテーションは文字という考え方ということですよね?
なので、
'<a href="'
という、シングルクオテーションで囲まれている
<a href="
が文字と言う考え方であってますでしょうか?
次に、変数を""というダブルクオテーションで囲むと、
その囲まれてる変数は展開されるという認識の下、以下にしてみるとダメでした。
print '<a href="'."$_SERVER['PHP_SELF']".'"> 削除 </a>';
今回、a href=の後のクオートがもともとのHTMLの仕様では、
ダブルクオテーションであり、そのあとに、変数を囲むダブルクオテーションが続くと
何か問題が出てしまうのでしょうか?
さらに、{}で変数を囲めるということでためしてみました。
print '<a href="'{$_SERVER['PHP_SELF']}'"> 削除 </a>';
も、
print '<a href="'.{$_SERVER['PHP_SELF']}.'"> 削除 </a>';
も動きませんでした。
書き方がまちがっていますでしょうか?
展開可能とはいえ文字列ん中に変数入れるとか普通気持ち悪くね? HTMLの中に書くって事でスタートしてるからこうなってるんだと思うよ つまりビュー層のハナシ zend のコーディング規約でもシングルクオートで変数は連結しろとかなかったっけ? 他言語の使い手にも読みやすいって事まで考えてそうなってると思うんだけどな
>>106 <a href="
が文字と言う考え方であってますでしょうか?
あってる
print '<a href="'."$_SERVER['PHP_SELF']".'"> 削除 </a>';
では,"$_SERVER['PHP_SELF']" のパースができない(だったような
print '<a href="' . "{$_SERVER['PHP_SELF']}" . '"> 削除 </a>';
なら動くと思う。
素直に
print '<a href="' . $_SERVER['PHP_SELF'] . '"> 削除 </a>';
でいいじゃんかよ
ちゃんとエスケープもしろよ?歯も磨けよ?
>>106 > '<a href="'
> という、シングルクオテーションで囲まれている
> <a href="
> が文字と言う考え方であってますでしょうか?
あってる。
> 次に、変数を""というダブルクオテーションで囲むと、
> その囲まれてる変数は展開されるという認識の下、以下にしてみるとダメでした。
> print '<a href="'."$_SERVER['PHP_SELF']".'"> 削除 </a>';
print '<a href="'."{$_SERVER['PHP_SELF']}".'"> 削除 </a>';
にしてみて。
> print '<a href="'{$_SERVER['PHP_SELF']}'"> 削除 </a>';
.が無いし、{}が不要。
> print '<a href="'.{$_SERVER['PHP_SELF']}.'"> 削除 </a>';
{}が不要。
>>106 $_SERVER['PHP_SELF']はセキュリティ上の問題があるのでHTMLとして出力する物には使わない
$_SERVER['SCRIPT_NAME']またはbasename(__FILE__)で代用
$_SERVER['PHP_SELF']や$_SERVER['SCRIPT_NAME']を使わなくても <a href=""> 削除 </a> でいけるやん
みんなよくつきあうな。どうみても釣りじゃん。
{}で囲むのはダブルクオテーション中のときだけでいいです //ダブルの場合 echo "こんにちわ、{$name}さん。"; //シングルの場合 echo 'こんにちわ、' . $name . 'さん。';
114 :
nobodyさん :2010/06/03(木) 05:28:29 ID:XbPCpr1k
>>104 ありがとうございます。
もうひとつお伺いしたいのですが、文字列の指定位置に文字列を挿入する場合の関数はありますか?
substr_replaceの使用を考えたのですが、置き換え文字数を0に指定するとうまくいきません。
1以上にして置き換え後の文字列に消した文字を含ませるのもスマートではない気がします。
どうかよろしくお願いします。
>>114 そういうのはそのまま考えて分割して連結でよくね?
マルチバイトとか絡んでくると面倒になるし
sprintfとか使うけどな
117 :
nobodyさん :2010/06/03(木) 07:36:18 ID:LdZGbuVn
fc2とかのアクセスランキングで、ランキングを表示させているサイトは混在する文字コードなのに 文字化けせずに表示できているのはどういった仕組みなのでしょうか。 よろしくお願いいたします。
119 :
nobodyさん :2010/06/03(木) 08:12:37 ID:LdZGbuVn
>>118 mb_convert_encoding autoとかででしょうか?
PHP でやってるとしたらそうじゃね? auto は微妙だけど
>>121 おめ。
どうやって勉強してるかわからないけど、
今の知識だとセキュリティ対策が十分にできないと思うから
本とか読んで学んだほうがいいよ。
>>89 >>108 元の質問者とは別人ですが、便乗して質問させてください
$_SERVER['PHP_SELF']より$_SERVER['SCRIPT_NAME']のほうが安全ということですが、
$_SERVER['SCRIPT_NAME']を使ってもエスケープは必要なんでしょうか?
>>123 確かにそちらの方が安全だが、アンカーの先にはそれについて言及していない。
誰にレスをしたんだ?
>>123 なぜ危険/安全なのか理解してる?
「php_self script_name」で検索すれば比較してるサイトがいっぱいでてくるよ
>>124 > 誰にレスをしたんだ?
主に
>>108 の「ちゃんとエスケープもしろよ」へのレスです。
>>125 はい、$_SERVER['PHP_SELF']のほうをそのまま出力すると
JavaScriptを仕込まれてしまう可能性があるということですよね?
なので、エスケープする理由はわかります。
お尋ねしたいのは、_SERVER['SCRIPT_NAME']でもエスケープする必要があるのかということです。
SCRIPT_NAMEにはPHP_SELFのようなXSSの脆弱性はないと思ってたんですが、
何か特殊な方法による攻撃の対象になることがあるんでしょうか?
129 :
nobodyさん :2010/06/03(木) 17:57:58 ID:OUHRb8my
CentOS5.3でPHP5.1を使っています。 クライアントにバイナリデータを送るときに fopenとfreadをとechoを使ってるんですが、 クライアント側からはバイナリデータが壊れていると 言われたりしています。 freadってバイナリセーフな関数なんですよね? 何か他に注意すべきところがありますか?
>>129 fopenでmodeにbフラグ付けてる?
131 :
nobodyさん :2010/06/03(木) 18:13:58 ID:iSHgRF9v
requireとかrequire_onceする静的?なモジュールと .soをextension_dirで登録する動的?タイプのモジュール。 後者はコンパイルなんかのコスト分遅いっていう認識はあってますか?
132 :
nobodyさん :2010/06/03(木) 18:15:38 ID:iSHgRF9v
ごめんなさい文末一行 ○前者はコンパイルなんかのコスト分遅いっていう認識はあってますか? ×後者はコンパイルなんかのコスト分遅いっていう認識はあってますか?
>>130 はい。読み込み専用で開けばよいので
パラメータは'rb'をつけています。
>>133 file_get_contentsやreadfileは試してみた?
>>131 requireやincludeは外部ファイルのスクリプトを読み込むもの。
extension_dirなどの拡張モジュールは、
Cなどの低級言語で書かれているのでPHPより高速で、当然にコンパイルされているので速い。
>>129 PHPスクリプトにBOMが付いてないかい
こういう問題はHTTPをモニタリングするツールを入れて
実際に送られたヘッダとデータを確認するのがいいんだが
>>133 >>136 先ほど自己解決しました。
おそらく・・なんですが。
サーバ側のファイルとクライアントでダウンロードしたファイルを
比較したところ、クライアント側には行頭に改行コードが入ってました。
そのせいでファイルサイズも1バイト分差異がありました。
対策としてサーバ側のスクリプトファイルの
不要な改行コードを削除しました。
<?
--色々なロジック--
?>
←この辺りの不要な改行コードを削除。
そうしたところ、こちらが意図するとおりにファイルを
送ることが出来ました。
どうもありがとうございました。
>>137 XML吐く時に同じ事食らったよ
以来終了タグ ?> は書かなくなった
zend framework のコーディング規約でも書くなってなってる
>>140 バカよけのための規約で、結構前からあるにはある
PHPをプログラミングするのにお薦めの最適な開発ツール(エディタ)って何になりますか? コード補完してくれて,定義済みのうユーザー定義関数もアシストしてくれるような定番があれば是非知りたいです MySQLのクエリも同時に書くのでそれも補完アシストしてくれたりしたら最高ですがそんなのってあるんでしょうか? 開発効率が格段にあがるのでしたら有料でも全然かまいませんので お願いします ちなみに今は秀丸で書いてます
NetBeans Eclise
vim emacs
プログラマならvimとかemacsみたいな自分でカスタムできるエディタを 早いうちから使っといた方がいいよ 秀丸でもマクロで多少のカスタムはできるんじゃなかったっけ 使ったことないから知らないけど
ちょっとした編集 gvim/vim デバッグまでする場合 netbeans
Eclipseは導入までがちょっと面倒なんだよな、NetBeansは簡単なのに
>>135 やっぱりそうでしたが、ありがとうございました。
>>140 >>141 たしかにzend frameworkには?>が書かれていないですね。
規約だったとは・・・。
ということは、皆さんの開発現場でも
?>は書かないようにされているのでしょうか?
?>を書かないことでのデメリットはないのでしょうか?
もしデメリットがあればそれを認識した上で
私も活用したいと考えておりますので
教えていただけないでしょうか。
>>150 ありがとうございます。
拝見いたしました。
色々と危険があるようですね。
今回私もそれで苦労したので、
ひとまず、?>は削除したいと思います。
閉じタグっていうか、 ?>がパースしない直出力への開始みたいなもんだと思ってます。
【OS名】Windows 【PHPのバージョン】5.2 クラスの静的メンバに設定ファイル(xml)を読み込みたいのですが、 Javaでいう static句 みたいなものってあるのでしょうか? 静的関数にして初回時に読み込むみたいな処理にすれば 実現はできるなーと思っているのですが。 よろしくお願いします。
>>146 NetBeans6.9 Betaを導入してみました
ですが、これまで作っていたPHPファイルの
日本語によるコメント部分がすべて文字化けします。
NetBeans上で文字を打ち直して保存して、
それを今度テキストエディタで開くと、
今度はテキストエディタの表示が文字化けしているという状態です。
PHPの文字コードは
UTF-8のBOM無し
で開発したらいいのでしょうか。
根本的なところでミスってますか?
>>153 スタティックなメンバは「PHP static」とかでググればすぐ見つかるはずだけど、
初回時ってどういうこと?
コンストラクタを使うのとは意味が違うの?
あとスレタイ読んでね。
>>143 EclipseよりスタンドアロンのAptanaのほうが軽いと聞いた
>>154 PHPはBOM付きはダメだと俺は認識してた。
BOM付きのスクリプトでHTMLを出力すると崩れたりすると思う。
BOMを消したらNetBeans 6.9 Betaの文字化けしないかどうかは知らないけど。
それより、6.9はひと月ほど前に使ったらめっちゃ不安定だったけど
もうだいぶ改善されてるのか?
正式版の時期が近づいてるから、そろそろ良くなってなきゃまずい頃だとは思うが。
158 :
nobodyさん :2010/06/04(金) 15:04:56 ID:AnXEBzRW
PHPで、クラスの中にあるメソッドの一覧を取得するにはどうしたらいいでしょうか?
160 :
158 :2010/06/04(金) 15:12:27 ID:???
>>159 ありがとうございます。
PHPのリフレクションを使って、どうやってクラス毎のメソッド一覧、シグネチャ一覧を取得できますか?
162 :
158 :2010/06/04(金) 15:18:28 ID:???
>>154 単純に、ファイルの文字コードとエディタの文字コードが違うんじゃないか?
上書き保存じゃなくて変換とかすればできるはず
>>164 この流れで文字化けに対する解決を提示しようとするなんて意地が悪いね。
>154 プロジェクトのプロパティに文字コードの設定がある netbeans は指定の文字コードで読もうとするので プロジェクト内は統一する必要がある 変換もできないので他のエディターで変更しとかないといけない
>>154 Netbeans UTF-8 でググればUTF-8で開く方法がたくさん出る
>>154 > PHPの文字コードは
> UTF-8のBOM無し
> で開発したらいいのでしょうか。
うん、それでいいよ。
PHPの設定も一応見直すとよいです。
なんか的外れなレスが多くね?
169 :
nobodyさん :2010/06/04(金) 23:48:40 ID:XmC1Ur85
【OS名】Linux (32bit) 【PHPのバージョン】5.2 CORESERVERを使用しています。 DB使わずにファイルでデータを管理しているのですが、 ファイルロックの方法が間違っているのかデータが飛びまくって困っています。 上書きする際の流れは ・ロック用ファイルをwでオープン ・ロック用ファイルを排他ロック ・変更ファイルをrでオープン ・共有ロック ・データを変数に格納&指定部分を変更 ・ファイルロック解除 ・ファイルクローズ ・変更ファイルをwでオープン ・排他ロック ・さっきの変数をfwriteで上書き ・ファイルロック解除 ・ファイルクローズ ・ロック用ファイルのロックを解除 ・ロック用ファイルをクローズ って感じです。 他にも同じファイルを呼び出す処理がいくつかあって、 それらではrのときは共有ロック、aのときは排他ロックをかけています。 ご指摘お願いします。 ソース必要でしたら貼ります。
170 :
nobodyさん :2010/06/05(土) 00:03:29 ID:UzvzEjBp
質問です。 HTMLで以下のコード書いてみた。 <form method="GET" action="index.php?sex=man"> <input type=hidden name=myname value="maiko"> <input type=submit value="regist"> </form> このフォームだと、myname="maiko"はサーバに渡るんだけど、 actionに指定しているsex=manの部分がサーバにわたらない。 method="POST"の場合だと、両方サーバにわたるんだけど、 なんで駄目なんでしょうか? htmlの仕様?
うん
>>168 うん。君が的外れ。
>>169 PHPのファイルロックはダメダメ
アクセスカウンターが飛ぶとか過去スレ(かなり前)にあったと思う
ロック用のディレクトリやファイルを使ったりしてる人もいる
よく読んでないけど設計は合ってると思う
>>170 ブラウザのアドレス見たら分からんかな
173 :
nobodyさん :2010/06/05(土) 00:35:42 ID:WrJc7rsM
すみません、文字コードのことで困っています。 今現在、外部ファイルを読み込むプログラムを作成しているのですが、 一部の文字コードにおいて文字化けが発生してしまいます。 UTF-8 => o, EUC-JP => x 具体的には、片方の文字コードにしか対応できないということです。 EUC-JPに対応させようとしたら、今度はUTF-8が駄目に。。。 php.ini の設定内容についてアドバイスもらえると助かります。 よろしくお願いします。
>>173 具体的におかしくなる文字列を出した方がいいと思う
文字コードによって存在しない文字もある訳だし
175 :
173 :2010/06/05(土) 00:41:13 ID:WrJc7rsM
>>174 どうもありがとうございます。
対象の外部ファイルについてですが、任意の一般的なサイトです。
また、日本語については全て化けてしまっています。
自動的に文字コードを判別して切り替えることはできないでしょうか?
>>172 「PHPの文字コードはUTF-8のBOM無しで開発したらいいのでしょうか。」とか
「根本的なところ」とか聞かれてるんだから、
>>157 と
>>168 が的確なレスでしょ。
文字コードの変換方法やNetBeansの設定が知りたいわけじゃないと思う。
177 :
173 :2010/06/05(土) 01:04:39 ID:WrJc7rsM
返された文字列の文字コードを調べて、mb_convert_encodingで解決できました。 下らねぇ質問失礼しました。
>>175 mb_detect_order でぐぐってみてくれ。
>>176 問題はdocblockの文字化けじゃないの?
そらすまんかった
>>169 読み込みと書き込みの間でトランザクションが途切れているのが不整合の原因
$f = fopen('file', 'r+');
if (!flock($f, LOCK_EX)) die 'ロックできなかった';
/* ここで読み込み&書き込み */
fclose($f);
flock($f, LOCK_UN) は書き込みバッファの関係上、理由がなければ使わない
flock()自体はシステムコールのflock(),fcntl(),LockFileEx()を呼んでるだけなので
よっぽど古いファイルシステムや処理系じゃなきゃ信頼していい
180 :
179 :2010/06/05(土) 03:04:11 ID:???
最も外側にロック用ファイルでロックしていたのを見落としていた、ごめん 1行目の指摘は無視してくれ
>>178 別にBOMつきのエンコードでうまく動作するなら文字化けの対処方法を書いてもいいよ。
けどそれじゃだめじゃん。
>>169 ロックファイルは存在してるかどうかだと思ってたんだが
file_exsists で true なら待機みたいな
そのやり方は良くあるだめなパターンだよー
>>181 UTF8Nはいいけど彼の文字化けはどうすんだよw
つまり
>>164 だろ
PHPの設定とか完全に意味不明
>>185 大丈夫な時
A B
存在チェックOK
ロックファイル作成
存在チェックNG
ダメな時
A B
存在チェックOK
存在チェックOK
ロックファイル作成
ロックファイル作成
>>184 横?でしかもうろ覚えですまんが、
今UTF-8じゃないならスクリプトのエンコードをUTF-8に変更する時に設定変えないとだめじゃないっけ
>>186 ダメな時(B)のロックファイル作成が通るって事?
fopen() のモード x みたいな感じを想定してた。
> 書き込みのみでオープンします。ファイルポインタをファイルの先頭に置きます。
> ファイルが既に存在する場合には fopen() は失敗し、 E_WARNING レベルのエラーを発行します
> ファイルが存在しない場合には新規作成を試みます。
flockとかがアレなのはアレなんで,つまりそう言うのはDBゲホゲホ
>>187 internal encoding の事かー!!
>>188 それに頼るならわざわざfile_existsする必要なくね?
あ
192 :
nobodyさん :2010/06/05(土) 13:57:26 ID:dqtCuv4f
以前も、PHP+MYSQLで質問させていただいたものですが良い方法が見つからないので 何方か力を貸してください。 SELECT文からtest内の値をarray関数に入れたいのですが良い方法ありますでしょうか。 mysql_fetch_arrayだと、idとtestをarrayにいれるだけで結果を全て入れる方法が 見つからない状況です。 実際には下記のように値を入れたいのです。 $a = array (aiue, okaki,kuke ); --------------------------------- | id | test | --------------------------------- | 01 | aiue | --------------------------------- | 02 | okaki | --------------------------------- | 03 | kuke |
Adobe のDreamweaverCS5で開発やってる人っている? どーも、ついに本格的にCS5でPHPのコードヒントとか関数リファレンス、 動的な部分もプレビューしてくれたりとか、プロジェクト管理もできるようです。 今エクリプスなんだけど、ちょっと乗り換えてみたいんだけど、使ってる人いたら感想とか聞きたい。
うゎ、
>>192 じゃないけどfetchAll()知らんかったーorz
foreachでループしてfetchしてた…
foreachじゃなくてwhileだった
197 :
169 :2010/06/05(土) 15:06:11 ID:zOlNlPcy
ファイルロックについてレスしてくださった方、ありがとうございます。
現在
>>179 さんのアドバイスに従い、LOCK_UNの記述を削除してテスト中です。
念のため、rとwでわけていたのもr+で一度に処理するようにしてみました。
ロックファイルを使用する場合は
>>188 のやり方がいいんでしょうか?
これでダメだったら試してみます。
ほんとはDB使った方がいいのは百も承知なんですが、
既にサイトが稼働してるおかげで勉強&システム移行してる余裕が・・・
どうもありがとうございました。
>>186 普段DB使ってて、ファイルでのデータ管理は経験ない素人が適当なこと言って悪いけど、
ロックファイル作成後、書き込み時にロックファイルを確認すればいいんじゃない?
ロックファイルが複数あったら、先に作成されたほうだけを有効にするとか。
199 :
nobodyさん :2010/06/05(土) 17:06:14 ID:dqtCuv4f
>>194 ありがとうございます。とりあえずサンプルみて頑張ります。
(こんな関数しらんかった…)
200 :
質問1/2 :2010/06/05(土) 18:17:47 ID:w09PCQyp
検索させようと思ってますが、某所参考に書いたらDBの中身全部出てきてしまった。よろしくご指導願います PHP5 & MySQL5.0 <?php $mysql_dbs = mysql_connect("host", "user", "pass"); mysql_select_dB("db-name"); $debug = false; if($debug) print_r($HTTP_POST_VARS); $query = "SELECT * FROM table"; if(!empty($Col0)) { $Col0 = addslashes($Col0); $where = "Col0 MREGEXP '$Col0' && "; } if(!empty($Col5)) { $Col5 = addslashes($Col5); $where .= "Col5 MREGEXP '$Col5' && "; }
201 :
質問2/2 :2010/06/05(土) 18:18:54 ID:w09PCQyp
if(!empty($where)) { $where = substr($where, 0, -4); $where = "WHERE " . $where; } $query .= $where; if($debug) { print "<BR><BR>"; print $query; } $result = mysql_query($query); $num_rows = mysql_num_rows($result); if($num_rows == 0) $message = "該当するデータはありませんでした"; else $message = $num_rows . "件ヒットしました"; ?> 検索結果<br> <?=$message?> <table border=1><tr><td>名前</td><td>住所</td></tr> <? while($row = mysql_fetch_assoc($result)): ?> <tr><td><?=$row[Col0]?></td><td><?=$row[Col5]?></td></tr> <? endwhile; ?> </table><a href="input.html">再検索</a> </body> </html>
$Col0と$Col5がないんじゃ?
古くさいコードだな
某所ってどこなんだよ
205 :
nobodyさん :2010/06/05(土) 18:47:16 ID:IfiEpjR7
【OS名】 Ubuntu 9.10 【PHPのバージョン】 5.2.10 【連携ソフトウェア】 MySQL 【質問内容】 SQLインジェクションを防ぐためには、プリペアードステートメント(PDOのbindParam)を 使うだけで十分なんでしょうか? 怖いので、今はhtmlspecialchars($text, ENT_QUOTES)というのをやってから プリペアードステートメントを使ってINSERTやUPDATEをしてます。
>>205 htmlspecialcharsをそこで使うのは間違い
208 :
nobodyさん :2010/06/05(土) 20:08:07 ID:IfiEpjR7
>>206 PHPMyAdminでデータベース内を覗いて、保存されたデータを見てみると
「<」のような文字がたくさんあって、容量的に「<」という1文字より多くなるし
ぱっと見て読みにくいので、使い方が間違ってるかなと思ってました。
「エスケープ」する必要があると聞きましたが、htmlspecialcharsというのは
エスケープとは違うんでしょうか?
>>207 あ、そうです。prepareです。
例えば、
$sql = "INSERT INTO testtable (testcolumn) VALUES (:testcolumn)";
$stmt = $db->prepare($sql);
$stmt->bindParam(':testcolumn', $_POST['data1']);
$stmt->execure();
という風にやってます。
「基礎からのPHP」という本で学んだやり方です。
これだけでSQL対策は十分ですか?
よろしくお願いします。
209 :
nobodyさん :2010/06/05(土) 20:09:02 ID:IfiEpjR7
「SQL対策」は「SQLインジェクション対策」の誤りでした。すみません。
210 :
nobodyさん :2010/06/05(土) 20:12:56 ID:XPkr7TFj
211 :
205、208です :2010/06/05(土) 22:46:24 ID:IfiEpjR7
SQLインジェクションとXSSを混同してたようです。 いろいろ調べてみて自分で理解したことを書いてみます。 ・DBに保存するとき SQLインジェクションの対策としてプリペアードステートメント(PDO::prepareなど)が必要 それを使えばhtmlspecialcharsは不要 ・ブラウザに出力するとき XSSの対策としてhtmlspecialcharsを使う これで合ってますでしょうか? プリペアードステートメントを使わない場合、htmlspecialcharsでは代わりになりませんか?
マニュアルをちゃんと読んだらどうなんだ
PDO使ってるならPDOのメソッド一覧あるんだから1つずつどういうものがあるか確認するぐらいしなさいよ
>プリペアードステートメントを使わない場合、htmlspecialcharsでは代わりになりませんか?
http://www.php.net/manual/ja/pdo.quote.php htmlspecialcharsはxss対策に使うものでsqlインジェクション対策に使う関数ではありません
213 :
nobodyさん :2010/06/05(土) 23:08:36 ID:bkBaLixK
質問です 28habcpt918のような英数字の組み合わさった文字列を 最後の数字の部分だけ00918のように頭に0を加えて5桁にしたいのですが、 文字列のパターンはabc123や987xyz12のようにさまざまです。 つまり、 28habcpt918なら28habcpt00918、 abc123ならabc00123、 987xyz12なら987xyz00012のようにしたいです。 アドバイスお願いします
215 :
nobodyさん :2010/06/05(土) 23:25:25 ID:IfiEpjR7
>>212 すみません、既に読んでます。
お尋ねしたいのは以下の2点です。
・プリペアードステートメントを使えば、SQLインジェクションの対策としては完璧ですか?
・SQLインジェクションを防ぐ方法はプリペアードステートメントを使うのが良いのはわかりますが、
htmlspecialcharsを使う方法が代わりにならない理由は何ですか?
(数値が期待される部分では、その部分に用いる値をintval()で数値化する方法もダメですか?)
>>215 >プリペアードステートメントを使えば、SQLインジェクションの対策としては完璧ですか?
いいえ
プリペアードステートメントとは簡単に言えばSQLを高速に実行するための準備のことなので
sqlインジェクションとは関係ありません
PDO::prepareはこの準備をしつつSQLインジェクション対策を同時に行うメソッドです
>・SQLインジェクションを防ぐ方法はプリペアードステートメントを使うのが良いのはわかりますが、
> htmlspecialcharsを使う方法が代わりにならない理由は何ですか?
xssとsqlインジェクションとではエスケープすべき文字列が異なるからです
217 :
213 :2010/06/05(土) 23:34:04 ID:bkBaLixK
>213 preg_match("/[0-9]+$/", $str);
>>213 $str = "28habcpt918";
$length = count($str) - strlen((int)strrev($str)) - 1;
$format = sprintf("%05d", strrev((int)strrev($str)));
echo substr($str, 0, $length) . $format;
220 :
nobodyさん :2010/06/05(土) 23:39:11 ID:Jla4xmZF
お願いします。 文字列のある部分だけ置き換えたいのですが、 1)12345-12345-123-a 2)aaa-aaa-aaa-12345-a の2つの文字列があるとき、結果を 11111-123-a 11111-12345-a と置き換えしたいです。 $AAA = preg_replace('/(.*?)-(.*?)-a/','11111-(.*?)-a',$AAA); と記述したのですが、結果は、 11111-(.*?)-a 11111-(.*?)-a になってしまいます。初歩的で申し訳ありませんが、 希望の動作にするためにはどう記述すればいいか宜しくお願いします。
221 :
213 :2010/06/05(土) 23:46:34 ID:bkBaLixK
222 :
219 :2010/06/05(土) 23:47:44 ID:???
$lengthがおかしかったから訂正 $length = count($str) - strlen((int)strrev($str)) - 1; ↓ $length = strlen($str) - strlen((int)strrev($str));
223 :
205、208です :2010/06/05(土) 23:54:22 ID:IfiEpjR7
>>216 レスありがとうございます。
> プリペアードステートメントとは簡単に言えばSQLを高速に実行するための準備のことなので
> sqlインジェクションとは関係ありません
> PDO::prepareはこの準備をしつつSQLインジェクション対策を同時に行うメソッドです
知りたいのは、プリペアードステートメントの本来の目的ではなく、
「SQLインジェクション対策として十分か」ということです。
> xssとsqlインジェクションとではエスケープすべき文字列が異なるからです
htmlspecialcharsでは「\」がエスケープされないのが問題ということですね。
疑問が解消できました。
224 :
213 :2010/06/05(土) 23:54:48 ID:bkBaLixK
>>219 文字列の最後が0の場合うまくいかないようです
>>224 もう正規表現でええやん。
$str = '28habcpt918';
if (preg_match('/([0-9]+)$/', $str, $matches)) {
$format = sprintf('%05d', $matches[1]);
echo $format;
}
227 :
219 :2010/06/06(日) 00:21:03 ID:???
>>224 失礼
全然考えてなかった
intにキャストしてるから頭にある0が消えちゃう
>>226 さんので取れるからそれでおながいします
>>223 > 「SQLインジェクション対策として十分か」ということです。
そらおまえさん用意されてる関数を信じないで何を信じるの?
そんなに心配ならDBの資料あさって自前でエスケープしたらいいんとちゃうの?
>>228 SQLインジェクション対策に有効だということはわかっていても
「十分」有効なのか「ある程度」有効なのかわからないということです。
プロが作ったサイトでも対策に失敗している場合があるようなので、
素人にとっては自分勝手に信じるのが怖いのです。
そのため、他者の裏付けを求めてお尋ねした次第です。
「信じないで何を信じるの?」ということは、つまり「信じていい」ということですね。
ありがとうございました。
>>220 $a = "12345-12345-123-a";
$b = explode("-", $a);
echo "11111-" . $b[count($b)-2] . "-" . $b[count($b)-1];
>>229 > プロが作ったサイトでも対策に失敗している場合があるようなので、
それは関数のせいじゃなくて単にエスケープ忘れてるだけ
プロといっても人間だからね
大手サイトとかにもなると作りが複雑になるし
ちゃんと規約決めて工程を遵守して多人数でやってる場合はバグも出にくいけどコストがかかる
PHPなんかはコスト重視だから設計もなしに適当にやってるとこは潜在的なバグがいっぱい
>>229 あなたはSQLインジェクション対策の有効性について
慎重な意見を求めているようだけど、逆に他者の裏付けがあれば安心出来るのか?
そんなに心配なら自分で納得いくまでとことん調べるしかないだろう。
233 :
220 :2010/06/06(日) 00:51:00 ID:uQxRO+T3
>>225 ありがとうございます。
すいません読んでみましたが、初心者なのでよくわからなかったです。
$n形式という方法ですか?
他の人の意見聞くのはいいだろうけど、聞いた上で自分なりに勝手に解釈して納得してるのはどうなんだ? それなら聞く必要ない気がするけどさ。
くだ質で排他的なのはイクナイ。
238 :
220 :2010/06/06(日) 02:32:34 ID:uQxRO+T3
sqliteのpdoをソフトウェアで再現するやつありますか。 ワードプレスを動かしたいのですが
240 :
nobodyさん :2010/06/06(日) 11:19:21 ID:lMgRzA8F
sqliteのpdoをソフトウェアで再現するやつありますか。 ワードプレスを動かしたいのですが
>223 SQLインジェクションを予防するのに、 ・「SQLインジェクションを予防するための関数」と ・「XSSを予防するための関数だけど、たまたまSQLインジェクションも防止できるような気がする関数」 どっちを使うかって話だよ。 つうか、「\がエスケープされないから危険」という思考は、要は裏で「SQLに混じって危険なのはコレとコレとコレと…」と候補を自分で考えてるだろ。 「危険な要素を弾く」はセキュリティ対策として非常に危険なので(見落としがあるとアウト)、自己の判断で行なうのを極力避けるべき。 俺を含めPHPプログラマの9割がカスなのは事実だが、言語自体の開発者や標準ライブラリの設計者は優秀だし、しっかりテストもされてる。 だから、「2chの意見と標準ライブラリどっちを信じるか」ならば、標準ライブラリを信じたほうが絶対にいい。
243 :
nobodyさん :2010/06/06(日) 12:24:40 ID:lMgRzA8F
>>241 pdoドライバが必要になります。なしで使える方法無いですか。
244 :
nobodyさん :2010/06/06(日) 12:29:00 ID:lMgRzA8F
これがOFFで ;extension=php_pdo_sqlite.dll こっちがONで extension=php_sqlite.dll extension=php_sqlite3.dll 動く方法ないですか
245 :
nobodyさん :2010/06/06(日) 12:40:03 ID:lMgRzA8F
posqlは一応データベースの一種だぞ wordpressのソースをハックすればどうにでもなるが あんな長いのを見るのもめんどくさいしな ちゃんと抽象化されてて他のスクリプトへの影響が最小限の作りになってて DB操作用のクラスなんかがあってそのファイルだけいじればOK みたいなかんじの作りになってたら修正も簡単なんだけど wpのソースなんて見たことないしシラネ
247 :
nobodyさん :2010/06/06(日) 13:15:59 ID:lMgRzA8F
>>241 のpdo sqliteをpure PHPで動かせればいいのですが。pdo sqliteの代替え。
代替が読めない子か
犠牲になったのだ
入力画面、確認画面、完了画面の3つのphpで構成したいのですが、 入力画面から確認画面に遷移する際のバリデーションは、どこに実装すべきでしょうか?
>250 確認画面と完了画面の両方。 コピペはあり得ないので、外部ファイルに関数の形で定義する事になるな。
>>251 そうなると、確認画面で入力エラーになったら、入力画面にリダイレクトさせることになるんですよね。
その場合の入力値って、セッションに保存しておくしかないのですか?
>252 確認画面にinput type="hidden"で仕込めばいい。 あと、入力された値がちょっと全角英数だったからとかいう理由で入力値を全部消滅させやがる糞フォームを作るような奴は地獄に落ちるべき。 普通にエラー表示するだけにしとけ。ブラウザバックで戻れば入力値は保持されてることが多いし。 確認画面にエラー内容と、ユーザーが入力したものがそのまま入ってる入力フォームが出てるのがベスト。
254 :
nobodyさん :2010/06/06(日) 15:39:21 ID:lMgRzA8F
PDO-SQLITEを バイナリ(エクステンション)なしで 動かす方法ないですか。
255 :
nobodyさん :2010/06/06(日) 16:37:25 ID:B6xMlzjU
ブログなどで画像を表示する場合、 画像保存時に縮小画像を保存しておくのがいいのか 表示時に毎回縮小するのがいいのか、どっちでしょう? 全画像の縮小版をあらかじめ保存しておくと容量を喰いそうなので 表示のタイミングで縮小するのが良いと思ってますが、 縮小画像を削除するタイミングがわかりません。
>255 バッチで定期的に古いファイルを削除すれば? 実際には更新日時をいちいち判定するのは面倒くさいので、例えば月ごとにディレクトリ掘ってそこに置いといて、月イチで古い月のディレクトリを丸ごと削除とか。 保持しておくべきか動的に生成すべきかは画像の量と表示回数次第だろうね。 容量をざっくり見積もって、それが許容できそうな範囲なら静的に置く方が楽だと思う。
257 :
nobodyさん :2010/06/06(日) 17:00:31 ID:B6xMlzjU
>>256 なるほど。その方法いいですね。
でも考えてみれば、アクセスが多くなると毎回縮小するのは負荷がかかりますね。
容量的にいけそうだったらやっぱり静的なほうにしようと思います。
258 :
nobodyさん :2010/06/06(日) 17:02:41 ID:lMgRzA8F
縮小画像はつくっておくべきだな。 量が多いなら、3Mくらいの複数の書庫に詰め込んで呼び出せばいい。 実測も書庫の方が高速になる。 たとえば100個表示させるとすると、画像への100回オープンが発生するが。 書庫なら一回。
>>254 はいって何だよ。さっきから何度も。何がはいなんだよ。
出来もしねえ奴が軽々しくはいなんて言うんじゃねえよ。
だから申し訳ありませんじゃねえだろうよ。何が申し訳ねえんだよ。
本当に反省してんのかよ。
本当に今なら出来んのかよ。
口先だけの謝罪をするんじゃねえよ。
いい加減な気持ちでやってるんだったら今すぐ帰れよ。
だから以後じゃねえんだよ。俺は今の話をしてんだろうが。
今の反省も出来てねえ奴が勝手に未来語ってんじゃねえよ。
勝手に話を切り上げようとするなよ。失礼だろうが。
そんなにやりたくないんだったらだったら今すぐ辞めろお前。
すごい誤爆だな
つうかもはやスレ違いだろsqliteのやつ
>>254 無い
もうコピペに突っかかるのは止めて大人しくしてくれ
>>170 試したら、sex=manのデータが確かにサーバに渡ってないな。
これは、ブラウザの仕様?RFCの仕様なの?
複数のブラウザでためして結論出せば?
267 :
nobodyさん :2010/06/07(月) 06:44:36 ID:FJeCaP+n
最初から用意されているデザインテンプレート以外を使用したい場合などに、 自分でテンプレートを作成することになると思いますが、 その場合例えばDBから値を取り出してそれを表示するなんて場合、 DBから結果取得〜表示までのロジックをかかなければなりません。 一部用意されている関数で処理が省略できるとしても、 PHPを知らないとなりません。 そこであらかじめテンプレートで使われそうな処理(上記の例の場合、ある結果の取得から表示まで)を 関数単位で用意し、テンプレートではHTMLの構文に似たカスタムタグを使うことで、 テンプレートからHTMLに変換する際、カスタムタグを構文解析して対応した関数を呼び出そうと考えました。 こういう方法は一般的でしょうか? 構文解析方法ですが、正規表現を使って行っています。
>>267 Smartyとかテンプレートエンジン使うとかではダメなの?
もちろん、HTMLタグに似せたり、テンプレート側から呼び出せる機能を制限したい、ということであればあり得る方法だと思う。
告知させて。
現在のところあまり盛んに動いてるオンライン勉強会がないので
あたらしくグループつくりました。
オンラインでチャット・生中などいろいろ(未定)で
できれば毎晩だらだら勉強やる予定です。
熱意のある人いたらたまーに課題だしてってアプリ作るなんてのも
ありかなと思ってます。
初心者の人はもちろん、おれが仕切って教えてやるわって人も大歓迎です。
グーぐるグループ
「初心者歓迎 PHP勉強会 2ch発」
ttp://groups.google.co.jp/group/2ch-php [email protected] 参加希望の人いたら、メールくださいな。
270 :
267 :2010/06/07(月) 12:08:54 ID:dndZJJbf
出先なのでIDが違うと思いますが
>>267 です。
>>268 レスありがとうございます。
Smartyはどういうものかよく知りません。
テンプレートエンジン自体どういうものかよくわからなくて・・・
ただMovableTypeを数年前に使っていて、
そこではテンプレート用のMT専用タグみたいなのが使えたので、
>>267 のような仕組みになってるのかな?と思い実装しました。
そういう実装もありとのことなので少し安心しました。
テンプレートエンジンについても後ほど調べてみたいと思います。
271 :
nobodyさん :2010/06/07(月) 14:06:21 ID:hz9Zbx6T
PHPってLinuxに入れる時ってめんどくさいんだね ./configureの度にgccがないとか、libxml2がないとか、libpngがないとか、とにかくエラーばっか 自分centOS5.4使ってるんだけど、皆さんやっぱこういう風に色々とインストールしてPHP環境(ApacheとかMySQLとか)作ってるんですか? 以前yumで全部インストールしたんだけど、あまりにバージョンが全部古いんで今回最新版を全部入れようと思ったら予想外に時間と手間がかかって それとも何か自分のやり方が間違ってるんですかね?
272 :
nobodyさん :2010/06/07(月) 14:22:18 ID:MuZbivCs
>>271 あと
> 以前yumで全部インストールしたんだけど、あまりにバージョンが全部古いんで今回最新版を全部入れようと思ったら
yum update
275 :
nobodyさん :2010/06/07(月) 14:50:49 ID:hz9Zbx6T
>>272 それはやっぱりyumでって事なんでしょうか?
自分は以前yumで全部入れたんですが、バージョンが古くて
PHPなんかも名前空間使いたかったので5.3が必要で
それともyum以外で何かインストールするパッケージがあるのでしょうか?
centOSは他のディストリビューションよりもサーバ型だと思うんですが
>>273 あぁ、やっぱyumで入れてるんですか?
確かcentOS5.4のPHPは確か5.1か何かで古くて自分でWindowsで作ったソースがエラーが出たりして最新版を入れようと奮起していまして
いやぁ、ほんと次から次に./configureでエラーが出まくってくれて、その度にダウンロード→./configure→make→make installの繰り返して・・・
相当萎えていました
こんなんじゃ企業で使うとき、クリーンインストールや新規PC等の度に1台につき設定が物凄い無駄な時間かかるなぁ、と思いまして
Windowsだとすぐだけど
276 :
nobodyさん :2010/06/07(月) 15:15:25 ID:hz9Zbx6T
>>274 あれ?
yum updateでPHPのバージョンとかも5.2とかにアップデートされるのでしょうか?
自分はyumでPHP環境を作る前に2度ほどyum updateをしたのですが、5.1.16とかの古いバージョンのままでした
php infoでも確認したつもりだったのですが
それかcentOSはそうなのでしょうか・・・
自分が勘違いしてたか、何かおかしな事をしたのかもしれませんね
>>276 yumで最新版を入れたいなら、リポジトリを変える
あとLinux板のくだ質と微妙なマルチやめてくれ
なんだこの展開。
最新版が使いたいならCentOSやめろ。そんなことのためのディストリじゃない。
>>275 突っ込みどころは腐るほどあるけど、どうしてもそのディストリで自前ビルドしたものを使いたい、かつ、
ほかにも使いまわしたいのならRPM作って署名してローカルリポジトリを使うようにする。
>>276 全部yumでインストールしたなら全部yumでアップデートすればいい。
なぜ最新版がリポジトリにないのかについては、それがCentOSだからという答えになる。
RHELのクローンということを認識してるか?
なんでサーバー用のOS使ってるのに最新版にこだわるんだろうね
別にいいんじゃねーの?
282 :
nobodyさん :2010/06/07(月) 21:36:24 ID:goYJN4/h
【OS名】WindowsXP 【PHPのバージョン】5.3 【連携ソフトウェア】いまのところなし 【質問内容】 すみません。質問させてください。 「10日でおぼえるPHP入門教室(第2版)」という本で勉強中のものです。 5日目の2限目のゲストブック閲覧のところで、つまってしまいました。 うまく動いてはいるのですが、名前かメッセージのところの1文字目が全角英数字だと、 (2文字目以降だと正常に表示されます) guest.datには書かれるのに、閲覧ページのguest_read.phpには何も入っていなく空欄なのです。 ぐーぐる先生に聞いても半角⇔全角変換のことばかり出てきてうまく答えがみつかりませんでした。 全角英数字のまま出力はできないのでしょうか? 文字コードは本のとおりUTF-8(BOM無し)です。 よろしくお願いします。
現在エスパーは席を外しているようです
284 :
nobodyさん :2010/06/08(火) 01:43:03 ID:X6L4SMDo
>>282 ソースを出せよ。
それじゃわからんないでしょうが。
そんなタイトルからだめそうな本持ってるやつおらんで
286 :
nobodyさん :2010/06/08(火) 01:59:43 ID:X6L4SMDo
>>282 もっとちゃんとした本買ったほうがいいぞ。
本の名前書くと著者乙とか書かれてしまうから
かかねーけど
オライリーやマンモス本ならさすがに著者乙とは言われんだろ?
お前ら本なんて買ってるの? Webからの情報のみで勉強してるのは俺ぐらいなのか?
知りたいことはwebで知れるんだけど 手っ取り早く1-10を見れるのは本かな 来週から突然pythonやってね。って言われたら 経費で本買って読む。みたいな
>>289 PHP自体は違ったけど、PEAR、ZFなんかはマニュアル全ページ読んだ
>>282 fgetcsvの文字化けと予想。 fgetcsv 文字化けで検索するといろいろあるよ。
ウイルス対策はwindowsを避けろっていう程度の話か。
295 :
nobodyさん :2010/06/08(火) 11:03:23 ID:O0+3kZk7
LinuxにEclipse PDTを導入しようと思ってインストールしたのですが、 PHP実行可能ファイルの設定の所で実行ファイルパスにphp.exeを指定する所があるのですがここが分かりません 検索しても出てきませんでした 後、/usr/local/lib/phpの中にphpが展開されていると思うのですが、いくら探しても出てきませんでした linux(FedoraやcentOS)ではどこにphp.exeがあるのでしょうか? linuxにそもそもphp.exeというものはあるのでしょうか? もし無いとすれば、この実行可能ファイルパスの所には一体何を指定すればいいのでしょうか?
>>295 そりゃあ、Linuxにphp.exeは無いでしょうね。
単に「php」。
ちゃんとphpがインストールされてるなら、"whiich php"で、どこにあるやつが遣われるか判るよ。
298 :
295 :2010/06/08(火) 11:26:48 ID:???
あれ、そうなるとEclipseの実行ファイル・パスにはいったい何を指定すればいいのでしょうか? which phpで検索した/usr/local/lib/php というディレクトリ(?)では先に進めないのですが system.phpとかを指定するのでしょうか?
>>298 phpはどうやってインストールした?
単にCLI版が入ってないだけだと思うが。
300 :
295 :2010/06/08(火) 11:33:04 ID:???
↑ which phpで検索した/usr/bin/php の間違いでした
301 :
295 :2010/06/08(火) 11:34:23 ID:???
何度も連投すみません /usr/local/bin/phpで解決しました 解決したことを書き込む前にアップしてしまいました
ちゃんと通じていたことを見ておくべきでした
304 :
nobodyさん :2010/06/08(火) 12:52:25 ID:lvF7sIjD
PHPで1円の誤差も許さない金額計算などを行うときには どのような点に気をつければよいでしょうか。 JavaでいうところのBigDecimalを使うとか、 特定のクラスを使用する必要がありますか?
小数を使わない。誤差が出ない計算を考える。他の言語でもそうじゃないの?
306 :
nobodyさん :2010/06/08(火) 13:10:50 ID:o6m5GUPU BE:1452744386-2BP(2)
308 :
nobodyさん :2010/06/08(火) 14:06:45 ID:YOnOVKl0
PHP:5.1.6 OS:Centos utf-8でmail関数を使ってメールを送るクラスをつくっています phpスクリプトから送信をしてOutlookで受信した際に本文が正しく表示されません 通常であれば表示されてはいけない This is a MIME encoded message から全て表示されてしまいます 正しくメッセージを表示するようにするにはどうしたらいいでしょうか? メッセージ部分を生成関数 private function MakeBody() { if(count($this->APPENDFILE) > 0) { $FILEDATA = ''; foreach($this->APPENDFILE as $RECORD) { $FILE = chunk_split(base64_encode($RECORD['DATA'])); $FILEDATA .= "--{$this->BOUNDARY}\n\n" . "Content-Type: text/plain; name=\"{$RECORD['NAME']}\"\n" . "Content-Transfer-Encoding: base64\n" . "{$FILE}\n"; }; }; $RESULT = mb_convert_encoding("This is a MIME encoded message.\n\n",'iso-2022-jp','utf-8'); $RESULT .= mb_convert_encoding("--{$this->BOUNDARY}\n\n",'iso-2022-jp','utf-8'); $RESULT .= mb_convert_encoding("Content-Type: text/plain; charset=\"iso-2022-jp\"\n",'iso-2022-jp','utf-8'); $RESULT .= mb_convert_encoding("Content-Transfer-Encoding: base64\n",'iso-2022-jp','utf-8'); $RESULT .= mb_convert_encoding("{$this->MESSAGE}\n\n",'iso-2022-jp','utf-8'); $RESULT .= $FILEDATA; $RESULT .= mb_convert_encoding("--{$this->BOUNDARY}--\n",'iso-2022-jp','utf-8'); return $RESULT; }
//メール送信関数 function Send($MODE = true) { $SUBJECT = mb_encode_mimeheader($this->SUBJECT,'iso-2022-jp','utf-8'); $HEADER = $this->MakeHeader(); $BODY = $this->MakeBody(); $FROM = "-f{$this->FROM['NAME']} <{$this->FROM['ADDRESS']}>"; foreach($this->TO as $RECORD) { $TO = mb_encode_mimeheader("{$RECORD['NAME']} ",'iso-2022-jp','utf-8')."<{$RECORD['ADDRESS']}>"; if($MODE === true) { mail($TO,$SUBJECT,$BODY,$HEADER,$FROM); } else { echo "--HEADER--\n{$HEADER}\n--TO--\n{$TO}\n--SUBJECT--\n{$SUBJECT}\n--BODY--\n{$BODY}\n"; }; }; }
送信テスト用スクリプト
$MAIL = new SENDMAIL();
if($MAIL->SetFROM('送信テスト元','
[email protected] ') === true)
{
if($MAIL->AddTO('送信テスト先','
[email protected] ') !== false)
{
$TIME = 'TEST'.strftime('%Y-%m-%d %H:%M:%S',time());
$MAIL->SetMessage("てすとにゃーん {$TIME} ");
$MAIL->SetSubject("サブジェクトテスト");
$MAIL->SEND(true);
}
else
{
echo 'error TO';
};
}
else
{
echo 'error FROM';
};
311 :
308 :2010/06/08(火) 14:17:04 ID:YOnOVKl0
色々設定を変えてテストしていたのですが修正漏れがありました
>>308 違:$RESULT .= mb_convert_encoding("Content-Transfer-Encoding: base64\n",'iso-2022-jp','utf-8');
正:$RESULT .= mb_convert_encoding("Content-Transfer-Encoding: 7bit\n",'iso-2022-jp','utf-8');
312 :
200 :2010/06/08(火) 14:23:33 ID:KP/ycwH2
>>210 Error: invalid method
そのままではこれがでます。なので、
//エラーチェック
//リクエストメソッドチェック
if($REQUEST_METHOD != "POST") {
print "Error: invalid method";
exit();
}
を削除しました。
するとやはりDBの中身すべてが出てしまいます。
313 :
282 :2010/06/08(火) 14:41:31 ID:IOcc/liv
314 :
282 :2010/06/08(火) 14:57:42 ID:???
guest_red.phpの13行目の while ($row = fgetcsv($file, 1024, "\t")){ を while ($date = fgets($file, 1024)){ $row = explode("\t", $date); としたら解決しました。 すみませんでした。
下のような検索フォームを作りたいです。
phpとセレクトフォームによって呼び出すcgiを選択させるphpを教えてください。
呼び出すcgiについては完成しています。
<form method="post" action="
http://aaa.php ">
<input type="text" name="keyword" size="20" value="定着率" />
<br />
<select name="search">
<option value="bookmark">あああ</option>
<option value="mobile">いいい</option>
<option value="pc">えええ</option>
</select>
<input type="submit" value="検索" />
</form>
呼び出すCGIを選択するのではなくて searchの値によってaaa.phpの中で場合分けして処理するのがセオリーだろうね。 どうしてもってんなら、Javascriptでselectが変更されたら、formのactionを書き換えるか。 でも、このやり方じゃ、アクセシビリティー的にアウトだろう。
317 :
nobodyさん :2010/06/08(火) 17:38:05 ID:hMNg2N9l
最近って文字コードどうしてますか? もうUTF−8に統一されました? まだEUCだよとかSJISで頑張ってるとか教えて下さい。
>>316 レスありがとうございます。
すでに検索用のインデックスは作成してしまったので、
それに対応するcgiを選択すればいいだけだったのですが難しそうですね。
対応するcgiに302でいいんじゃないの? てか、cgiとphpという言葉の使い分けはなんだろ。perl-cgiとか使ってんのかな。なんでもいいんだけどさ。
>>169 でファイルロックに関して質問した者です。
>>179 のやり方を試して数日様子を見たところ、どうやら問題が解消されたようです。
とても困っていたので助かりました。
ありがとうございました。
appleのhtml5デモサイトでphpが使われてた件
そんなアップル
323 :
nobodyさん :2010/06/09(水) 03:00:39 ID:BsRvxOVf
初歩的で申し訳ありません。 PHPでローカル鯖から送信すると問題なく送れますが 鯖にUPして送ると表示される文字が全部???になってしまいます。 文字コードをいろいろ弄ってみたのですが、全部???で文字化けの変化もしません。 お知恵を貸してください。宜しくお願いします。
それだけじゃ何とも言えないかな。 文字コードは何なのかとか、表示される文字ってHTMLの文字?
これは難しい。 2行目を読んだ時点ではメール送信かと思ったが、3行目でどん詰まりだ。
教えてください!!! 何が分からないのか分かりません!!!(><)
ああわかった。 鯖とローカルのphp.iniを見比べてみてくれ。 encodで検索した内容を主に見てくれ。encodeではない、encodで、だ。 それから、ローカルはIISで鯖はapacheじゃないか?
じゃないな、phpinfoの結果を見比べてくれ。 あと、薄い可能性として、鯖にUPするときに改行コードがおかしくなってないかも疑ってみてくれ。
329 :
nobodyさん :2010/06/09(水) 05:00:03 ID:BsRvxOVf
回答ありがとうございます。
>>324 POST送信でしょうか・・・
pearでインストールしたPHPを使っているので、
どう送ってるのかわかりません。すいません。
>>327 ローカル鯖はapacheです。UPした鯖は、仕様がわかりませんがPHPは
safe_modeで動いているようです。
phpinfoはエラーを吐いてしまいました。
Warning: phpinfo() has been disabled for security reasons in
文字が?になっちまうのは、文字コード変換処理で*失敗*してる。 mbstring.encoding_translation が onか、自前の処理が入ってるか分からんけど。 htaccess使えればoffにする。 使えないようなサーバーなら、 文字化けしないエンコードにページのエンコードを変えるしかない・・・
331 :
nobodyさん :2010/06/09(水) 11:14:04 ID:W1sVZbXG
から。がチョットいまいちだけど分からんほどではないかと。 英語のページ見ればよろし。 5からは INI_ALL
333 :
nobodyさん :2010/06/09(水) 11:38:27 ID:BsRvxOVf
>>330 ありがとうございます。ローカル、UP先ともに
;mbstring.encoding_translation = Off
という状態です。
>>327 encodというところはなく、encodingの文字が入るところは
先頭に全て;がついていました。
334 :
nobodyさん :2010/06/09(水) 11:42:59 ID:W1sVZbXG
ありがとう いまいちわかってないけどw 4.0.3 〜 PHP_INI_SYSTEM 4.2.3〜 PHP_INI_PERDIR 5〜 PHP_INI_ALL が正解かな?? 「PHP <= 4.2.3」て書かれると 4.3.2以下のバージョンと読んじゃうね
いや、なんか変だな。ちょっと調べる。
336 :
nobodyさん :2010/06/09(水) 12:47:11 ID:W1sVZbXG
>>323 phpinfo(); のmb_string の項目をローカルと鯖両方さらすがよろし
PHP <= 4.2.3って書いて 4.2.3から (ALL) PHP < 5 って書いて 5から (PERDIR) なのかねぇ。
338 :
nobodyさん :2010/06/09(水) 13:05:54 ID:W1sVZbXG
5.1.6 でプログラム中の ini_set('session.use_trans_sid', '1'); 効いたんだべ
339 :
nobodyさん :2010/06/09(水) 13:45:29 ID:BsRvxOVf
>>336 ありがとうございます。
phpinfoを実行するとエラーがでてしまいます。
Warning: phpinfo() has been disabled for security reasons in
340 :
nobodyさん :2010/06/09(水) 14:07:58 ID:W1sVZbXG
なる 今まさにワシもそのタイプのものと格闘中w mbstring.detect_order → print mb_detect_order(); mbstring.internal_encoding → print mb_internal_encoding(); mbstring.internal_encoding → print mb_internal_encoding(); 手な感じで1個1個調べるしか無いっぽいですね mbstring.encoding_translation はどうやって調べればよかたかな? 情報少ないのであてずぽですが、 internal_encoding = EUC mbstring.encoding_translation = on になってんじゃないかなー 笑顔鯖 ならw
341 :
nobodyさん :2010/06/09(水) 17:03:38 ID:wh/h1AEj
342 :
nobodyさん :2010/06/09(水) 18:51:55 ID:BsRvxOVf
>>340 ありがとうございます
mb_internal_encodingを設定しない場合、
echo mb_internal_encoding();は
ISO-8859-1 でした。
343 :
nobodyさん :2010/06/09(水) 23:02:26 ID:kxHltjxi
大抵の通販サイトなどで使用される、画像を表示する処理を作っているのですが 商品がたくさんある場合、「次へ」などのリンクをクリックすると 次の画像群が表示される……という処理を作ろうとしています。 PHP+SQLで画像のパスを保存しておいて、PHPファイル内でHTMLを記述し描画を行う処理はできたのですが 次の画像群を表示するというメッセージはどのようにすればPHPに送ることができるのでしょうか。 すごく初歩的な質問ですがよろしくお願いします。
344 :
nobodyさん :2010/06/09(水) 23:06:28 ID:kxHltjxi
曖昧な質問の仕方でした。 知りたいことは、一般的な通販サイトではどのような処理になっているのかということと 前述した、「次へ」というリンクをクリックすることで、 動的にページを更新し、次の画像群を表示するためのメッセージを送る方法についてです。 よろしくお願いします。
ページング処理のことかな?
getでページnoを指定する index.php?page=1みたいに PHPでpage=1のパラメータを受け取った後 画像の表示件数を1ページに50とした場合 50*page-1から50*pageまでをLIMITで指定したものをSQLから取り出すとか 取り方なんかはDBの構造にもよってもっと効率のいい指定方法ができるけど まぁこんな感じ
347 :
nobodyさん :2010/06/09(水) 23:11:58 ID:kxHltjxi
OKWaveで同様の質問を見つけることが出来ました。 ありがとうございます! まずそこを見て実装してみます。
348 :
nobodyさん :2010/06/09(水) 23:23:43 ID:kxHltjxi
>>346 ありがとうございます!
ページング処理(今知りました)はget送信で送るみたいですね。
概要はわかりましたが、index.php?page=1が解読できないので調べている最中です。
タッチの差だったな
350 :
nobodyさん :2010/06/09(水) 23:45:16 ID:YOGuQm0P
>>342 ということはその値を設定してるのかな??
もちーっと詳しく書かないと
エスパーにしか答えがわからんっぽい
mb関係の実際のPHP動作時の設定
何が文字化けしているのか(POST GETで渡された文字列のみ 全体 etc)
などなど
351 :
nobodyさん :2010/06/10(木) 00:35:45 ID:/fuvg3FQ
phpでのページング処理は、再帰構造でカレントページのIDをどんどん受け渡す感じなんですね。
肝心のHTMLの記述方法が分からなくてどうすればいいのか探してたら
>>346 さんのindex.php?page=1で直接GET送信するってことか。
やっと作れます。
ありがとうございました。
多分再帰という用語の使い方を間違えてるだけだろうからそのままがんばってください
353 :
nobodyさん :2010/06/10(木) 14:31:48 ID:PM/fSWQl
354 :
nobodyさん :2010/06/10(木) 16:08:19 ID:I9t81ujy
スマナイ ニホンゴで頼む
XMLの話か?URLの話か? 長いから整列ってのも意味分かんないし、 突然でてきた要素ってものの指すものもわからんし、 配列、ループでうまく出来ないって、なにがさ。
プログラムへたなやつって日本語も苦手なやつ多いよな。
言っちゃあ要件定義も設計書もコーディングも翻訳作業だもんな
358 :
nobodyさん :2010/06/10(木) 23:37:48 ID:/fuvg3FQ
また質問させて頂きます。 PHP 5.3.1 Eclipse php galileo SR2 win32 (PDT) XDebug 2.1.0 rc1 を使用し、ブレークポイントで処理がとまるようにデバッガの設定を行っていますが出来ませんでした。 デバッガを利用してる方で、安定して動くバージョンを教えてください。 よろしくお願いします。
xdebug.dll は ts/nts vc6/9 などは合わせてあるか php.ini での設定内容を晒す
360 :
nobodyさん :2010/06/11(金) 01:53:05 ID:8X4/rYMm
dllは、non-thread-safeでない方です。
phpInfoで確認したところ、
Compiler MSVC6 (Visual C++ 6.0)となっていますので、
使用しているdllは、php_xdebug-2.1.0RC1-5.3-vc6.dllです。
iniファイルの設定内容は、ファイルの最後に
zend_extension_ts = "C:\xampp\php\ext\php_xdebug-2.1.0RC1-5.3-vc6.dll"
xdebug.remote_enable=1
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_log="C:\xampp\apache\logs\xdebug.log"
xdebug.manual_url =
http://jp2.php.net xdebug.collect_params = On
xdebug.dump.GET = *
xdebug.dump.POST = *
を追加しました。
見た感じ問題なさそうだなぁ なんとなくeclipse側の気がする ポート9000 で通信してるかとか確認してみるのがいいかも 可能ならphp/xdebug vc9ビルドを試してみるとか xdebug は結構不安定だったりするからver変えてみるのもいいかも
362 :
nobodyさん :2010/06/11(金) 03:23:14 ID:8X4/rYMm
>>361 ほとんどのバージョンを試してみましたがダメのようです。
ありがとうございました。
もし正常にデバッグできている方がおられたら、PHPやEclipseのバージョンを教えてください。
363 :
nobodyさん :2010/06/11(金) 03:26:13 ID:/BtEfgaD
XAMPPは標準装備 追加いらず php.ini書き換えだけ
xdebug.idekey はどうなってる? eclipse と php.ini 両方で合わせる必要があったはず
ふと自分の php.ini 見て思った。 zend_extension_ts の ts が要らんかも zend_extension="/path/to/xdebug.dll" にしてみて
366 :
nobodyさん :2010/06/11(金) 03:36:51 ID:8X4/rYMm
>>365 tsが無いと、終了せずにどこかでループを起こしてるみたいです。
進捗が途中で動かなくなります。
xdebug.idekey について今調べているところです。
367 :
nobodyさん :2010/06/11(金) 04:52:38 ID:8X4/rYMm
368 :
nobodyさん :2010/06/11(金) 09:43:31 ID:S65wpJHf
皆さんの会社はLinuxを使っていると思いますが、どのディストリビューションを使っていますか? またサーバ機とAMP開発用ではOSを使い分けてたりしますか?
369 :
nobodyさん :2010/06/11(金) 12:24:55 ID:E6U8qQpk
AND(絞り込み)検索を簡単にする方法、あるいは関数などないでしょうか?
http://q.hatena.ne.jp/1160731894 ここを読んだ限り、"いちご AND バナナ" などのキーワードに整形すると
AND検索をしてくれる関数があるように思えるのですが。。
それとも、Keywordをスペースで分割して、一つ一つif文でつなげて
mb_strposしていくしかないのでしょうか?
まあ、SQLのことですね。 データベースでないなら、ちまちまやるしかないです。 #LINQ PHPなんてものもあるんだな。
371 :
nobodyさん :2010/06/11(金) 12:32:55 ID:/BtEfgaD
データベース
372 :
nobodyさん :2010/06/11(金) 12:34:59 ID:E6U8qQpk
>>370 レスありがとうございます。
やはりSQL限定ということですね。
自分の用途としては、
HP上にある文字列をscrapで取り出して、 保存していたキーワードを使って検索というものです。
例えば、 "りんご バナナ" というキーワードをデーターベースに登録。
HP上で ”りんご ぶどう バナナ” などのように絞り込み検索に適合するものがアップされたらマッチするといったものです。
373 :
nobodyさん :2010/06/11(金) 14:39:35 ID:1mHG41R+
ファイルの読み込み速度のことで困っています。 現在、外部サーバにあるファイルを取得したいと考えているのですが、 どうも取得に5秒近くかかってしまいます。 また、ローカルのファイルであれば100ms程度で取得が完了します。 この開きをなるべく縮めたいのですが、何か解決策はありますでしょうか? アドバイスよろしくお願いします。 環境:Win7/Apache2/PHP5
>>373 PHPでどうこうなる問題じゃない
レスポンスの速い外部サーバにかえてください
375 :
373 :2010/06/11(金) 14:48:12 ID:1mHG41R+
>>374 ありがとうございます。
説明不足でしたが、いかなる外部サーバであっても結果は同じなんです。
違いはローカルかそうでないかという点のみです。
ブラウザのように高速にファイルを取得することはできないのでしょうか?
ファイルを取得してる部分のソースは?
377 :
373 :2010/06/11(金) 14:56:15 ID:1mHG41R+
外部サーバから外部サーバのファイル取得ではなく、 ローカルから外部サーバのファイル取得? そのスクリプト自体はサーバのレスポンス次第ですぐ返ってくる www.google.comだと一瞬 ファイアーウォールとかが邪魔してるんだろうか
379 :
373 :2010/06/11(金) 15:10:07 ID:1mHG41R+
>>378 今はローカルサーバから外部サーバへの接続という形ですが、
将来的には外部サーへ移行させる予定です。(完成次第)
先ほどファイアーウォールをすべて無効にした上でテストしてみましたが、
結果に変わりはありませんでした;
サーバーで wgetってやっても遅いんじゃない?サーバーの設定の問題かも。
382 :
373 :2010/06/11(金) 15:32:53 ID:1mHG41R+
>>380 サーバ機にインストールされているブラウザでは通常のスピードで
ページの読み込みができました。
>>381 どうやらこちらが怪しいみたいなので、もう少し時間を置いて設定を
見直してみたいと思います。
下らない質問にお付き合い頂きありがとうございました。
383 :
nobodyさん :2010/06/11(金) 16:53:35 ID:bRlHND6j
質問です。 Cache_Liteを使ってキャッシュを保存しているんですが 新着があった場合(キャッシュがない場合)に、 キャッシュとの差分のみ(新着部分のみ)を取得することってできませんか?
386 :
nobodyさん :2010/06/11(金) 20:44:11 ID:/BtEfgaD
1.htmlと2.htmlの差分抽出を求めることでキャッシュは必然ではない。
>368 開発環境はWindows or Macだが、動作させる開発サーバーはLinux(仮想マシン)で、本番環境と同じもの。 ディストリは某日本語サポートのあるものを使っている。
>>382 自分の環境でもfile_get_contentsはすっごい遅かった、cURLの1、5倍ぐらい遅い
<?php
function curl_get($url) {
$ch = curl_init();
$option = array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true, //結果を出力させない
CURLOPT_BINARYTRANSFER => true, //結果を加工しない
CURLOPT_FORBID_REUSE => true, //処理が終了した際に接続を切断
);
curl_setopt_array($ch,$option);
return curl_exec($ch);
}
echo "file_get_contents<br />";
for($i = 1 ; $i <= 10 ; $i++) {
$time_begin = microtime(true);
file_get_contents("
http://www.google.com/ ");
echo $i." : ".(microtime(true)-$time_begin)."s<br />";
}
echo "curl<br />";
for($i = 1 ; $i <= 10 ; $i++) {
$time_begin = microtime(true);
curl_get("
http://www.google.com/ ");
echo $i." : ".(microtime(true)-$time_begin)."s<br />";
}
1.5倍なら大したことないじゃん
1.5倍どころじゃないわ、3-4倍ぐらい違う file_get_contents 1 : 0.282200098038s 2 : 0.286005020142s 3 : 0.289804935455s 4 : 0.285599946976s 5 : 0.285084962845s curl 1 : 0.110718011856s 2 : 0.0746190547943s 3 : 0.0745959281921s 4 : 0.0765240192413s 5 : 0.0723419189453s
1/10秒でそこまでするのもな・・・ 5秒ってのが明らかに異常なわけで
392 :
nobodyさん :2010/06/12(土) 14:05:51 ID:CAUo94F7
最近PHPを始めたものです。とても初歩的な事を聞くようで申し訳ないのですが… PHPを書いたファイルをWEBサーバで開いたところ何も表示されず、真っ白いままです。 おそらく、コーディングに誤りがあるのだと思うのですが、式が膨大な量なためどこにミスがあるのか見つけるのが大変です>< エラーメッセージを出して誤りのヒントを探りたいのですがどうやったらいいのでしょうか? できれば、何行目にミスがあると指定してくれるものがあれば最高です。。ご教授くださいませ…
デバッガ使う
>>392 とりあえず、Webサーバの方のエラーログを覗いてみたら何か出てるかもよ。
>>392 ローカルでエラー表示するような実行環境作るといいよ
397 :
396 :2010/06/12(土) 21:19:17 ID:7hIU3RqJ
すいません、ID出すのを忘れていました
えっ・・・?
リファラを設定するのは誰だろうね
宣伝乙 こんなのこのスレにいるやつなら誰でも作れますから
>>402 正規表現と、多少の知識あればいけるなって事で同意w
てか、金取ってねぇサイトで宣伝乙もさもしいなw
正規表現必要か・・・?
でっcSVにしてどうすんの?
>>405 Microsoft Moneyにインポートする
407 :
nobodyさん :2010/06/13(日) 18:57:45 ID:0BtVGJ62
Fatal error: [] operator not supported for strings の対処方法でお助けくだされ。 $array = array("33","55"); foreach ( $array as $array ) { //全角数字を半角に $array = mb_convert_kana($array , "n"); $test = array(); $test[] = $array; } 上記のようにしてもエラーが消えず、配列に格納できないのです。
> foreach ( $array as $array ) {
409 :
nobodyさん :2010/06/13(日) 19:06:57 ID:0BtVGJ62
>>408 おおーーーーー!!!
上手くいきました!!
ありがとうございます!!!
これでめちゃくちゃはまってたんです。
Thank you!!!!
410 :
nobodyさん :2010/06/13(日) 19:07:09 ID:ebiz4dpp
$array = array("33","55"); foreach ( $array as $array ) {
411 :
nobodyさん :2010/06/13(日) 19:07:36 ID:0BtVGJ62
foreach使う時は 同じ名前の変数を使ってはいけないのですね。。 これからは気をつけたいと思います。
412 :
nobodyさん :2010/06/13(日) 19:34:32 ID:0BtVGJ62
"06/12 タイトル 花見" 半角スペースで区切られた文字列があります。 この最初のスペースが出現するまでの "06/12" の最初の文字列のみを削除して、 "タイトル 花見" という文字列を作るにはどうすればよいでしょうか? 逆引きレシピを参考にそれらしい関数を探しているのですが、 どうにも見つからず。。
414 :
nobodyさん :2010/06/13(日) 20:14:37 ID:0BtVGJ62
>>413 ありがとうございます!!
これでなんとか出来そうです!
415 :
nobodyさん :2010/06/13(日) 21:11:04 ID:gv6bC0io
janeのNGFiles.txtに書かれているようなハッシュ値にMD5を変換したいと思います。
http://ideone.com/bNeGf を移植して実現しようと思っているのですが、どうにもうまくいきません。
どなたかMD5→NGFiles.txtのハッシュ値変換のサンプルをください。
そしてカンマいなくなった・・
DATファイルに<BR>とか入ってるのね
Excelのインポート時に区切り文字を<>にすればよい。
お前ら突っ込みが容赦ないな
>>401 はがんばって作ったんだよ
ほめてやれよ
422 :
nobodyさん :2010/06/14(月) 12:30:36 ID:Ea+qDap6
【PHPのバージョン】5.3 if(!empty($var['a']) || !empty($var['b']) || !empty($var['c'])){ $varの配列のキーが可変の場合 上記のようにa,b,cとキーを指定しなくても どれかの値が入ってればtrueと判別出来る方法ありますか?
$b = false; foreach ($var as $a) { if (isset($a)) { $b = true; break; } }
424 :
nobodyさん :2010/06/14(月) 12:48:47 ID:Ea+qDap6
サンクス
issetと !empty動作違うので注意ね。 ""のときとか。
426 :
nobodyさん :2010/06/14(月) 14:32:12 ID:Pwcpy8Zl
良くある風俗の出勤管理のシステムを作ってるのですが、 【管理画面でやりたい事】 ・管理画面でアクセスした日から一週間分の出勤予定データを登録できる。 【表示ページ】 ・日付ごとに出勤予定の女の子の写真と名前表示 【現在の状況】 ・table「girlsprof」で女の子のID、名前、プロフを管理。 【質問】 出勤予定を管理できるよう、table「schedule」を作って管理しようと思ったのですが このtableにはどのようなカラムをもたせればよいですか? 例1:6/1 6/2 6/3 6/4と月日を全部カラムにしておき、管理画面ではプログラムでその日から一週間分を 取得し、それぞれの日付と一致するカラムを更新。ってやらないとだめなのか? 例2:1〜31までをカラムとする。しかしこれだと、30日に管理画面をひらいたときは本来なら30日〜翌月の5日までの 予定を登録できなきゃいけないのに、その月の日数(2月は28日までしかない)とかによっても、狂ってきてしまいます。 これはどうやれば解決できますでしょうか?
プログラマを雇う
そういうのだったら普通は、日付と女の子IDと出勤予定ありなしの3カラムじゃねーの?
ISO 8601のYYYY-DDD形式で入力してもらう
430 :
nobodyさん :2010/06/14(月) 15:02:29 ID:Pwcpy8Zl
>>出勤予定有り無しは確かに必要ですね!ありがとうございます。 3カラムだけって事は日付の部分はどう管理するんですか? 日付にも、 何月かの情報を含めて365カラム(うるう年も考えて366カラム)か 1〜31日までの31カラムかとかいろいろあると思うのですが、 3カラムだけで管理するとなると、どうやるのでしょうか? 日付のカラムに出勤予定日を追記していく感じでしょうか? それだと、過ぎた過去の日にちも残ってしまうということでしょうか?
>>430 PHPがどうのこうの以前の話
データベース板へどうぞ
>>430 一週間分なので、"何日から"かと7日分の出勤予定。 表示側なり管理画面では
今日から一週間分の予定をそこから出す。範囲外だったら予定なし。 未定と休み分けるんなら別カラムか
分かるような値にしとく。
3カラムってのは、出勤用に別テーブルで ID、日付、出勤データ つくる形かと。 どっちも一長一短あるので好きな方で。
>>430 普通は横に持たず、縦に持つ。
表示する時にそれを加工する。
過去のデータがどうしても要らないなら毎日、もしくは毎週削除する処理をつくるが、
あったら困るものでもないと思う。
こんなに釣り師にやさしいスレは初めて拝見したんだぜ まぁ、こんなでいいんじゃないの? girlsprof: | ID | 名前 | プロフ | schedule: | ID(girlsprofのIDと一致) | 出勤日 | 例) girlsprof: | 0001 | ブス子 | ア○ルもおkです | | 0002 | デブ美 | デブでよければ | schedule: | 0001 | 2010-06-25 | | 0001 | 2010-06-26 | | 0002 | 2010-06-25 | 女の子のIDで検索すればその子の出勤日が取得できるし、日付で 検索すればその日に出勤する女の子が取得できるから充分でしょ。
>>433 わざわざOKWaveに登録してマルチを装うなんてお前も暇だなw
>>433 マルチに見せかけとか正直ひくわ・・・
お前が日本人ではないことを祈るよ
438 :
nobodyさん :2010/06/14(月) 16:32:32 ID:hKCZ/dhE
質問がそのままコピペでワロタ
>>436-437 お前らよくマルチに見せかけとかわかるな
俺にはお前らのレスが「マルチに見せかけという事にしたい」と見えてしまうよ
邪推かな?
>>437 祈られてもオレは日本人w 日本人は善人ていう思い込みは一体どこから?w
>>439 ヒント:登録日
>>440 日本人が優れた人種とは一言も言っていない
要するにこんなくだらんことを思いつくようなやつはチョン以外ありえないって言いたかったんだよ
分かりにくくて悪かったな
一つ間違いないのはマルチするやつも、見せかけるやつもクズだってことだ。
もう一つ間違いないのは
>>426 が最もクズだってことだ。
444 :
nobodyさん :2010/06/14(月) 18:18:39 ID:154tZPz8
今までXHTMLで作っていたものをhtml5で作ってみようといじっていたのですが、
下のようにドキュメント宣言を変えただけなのですが、何故かPHPの部分が出力されなくなりました。
なんででしょうか?? apacheの設定が別途必要なのでしょうか??
index.htm
------------------------------
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
<html xmlns="
http://www.w3.org/1999/xhtml ">
<head>
…
</head>
<body>
<?php include_once($_SERVER['DOCUMENT_ROOT'] . '/aaa.php'); ?>
…
↓
<!DOCTYPE html>
<html lang=="ja">
<head>
<meta charset="utf-8" />
…
</head>
<body>
<?php include_once($_SERVER['DOCUMENT_ROOT'] . '/aaa.php'); ?>
…
ショートオープンタグをOFFにするとか 1行目 echoで出せば直るかも。
上のは間違い。
>>444 apacheの設定は必要ないだろうからそれだけじゃ分からないよ。
PHPの部分だけ表示されないとの事だけど、肝心のPHPの部分はどうなってるの?
includeしなきゃ表示される?
448 :
nobodyさん :2010/06/14(月) 20:24:19 ID:IP77a2fP
file_get_contentsでは失敗するとfalseが戻りますが404だったときに404を取得する方法はありますか?
449 :
nobodyさん :2010/06/14(月) 20:25:36 ID:154tZPz8
>>445 short_open_tagはoffになってました
>>447 XHTMLのものをそのまま使ってるだけなので
PHPのコード自体は問題ないはずです
試しに
<?php include_once($_SERVER['DOCUMENT_ROOT'] . '/aaa.php'); ?>
の部分を
<?php echo 'test php';?>
に変えてみたのですが、やはり表示されなかったです
>>448 file_get_contents 404 で検索。
451 :
nobodyさん :2010/06/14(月) 20:42:11 ID:qzix/x5L
"4時限 日本のメディアと文学 千田 洋幸 教育 " "4時限 日本のメディアと文学 千田 洋幸 教育" 上のように、半角スペースやタブなど様々な要素が混ざっている文字列を 下のように半角スペース区切りで整形したいです。 ■考えたコード //全角数字を半角に $keyword = mb_convert_kana($keyword, "n"); //全角スペースを半角に $keyword = mb_ereg_replace('[ ]{1,}', ' ', $keyword); $keyword = trim($keyword); 上記のようなコードでは上手くいかなかったのですが、 どうすれば綺麗に整形できるでしょうか?
$keyword = str_replace( array(" "," ","\t")," ",$keyword);
453 :
nobodyさん :2010/06/14(月) 21:17:59 ID:qzix/x5L
>>452 ありがとうございます!
試してみたのですが、
” 1時限 社会開発論 店田 廣文 人科”
このように2以上のスペースやタブの時に完全に半角スペースひとつになりませんでした。。
454 :
nobodyさん :2010/06/14(月) 21:20:36 ID:qzix/x5L
$words =" 4時限 日本のメディアと文学 千田 洋幸 教育 "; $words = trim($words); $words = preg_split("/[\s,]+/",$words); 正規表現で分割してみたのですが、全角スペースが分割されませんでした。 全角スペースも分割する方法はあるでしょうか? array 0 => string '4時限' (length=9) 1 => string '日本のメディアと文学' (length=30) 2 => string '千田 洋幸' (length=15) 3 => string '教育' (length=6) この ”千田 洋幸” も分割したいです。
>>454 正規表現に全角スペースを足せばいいじゃん
<form enctype="text/css" action="<?php echo $PHP_SELF; ?>" method="get" > <?php if(is_null($shu)){ 種類:<input type="text" name="shurui"> 付属品: <select name="huzoku"> <option value="abc">ABC</option> <option value="lmn">LMN</option> <option value="xyz">XYZ</option> </select><br> <input type="submit" value="送信"> } else{ $shu = $_GET['shurui']; $huz = $_GET['huzoku']; echo "Your choice is $shu with $huz"; } ?> </form> 見にくいコピペですいませんが、if文内のタグがすべてエラー対象になってしまいます。 何がいけないのかどなたかご教授のほどを…
文法くらいなんとかしろよ
これはひどい
SHIFT-JIS環境でPHPファイルを作ってしまい、 それをUTF-8にすると、コメントがすべて文字化けしてしまうのですが、 どうすれば日本語を文字化けせずにUTF-8に変更できるでしょうか? SHIFT-JISからUTF-8にすると文字コードの違いから 文字化けしちゃうのはわかりますが、対処策がわかりません
すみません、スレ違いでした
462 :
nobodyさん :2010/06/15(火) 14:25:48 ID:FYWiA/i5
>>455 ありがとうございます。上手く行きました!
463 :
nobodyさん :2010/06/15(火) 14:29:04 ID:FYWiA/i5
array 0 => string '' (length=0) 1 => string '' (length=0) 2 => string 'テスト' (length=9) 3 => string '12' (length=2) このような配列の時、配列の中身があるものだけ残すには どのようにすればよいのでしょうか? array 0 => string 'テスト' (length=9) 1 => string '12' (length=2) 最終的にこのように変換したいです。 マニュアルを調べたところ、array_spliceでやるのかなと思っているのですが、 やり方がなかなか分かりません。
ループさせるのが簡単でいいんじゃね
465 :
nobodyさん :2010/06/15(火) 14:51:30 ID:FYWiA/i5
>>464 できればもう少しヒントを! 使う関数名だけでもよいので!
つarray_filter ただし添え字は詰めてくれないのでarray_mergeあたりと併用
素直なものなら for ( $i = 0 ; $i < count($array) ; $i++) { if ( $array[$i] ==""){ array_splice( $array ,$i,1); $i--; } }
468 :
nobodyさん :2010/06/15(火) 15:15:54 ID:FYWiA/i5
$WK = array('','11','','','22','33','','44',''); echo "元の状態\n"; var_dump($WK); $WK2 = array(); foreach($WK as $WK1) { if((isset($WK1) === true) and (strlen($WK1) > 0)) { $WK2[] = $WK1; }; }; echo "\n結果\n"; var_dump($WK2);
$a = array_merge(array_filter($a, function($s){return strlen($s) > 0;}));
472 :
nobodyさん :2010/06/15(火) 15:27:54 ID:wrbhrBX4
>>463 $array = array('', '', 'テスト', '12');
var_dump(array_diff($array, array('')));
473 :
nobodyさん :2010/06/15(火) 17:38:39 ID:pnwlJPRh
会員サイトでユニークID何にするか迷ってるんだけど UNIXタイムスタンプってよくない?
別にそれでもいいけど、それなら連番でもよくね?
いやこう登録した時間も分かるし一石二鳥みたいな?
そして同じ時刻に2人登録して罠に...
同じ時刻に登録されるのが怖いならmicrotime()使えば? 1秒間に10万人が登録しても余裕(1マイクロ秒=100万分の1秒)
それでもやっぱり所詮は確率なのであった。ま、シングルコアなら 大丈夫な気がするけどw
DB使え。登録日もいれとけ。
会員ID&日時でいいじゃん。
まあ普通は登録日時は別にとっとくもんだ。
まあファイルロックでもして待たせればタイムスタンプでもいいわな
uniqidっていうユニークIDを生成する関数があるよ。
普通連番だろ それ以外にする理由がない
IDをユーザが決められるようにすればいいじゃん 登録時に既存のIDをチェックして、重複が発生しないようにする
まあ掲示板みたくIDを表示する必要があるならそれでいいが 最近はメールアドレスをID代わりにするのがトレンド
そして連番にして番号をずらせば他の人の情報が読めちゃう不思議仕様に
488 :
nobodyさん :2010/06/16(水) 01:41:37 ID:sfuhSdY7
メールアドレスをID代わりにするデメリットもあるよね。
>>488 それはPHPの話なのかな?
Webサーバ(lighttpd?)でアクセス制限したいように見えるけど…。
491 :
487 :2010/06/16(水) 01:56:07 ID:sfuhSdY7
質問的には正規表現ですね linux板で聞きます
環境Eclipse for PHP Developers(eclipse3.5.2)を使用しています。 デバッグにて引数を渡したいのですが、 メニュー > 実行 > デバッグの構成 > PHPスクリプト引数 に値を設定してもデバッグ時に$_GETの中に値が入ってくれません。 (具体的には、hoge.php?id=1 とし、$_GET['id']で1が取れる事を期待しているのですが・・・) 実行時に引数を渡してやるにはどうしたらよいのでしょうか。 よろしくお願いします。
493 :
nobodyさん :2010/06/16(水) 05:28:00 ID:MIQQfYzz
PHP+PDOで、検索結果の総レコード数を取得したいです。 SELECT * FROM tablename WHERE ( colum BETWEEN 10 AND 20 ) LIMIT 25; # 実際には320件ある rowCount()だと当然「25」となります。 総レコード数である「320」を取得する効率的な方法を教えてください。 現在は、以下のように2回クエリを発行して対処しています。 $stmt = $pdo->query( 'SELECT COUNT(*) FROM tablename WHERE ( colum BETWEEN 10 AND 20 );' ); list( $count ) = $stmt->fetch(); echo $count; $stmt = $pdo->prepare( 'SELECT * FROM tablename WHERE ( colum BETWEEN 10 AND 20 ) LIMIT 25;' ); $stmt->execute(); 他に定石的な方法はありますでしょうか?
2回投げるしかないと思うよ。
495 :
nobodyさん :2010/06/16(水) 07:55:42 ID:J3wcOhw/
【OS名】Windows Vista 【PHPのバージョン】PHP5.10.1 【連携ソフトウェア】MySQL ActionScript3.0 【質問内容】 プログラム初心者です。スレチだったら誘導して頂けると幸いです。 現在、FlashとDBを連携させるプログラムを作っているのですが、 その仲介としてPHPを利用しています。 echo文を使ってFlash側に変数の受け渡しをしようと思っているのですが PHP側で echo "key=".$key; とすると、Flash側に変数$keyを渡すことが出来ているのですが、 echo "key=".$key; echo "val=".$value; と記述すると、Flash側の変数keyに文字列として $keyval=$value; ※&変数には実際の値が入っています。 と表示されてしまいます。 どのような記述をすれば二つの変数をうまくFlash側に渡すことが出来るでしょうか? よろしくお願いします。
MX時代の知識だからバージョンによって違うかもしれないけど FlashとPHPでの値のやり取りは変数名=値&変数名=値… と&で連結する必要が あったんじゃなかったかな あと気をつけるのはphp側の文字エンコード
>>493 SELECTは一回で済むけど、結局内部的には二回じゃないのか? であり、
なおかつメモリ効率的には「俺って馬鹿げたことしてんなぁ」という方法
countする方をサブクエリにして、その結果を検索結果の方の一カラムに収める。
(検索結果行の全てに、同じ値(count結果)が収まってるカラムが付いちゃう)
MySQLだったら、SELECTは二回だけど二回目は実際の検索はしないから軽い(だろう)という方法有り(他は知らない)
SQL_CALC_FOUND_ROWS でぐぐってみてね。
後半のlimitって、count取ってからごにょごにょして作ったりしない?
countは全部数えるしかないし、limitつきのselectは適切なインデックスが あれば全部見なくても値を返せるから別の処理。2回やってもしょうがない と思う。まあインデックス使えなければ条件で全部ナメが2回走るかも だけど、それはむしろインデックス用意しろだな。countとlimitつきのselectを 分けたいぐらい要素数が多いのならその価値はあるだろう。
500 :
nobodyさん :2010/06/16(水) 13:56:16 ID:6gbQuGMY
http://www.plusmb.jp/2008/12/19/1775.html ここ等を参考に、swfmillで作成した携帯向けFlashを
header('Content-type: application/x-shockwave-flash');
echo $swfOutput;
のように返すと何故か
FireMobileSimulatorでは表示できるのに携帯では表示できない。
いったんfile_put_contentsでファイルに書き出し、そこにLocationヘッダで飛ばしてやると
携帯でも表示される。
ディスクI/Oを減らすためできればファイル吐かずに済ませたいんですが、
何かお知恵はありませんでしょうか。
>>500 2つの場合でヘッダに違いがないかよーく比べてみるとなにかわかるかも?
502 :
nobodyさん :2010/06/17(木) 04:56:28 ID:mKgRGi9a
PHPでブログ投稿したいのですがそのようなアプリありますか?
phpのセッションはどうやってクライアントを判別してるのでしょうか?
あクッキーみたいですね IPで判別してるのかと思ってました。 クッキーにランダムな文字列のセッションIDだけを入れて 後はサーバー側に保存と・・
505 :
495 :2010/06/17(木) 05:26:02 ID:sy18pq7k
>>496 お返事が遅くなって申し訳ありません。
試してみます。
回答ありがとうございました。
506 :
nobodyさん :2010/06/17(木) 09:29:50 ID:Ii8+nE6y
質問いたします。 送信フォームなどで使うボタン。以下のように書けばボタンの代わりに画像を使うことができますよね。 <input type="image" src="image.gif" name="sub" /> ←(ボタンの代わりに、“image.gif”という画像を使う) そこで、画像の代わりに文字列を使うことは出来ますでしょうか?どういうことかと申しますと、普通によくあるリンク (< href="xxxxxxxxx.html">リンク</a>)を張る感じで、それをクリックするとデータを送信させるようにしたいのです。 例えば、これは私の予想ですが、ヤフオクとかで条件を絞り込む場合、 「デスクトップ」という文字列のリンクがあり、それをクリックすると「デスクトップ」というデータを送信し、それを抽出して表示… という仮定を踏んでいるものだと思っています(間違ってたらすいません)。 皆様のお知恵を拝借したいと思います。宜しくお願いします。
POSTとGETリクエストは理解してるの?
508 :
nobodyさん :2010/06/17(木) 11:47:14 ID:Ii8+nE6y
>>507 POSTとGETリクエストは理解してるの?
理解はしてる…つもりです。一応ですけど。
<input type="image"……で、画像を使った時はうまくいきました。
506はずっとPOSTの話をしていると思うけど、 ヤフオクの例はGETなんじゃねーの?ってことを 507は言いたいんだと思う。 ちなみにリンクでsubmitしたければ、javascriptで onclickイベントにsumbitを書けばおk
<form method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>">
<input type="text" name="search">
<input type="submit" value="search!!">
</form>
<?php
if(isset($_POST["search"])){
$str = $_POST["search"];
mb_internal_encoding("UTF-8");
mb_http_output("UTF-8");
$url = "
http://search.yahooapis.jp/WebSearchService/V1/webSearch?appid=***&results=2 ";
$url .= "&query=".urlencode($str);
$data = simplexml_load_file($url);
print_r($data);
}
?>
検索したい言葉を入れて、Yahooの検索APIから検索結果を表示させたいんだけど、
検索結果が文字化けしちゃうし、日本語の検索キーワードを入力すると検索結果0件になっちゃうんだけど
どこがおかしいの?
勝手に質問だと思い込むのはやめてもらえませんか?
>>511 「くだらない質問をするときはIDを出さなければならない」とは書かれているようですが、それがいかがなさいましたか?
質問じゃないならスレ違い
「くだらなくない質問もですか?」は明らかにくだらない質問だな
>>515 もちろんスレ違い。
くだ質というのは昔からそのようにできている。
518 :
nobodyさん :2010/06/17(木) 23:18:57 ID:WMbR8KJ3
亀で横からなんだけど、
>>30 でUAを設定してるのと設定してないので取得できる量が変わるのはなんで?
なんでかわからんが、そのうちはまりそうな気配がするな。 パケットキャプチャしたりするとわかるのかな。
520 :
nobodyさん :2010/06/18(金) 00:26:09 ID:df2633Ti
php-5.3.2-srcをDLしたんですが php4ts.dllをシステムフォルダにコピーすればいいらしいんですが php4ts.dllが見つかりません どこにおいてあるのでしょうか?
522 :
nobodyさん :2010/06/18(金) 00:41:58 ID:df2633Ti
windowsへのインストールなら、xamppでいいじゃん。 少なくともそこのサイトの通りやっても5系の入れられないし、 あなたがダウンロードしちゃったのはソースなので使えないです。
524 :
nobodyさん :2010/06/18(金) 01:29:12 ID:df2633Ti
ええっーマジですか… 回答ありがとうございます
526 :
nobodyさん :2010/06/18(金) 03:13:36 ID:df2633Ti
>>525 さん
インストーラーを落としましたサンクスです
インストールする時にother cgiを選んだんですがこれでもいいですよね?
あとインストールすればすぐにPHP使えますか?
527 :
nobodyさん :2010/06/18(金) 03:33:58 ID:feYzfmHO
すいません、質問です。 最近、PHPの勉強を始めたばかりなのですが。 XAMPPをインストール、テスト用の簡単なPHPも使用できていて、 動作には問題ないように思います。 mysqlは、utf8の文字コードを追加しています。 また、.htmlで、phpが動作するように、.htaccessを使用しています。 ウェブサイトを基本xhtmlでコーディングしていって、ヘッダーなどの部分を PHPで共通化できればと思い、勉強を始めたのですが、いきなり文字化けに陥りました。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> これがソース内にあると、文字化けします。 逆に、なければ文字化けはしません。 これは、なぜなんでしょうか・・・ どなたか、おわかりになる方、ご教授してください><
>>526 ごめん オレには other cgi が何か分からん。
だいたい apache module みたいなんだと思う
君が cgi/fcgi を望んでるとは思えん
>>527 それぞれの文字コードを見直す
>>526 言い忘れたけど
>>522 の内容は php4 を php5 に置き換えれば
そのまま使えるはず。
530 :
527 :2010/06/18(金) 04:33:07 ID:feYzfmHO
>>528 ありがとうございます。
php.iniを、もう1度みなおしていたら、UTF-8じゃない部分がありました。
単純なミスで質問してしまって、すいませんでした。
回答ありがとうございました!
>>520 phpに限らず、メジャーバージョンが異なるものの情報を鵜呑みにするのはやめたほうがいいよ
532 :
nobodyさん :2010/06/18(金) 08:52:21 ID:KlmzoK3k
echo $_SERVER["REMOTE_ADDR"]; は表示されるのですが、 echo $_SERVER["REMOTE_HOST"]; は表示されません。 これは何処の設定をいじくれば表示されるようになるんでしょうか?
534 :
nobodyさん :2010/06/18(金) 14:04:34 ID:J92h6I5e
535 :
nobodyさん :2010/06/18(金) 14:43:06 ID:PtT48P2n
もの凄いくだ質なんですが、、気になったので質問します。 MySQLのテーブル「user」の各フィールド名を user_id|user_name|user_mail のように、テーブル名を接頭辞にして付けています。 $sql = "SELECT * FROM user"; $res = mysql_query($sql); みたいにしてSQL文を実行してmysql_fetch_arrayで登録値を取得出来るわけですが、 登録値を取得する時、どういう配列名にすればいいか悩みます。 これまでは $user = mysql_fetch_array($res); のように、テーブル名を配列にして代入していたのですが、 これを出力する時、 $user["user_name"]となるので、ややこしく感じます。 どうするのが一般的なかと疑問に感じ、質問させていただきました。
フィールド名のuser取ればいいじゃない。自分でもそう思ってるんでしょ?
537 :
535 :2010/06/18(金) 14:53:14 ID:PtT48P2n
いえ。それは思っていません。結合する時ややこしくなりますから。
538 :
nobodyさん :2010/06/18(金) 14:59:35 ID:J92h6I5e
RDBMSがなんのためにスキーマ、テーブル、カラムで空間を分けてるか考えたら 結合のときにカラムのエイリアスを付けなくていい
すまそ途中送信 RDBMSがなんのためにスキーマ、テーブル、カラムで空間を分けてるか考えたら 結合のときにカラムのエイリアスを付けなくていいという理由だけで 接頭辞を乱用すべきじゃないね
541 :
535 :2010/06/18(金) 15:21:55 ID:PtT48P2n
確かに接頭辞を付けると無駄にフィールド名が長くなるので
乱用すべきでないというのは分かります。
ただ、テーブル数が多くなってくると、やはり接頭辞を付けた方が
ソースが分かりやすいんです。WordPressやMTなんかも接頭辞を付けてますし。
で、
>>536-540 さんの意見を総合すると、
$user = mysql_fetch_array($res);
というようにテーブル名の配列に代入する方法が一般的なんですかね。
543 :
nobodyさん :2010/06/18(金) 18:19:48 ID:df2633Ti
>>525 さんのURLからPHP 5.3のインストーラーをDLして
インストールしたんですが
これって設定の変更とかせずにそのまますぐに使えますか?
545 :
nobodyさん :2010/06/18(金) 18:22:19 ID:9ev+TnD6
546 :
nobodyさん :2010/06/18(金) 18:25:10 ID:UII6mL4g
APCを使おうと思ってさくらのレンタルサーバーに組み込んだんですが、 どうも上手く動作してないような気がします。 wwwフォルダ以下にある色んなphpやjpgなどを開いたら、 ↓のapc.phpキャプチャ画像の2〜4番目あたりが変化しそうな気がするのですが、全く変わりません。 この状態だとキャッシュされているのが、その時開いたapc.phpだけという意味ですよね? どこが悪いのかさっぱりです。 分かる方いましたらどうかよろしくお願いします。 【組込手順】 ・本家からAPC.tgzダウンロード→解凍→サーバーにAPCフォルダとしてアップ ・cd APC ・phpize ・./configure --enable-apc ・make ・modulesにapc.soができたのを確認 【主なフォルダ/ファイル構成】 home | └myid | ├APC | └modules | └apc.so | └www └html/phpなど
547 :
nobodyさん :2010/06/18(金) 18:25:32 ID:9ev+TnD6
548 :
546 :2010/06/18(金) 18:26:25 ID:UII6mL4g
Linuxなら apt-get install lamp-server とコマンドを打つだけで Apache MySQL PHPが自動でインストールされるのに Windowsは非常に面倒だな
550 :
nobodyさん :2010/06/19(土) 05:25:01 ID:9jWjEAKJ
PHPで4バイト整数のファイル入出力はどうやればいいですか。
fgets fputs
fread, fwrite
553 :
nobodyさん :2010/06/19(土) 19:33:03 ID:PoSyZtDI
<?php header('Content-Type: text/html; charset=UTF-8'); mb_http_output("UTF-8"); ob_start("mb_output_handler"); ?> <form method="POST" action=""> <textarea name="replace" cols=20 rows=4></textarea> <input type="submit" value="replace!!"> </form> <? if(isset($_POST["replace"])){ $before = $_POST["replace"]; echo $before; echo mb_detect_encoding($before); $after = str_replace("です", "でした", $before); echo $after; echo mb_detect_encoding($str)."<br>"; } フォームで文字列置換をやりたいんだけど、うまくいきません。 置換前の文字列とその文字コード、置換後の文字列とその文字コードを表示させてますが、 「あいうえおです」みたいな日本語を入力しても、該当箇所が置換されないどころか文字列自体が表示されません。 しかも文字コードはどちらもSJISになっちゃいます。 どうしたらうまく置換できるのでしょうか。
>>553 mb_internal_encoding("UTF-8");
556 :
nobodyさん :2010/06/19(土) 19:58:59 ID:9jWjEAKJ
パスの内部コードを取得する方法ありますか。
557 :
553 :2010/06/19(土) 20:31:04 ID:PoSyZtDI
<?php
header('Content-Type: text/html; charset=UTF-8');
mb_http_output("UTF-8");
mb_internal_encoding("UTF-8");
ob_start("mb_output_handler");
?>
<META httpequiv="Content-Type" content="text/html;charset=UTF-8">
<form method="POST" action="">
<textarea name="replace" cols=20 rows=4></textarea>
<input type="submit" value="replace!!">
</form>
<?
if(isset($_POST["replace"])){
$before = $_POST["replace"];
echo $before;
echo mb_detect_encoding($before);
}
とりあえずPOSTされたデータを表示させることから解決してみようと
>>555 のmb_internal_encoding("UTF-8");を追加し、metaタグも入れてみましたが、
FirefoxではPOSTされたデータはちゃんと表示され、文字コードもUTF-8と出るのですが、
IEでは日本語を入力した場合、POSTされたデータは表示されない上、文字コードもSJISと出てしまいます。
ヘッダーもUTF-8にしてるはずなのでPOSTされたデータはUTF-8だと思ったのですが・・・
ヘッダーの設定方法がおかしいのでしょうか?
var_dump($_POST); してIEとFirefoxで比べてみたらいい
559 :
nobodyさん :2010/06/19(土) 22:46:46 ID:9jWjEAKJ
$n = 123456; を32bitのバイナリとしてファイルへ書き出すには、
int2bin($n) のように変換するしかないですか? 既存関数のみで可能ですか。
fread, fwriteだとテキストで123456が出力されると思うのですが。
function int2bin($x){ return sprintf("%c%c%c%c", $x&255, ($x
>>8 )&255, ($x
>>16 )&255, ($x
>>24 )&255 ); }
function bin2int($s){ return ord ($s)+(ord ($s[1])<<8)+(ord ($s[2])<<16)+(ord ($s[3])<<24); }
intval
561 :
nobodyさん :2010/06/20(日) 01:20:59 ID:twag0hRe
forでaaa aab aac ...aaz aba abb abc ...zzy zzzというように3文字の文字列を表示するにはどうしたらいいでしょうか?
for ($a='aaa'; $a!='aaaa'; $a++) echo $a.' ';
>>562 すごい。そんな技できるんですね。
ありがとうございました。
564 :
nobodyさん :2010/06/20(日) 01:59:37 ID:qnX6bksX
>>557 ob_start("mb_output_handler");
消したら動いたけど。 ie8/fx3.6
>>546 apc.stat を off にしてphpソースを変更
実行して変更が反映されてなければ間違いなくキャッシュされてる
jpgのくだりはよく分からないけど
キャッシュされるのはphpのバイトコードだよ
パースの手間が無くなる分軽くなる
571 :
nobodyさん :2010/06/20(日) 11:15:41 ID:OE54gla8
Rubyスレで質問したところ、PHPスレで聞けとのことでしたので、ここで質問します 1.PHPのsystem()で.rbを実行するする 2.そのrbの中では色々な処理をする 3.処理が終わったらPHPにその処理結果を戻す 4.PHPでその結果を条件分岐か何かで判断をする というようなWebページを作ろうとしています これって可能ですか? 上2行は確認出来たのですが、結果をPHPに戻すのは無理なような気がします どうですか?
できます。やり方は教えません。
Rubyで出力した内容がsystem()の2番目の引数に返るんじゃね? と、Ruby知らなくてPHP中級な俺が言ってみる。
2番目に入るのは終了ステータス 標準出力をキャプチャしたかったら popen(), proc_open() などを使う
>>574 PHPならもっと便利な関数があるはずだろ。
576 :
nobodyさん :2010/06/20(日) 14:56:32 ID:Zg4Yd11e
みなさんが「このソースは読みやすい」と思うコーディングをしている オープンソースのPHPシステムを教えて下さい
formから放り込んだ日本語をImageTTFTextで縦書きにしたいのですが、句読点やーがおかしな事になります。 正しく表示する方法はないのでしょうか?
580 :
nobodyさん :2010/06/20(日) 17:43:38 ID:7fNS8+df
$FileNameTMP = realpath($FileName); $FileType = mime_content_type($FileNameTMP); header("Content-Type:" .$FileType); readfile($FileName); こんな感じのソースを書いたのですが、IEだとブラウザでの表示ではなくて保存ダイアログが表示されるようになってしまいます。 Firefoxの場合は問題なく表示できます。 Firefoxも空のテキストファイルだと保存ダイアログが表示されるようになります。 画像ファイルやPDFファイルなどをブラウザで開ける様になる決方法は無いでしょうか?
header('Content-Disposition: inline; filename="example.pdf"'); header('Content-Type: application/pdf');
582 :
nobodyさん :2010/06/20(日) 18:02:31 ID:7fNS8+df
>>581 それやるとFirefoxでも問答無用で保存ダイアログが表示される。
やりたいのは
>>580 でも書いていますが保存ダイアログを出したいのではなくて
ブラウザ上で表示したい。
>>582 保存するなら >Content-Disposition: attachment
表示するなら >Content-Disposition: inline
>>579 失礼しました。
【OS名】CentOS5
【PHPのバージョン】5.3
【連携ソフトウェア】
【質問内容】
formから放り込んだ日本語をImageTTFTextで縦書きにしたいのですが、句読点やーがおかしな事になります。
正しく表示する方法はないのでしょうか?
過去ログでは縦書き専用フォントで・・・とかが見つかったのですが肝心の縦書き専用フォントがぐぐっても見つけられません。
585 :
nobodyさん :2010/06/20(日) 18:22:53 ID:7fNS8+df
>>581 すみませんでした。
inlineの部分を見落としていました。
IEだとbmpファイルはこの方法でも保存ダイアログが出てしまいます。
また空テキストファイルだとFirefoxだと保存ダイアログがでます。
IEでは空テキストファイルでは保存ダイアログはでません。
これらを解決する方法は無いでしょうか?
586 :
nobodyさん :2010/06/20(日) 18:27:15 ID:7fNS8+df
追加 空テキストファイルのMIMEを見ると application/x-empty となっています。 application/x-emptyを調べてみてもいまいちどういうときにできるMIMEなのかわかりません。 application/x-emptyをtext/plain変換してやらないと駄目って事ですかね?
たとえばapplication/zipをinlineで送られてもブラウザはどうしようもないだろ mime-typeを適切に設定しろ それだけだ
588 :
nobodyさん :2010/06/20(日) 19:49:09 ID:7fNS8+df
>>584 ID出すことを忘れているようだけど、ともあれ、本題についてだけど、それは難しい。
フォントをいじってみてはどうか。
590 :
nobodyさん :2010/06/20(日) 23:22:44 ID:V/OxbjwX
filesize()は使わない方が良い。 他でオープンされていると0になるし、 値がキャッシュされるから実サイズと異なる値を返すことあり。頻繁な更新されている物だと。
>>584 ImageTTFTextって使ったことないけど
表示する文字が句読点かどうか調べて
句読点ならは座標をずらせばいいんじゃない?
ハイフンだったら縦棒(|など)に変換するとか。
592 :
nobodyさん :2010/06/21(月) 00:59:52 ID:oQjyj8CX
複数階層のmkdir_rなんですが。これだと日本語パスで失敗します。 \を含むため。どう直せばいいですか。 function mkdir_r( $path ) { if(is_dir($path)) return; $path = str_replace( '\\', '/', $path); $parts = array_filter ( explode('/', $path), 'strlen' ); $s=""; foreach ($parts as $part) { $s.="$part/"; @mkdir($s); } }
593 :
592 :2010/06/21(月) 01:12:43 ID:oQjyj8CX
自己解決しました
594 :
592 :2010/06/21(月) 01:34:09 ID:oQjyj8CX
これね。 function mkdir_r( $t ) { $s=array(); while( !is_dir($t) ) { $s[] = $t; $t=dirname($t); } for( $n=count($s)-1; $n>=0; $n-- ) mkdir($s[$n]); }
>>594 そんな関数作らんでもmkdirにrecursiveオプションがあるんだからそれ使えばいいのに
596 :
nobodyさん :2010/06/21(月) 12:33:30 ID:oQjyj8CX
PHP4 PHP5に依存しないことが大事。
598 :
nobodyさん :2010/06/21(月) 18:06:11 ID:oQjyj8CX
デストラクタの時に値が保存されないんですが。どうすれば値が保存されますか。 <?php $a = new A(); $a->add(); $a->add(); class A { var $num; function A() { $this->num=0; register_shutdown_function( array( $this, '_A' ) ); } function add() { $this->num++; } function _A() { echo "num={$this->num} \n"; } } ?>
>>591 「〜」の処理とか
> 座標をずらせばいいんじゃない?
これとか、多分素直にさせてくれないよ。
動くとわりと面白い系だから一度は試して遊ぶといいかも。
601 :
nobodyさん :2010/06/21(月) 18:35:41 ID:oQjyj8CX
num=2 が出力したいんですが。
そのままコピペしてhoge.phpというファイルに セーブして実行してみた。 % php hoge.php num=2 出るじゃん。
603 :
nobodyさん :2010/06/21(月) 18:42:55 ID:oQjyj8CX
PHP4.2程度できる方法ありますか。
4系だと出来んな。 グローバルに渡すしか。
605 :
nobodyさん :2010/06/21(月) 18:47:44 ID:oQjyj8CX
外部変数にしたら出来るんですが。 これだとクラス変数と別に変数用意する手間が掛かって良くないです。 クラスの値が破壊、初期化されてからregister_shutdown_functionが起動すると思います。 回避する方法ないですか。PHP4です。 $Anum=0; $a = new A(); $a->add(); $a->add(); class A { function A() { global $Anum; $Anum=0; register_shutdown_function( array( $this, '_A' ) ); } function add() { global $Anum; $Anum++; } function _A() { global $Anum; echo "num={$Anum} \n"; } }
606 :
nobodyさん :2010/06/21(月) 19:00:35 ID:oQjyj8CX
グローバル変数とクラスAをまとめたクラス作ったら成功しました。これで生き残る。 <?php $b = new B(); $b->add(); $b->add(); class B { var $Anum=0; var $a; function B() { $this->a = new A(); } function add() { $this->a->add(); } } class A { function A() { global $Anum; $Anum=0; register_shutdown_function( array( $this, '_A' ) ); } function add() { global $Anum; $Anum++; } function _A() { global $Anum; echo "num={$Anum} \n"; } } ?>
PHP4系はオブジェクト指向まわりとかいろいろ 調子悪いので茨の道だぞ。
classBの $Anumと
classAの $Anum 別物じゃん。
結局BがAのインスタンスもってるだけで
>>605 と同じ・・・
PHP4環境ないから知らんけど $a =& new A(); とかでしょどうせ。
610 :
nobodyさん :2010/06/21(月) 19:27:13 ID:oQjyj8CX
&付きでうまくいきました。有り無しの違いが分からない <?php $a = & new A(); $a->add(); $b = & new A(); $b->add(); $b->add(); class A { var $num; function A() { $this->num=0; register_shutdown_function( array( &$this, '_A' ) ); } function add() { $this->num++; } function _A() { echo "num={$this->num} \n"; } } ?>
&入れないとnew直後に別インスタンスにコピーされてしまう変態仕様だから。 PHP4 new演算子 とかでググれば出てくる。
612 :
nobodyさん :2010/06/21(月) 19:30:42 ID:oQjyj8CX
サンクス
PHP4はオブジェクトも値渡しだからな、よくはまる罠だった
>>598 >>609 + register_shutdown_function(array(&$this, '_A' ))
習い始めたときは既にPHP5の時代だった俺は運が良かったのか
615 :
nobodyさん :2010/06/21(月) 23:23:53 ID:oQjyj8CX
CURLのFTPアップロードで、 複数ファイルを持続接続でアップする方法ありますか。 毎回ログインする方法しか分かりません。
617 :
nobodyさん :2010/06/21(月) 23:46:41 ID:oQjyj8CX
複数スレッドで動かせば、帯域を無駄なく使えて良いんですが。
PHP4だと
>>616 が使えないです。
FTPのログイン動作に3から10秒ほどかかるのでこの時間の転送量は0です。
ログイン省く方法無いですか。
なんでPHP5にする選択はしないの?鯖代なんて月数百円だろ。
よく分かんないけどFTPってそのまましゃべれないの?
二人としゃべらないといけないからちょっと面倒
さっさとせめてPHP5に乗り換えたほうがいいと思うけどね。 (そもそもPHP捨てたほうがいいというのは置いといてw)
PHPはC++のスクリプト版+追加機能のようなものでもっとも有望なスクリプト言語。 PHPからC++のコード生成出来たり、実行ファイルが作れればいいのだが。 追加機能は例えば、static_php.libを組み込むことで実現出来たり。
改良して対応してくれって言うけど、その分の人件費はどうなるの? なんでもWebだったらタダでやってくれると思ってないか?
Friendクラスも使えないしPHPダメでしょ。 まぁ使うけど。 5.3で静的遅延束縛が実装されて大分使いやすくなった。
C++のfriendキーワードの事か? 今頃取り入れたらそれこそPHPらしいって言われるな
627 :
nobodyさん :2010/06/22(火) 18:42:11 ID:ZnYDyWrv
ファイル読み込み処理ですけど テキストデータの場合 fgets()を利用してループさせる。 file_get_contents()もしくはfile()でいっきに読み込む どっちの方が効率がいい処理になるのでしょうか? みなさんは何を基準にしてどの関数を利用するようにしていますか?
メモリに全部乗っかっちゃって大丈夫なら全部読んじゃうかも
内容次第だけど全部一気に読むとメモリ食うので一行ずつですむなら そうする。
配列にデータいれる速度 タブや改行区切りで済むなら一気読みでexplodeが最速。 一回目と二回目 file 10.944231987 14.324997901917 serialize 15.630096912384 10.502514839172 var_export 16.92795419693 13.347457885742 explode 1.0216579437256 1.743134021759
631 :
630 :2010/06/22(火) 18:58:18 ID:???
どれも一気読みで、一行読みとは比較していないが一気読み速いことはないだろう。
配列チェックでisset って使わなかったけど。isset ( $A[$n] )としたときに 勝手に$A[$n] =NULLがセットされる気がしてたから。 存在しない配列・変数は自動生成するもんだとおもってた。 しかし、今日気づいた。増えてなかった。
>>584 亀レスだけど縦書き試してみた。
<?php
$im=imagecreatefrompng('sample.png');
$bgcolor=imagecolorallocate($im,255,255,255);
$im=imagerotate($im,90,$bgcolor); //左90度回転
$black=imagecolorallocate($im,0,0,0);
$font='vSHGM.ttf'; //縦書き専用フォント
$size=22; $x=50; $y=50;
$text='「馬〜鹿、アホー」って書いてみるテスト。';
imagettftext($im,$size,0,$x,$y,$black,$font,$text);
$im=imagerotate($im,-90,$bgcolor); //右90度回転
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
?>
ImageTTFTextのAngleを-90にするとガタガタになるんで、
元の図形を回転させてみた。
いちおう句読点や長音、ニョロ、小さい「っ」の位置は正しく表示される。
でも、もともとのフォントの形が…残念…
あ、縦書き専用フォントを使うのか。元をちゃんと読んでなかったorz
>>627 効率って、
同じようなことするのにソースコードの行数が少なくて済む効率?
実行時間の効率?
使用メモリの効率?
すべて
ならループさせない方が効率いい
638 :
nobodyさん :2010/06/23(水) 23:12:08 ID:SXPCexzA
PHPを使ってファイルAをアップロードするとき、アップ途中でtmpフォルダにあるAを特定することって可能ですか? ・tmpファイル名から判断→できないですよね?頭にphpやsess_など特定の語がつくらしいことは分かったのですが・・・ ・フォルダを監視し、アップロード開始前後に増えたファイルをAとみなす。→同時期に関係ないファイルが増えることもあるので微妙
$_FILES["hoge"]["tmp_name"] ではだめなの? リクエストを受け取って動くコードじゃなしに、別で動いてるディレクトリ監視用のなんかで、 受信が終わってリクエストされたPHPのファイルのなかみが実行される前に アップロードされ一時保存されてるファイルにちょっかい出したいとか、そういう感じ?
リクエスト受信中はApacheがロックしてるだろ そもそもバッファに収まるサイズなら一時ファイル作らないだろうし
641 :
nobodyさん :2010/06/24(木) 02:29:20 ID:OBMIoFMZ
642 :
nobodyさん :2010/06/24(木) 06:36:59 ID:WgZlfAT4
朝から失礼します。 PHPにて、以下のコードが意図したように動作しません。 $funcs = array(func_a, func_b, func_c); foreach ($funcs as $func){ $func(); //$func === String... "func_a", "func_b", "func_c" } どうも調べてみると PHP の配列では、関数への参照が期待されるところが、文字列として解釈されてしまうみたいです。 どのようにすればこの問題を回避できるのでしょうか? アドバイスよろしくお願いします。
643 :
642 :2010/06/24(木) 06:46:36 ID:WgZlfAT4
すみません、訂正します。 x この問題を回避 x この問題を解決
>>642 よく分からんけど
>php -r "$funcs = array('func_a', 'func_b', 'func_c'); foreach($funcs as $func) $func();
Fatal error: Call to undefined function func_a() in Command line code on line 1
645 :
642 :2010/06/24(木) 07:57:50 ID:WgZlfAT4
>>644 すみません、どうやらこちらの勘違いだったみたいです。
> var_dump($funcs)
array(3) { [0]=> string(4) "func_a" [1]=> string(4) "func_b" [2]=> string(4) "func_c" }
上記をまんまに受け取ってしまって、文字列が格納されていると判断していました。
しかし、先ほど確認してみると実際には関数への参照が格納されていることを確認できました;
どうもありがとうございました。
連想配列を、ループで順に数字でアクセス出来ますか。 たとえば、$n=10に対して、10個目に格納されているキーと値を取得できますか。
647 :
nobodyさん :2010/06/24(木) 08:37:30 ID:MnfGX6AS
訂正。 ループでなくて、ランダムアクセスする方法ありますか。 こういうやつでなくコストが低いやつが良いです。 $n=10; $cnt=0; foeeach ( $A as $key->$val ) { if($cnt==$n) break; $cnt++; }
648 :
nobodyさん :2010/06/24(木) 08:43:48 ID:WgZlfAT4
649 :
647 :2010/06/24(木) 08:48:10 ID:MnfGX6AS
$n番目のキーと値を取得したいのですが。
ランダムアクセス = シーケンシャルサーチ(
>>647 )をしないアクセスってことです。
array_keysかなぁ・・・ 配列の配列にすべきと思うけど。
array_sliceでキーを保持したまま1対取り出せばいいんじゃないかな。
652 :
nobodyさん :2010/06/24(木) 12:10:57 ID:MnfGX6AS
サンクス
654 :
nobodyさん :2010/06/24(木) 16:04:42 ID:sfa066RH
プログラム板の略称はム板ですが ここの略称の略称はなんでしょうか?
ペ板
P板
WEP板
WindowsでPHP最新版をC++に変換するツールがほしいです。 HipHop PHPをwindowsに対応してほしいです。
HipHop PHPってこのスレで開発してたんだっけ?
独り言でしょ?
661 :
nobodyさん :2010/06/25(金) 10:36:18 ID:beZDHavc
phpのfopenで作成したファイルが、更新も削除も出来なくなりました。 FTPソフトからもphpからも操作不可能です。 どんなアクセスも可能なファイルはどのように作成すればいいですか?
662 :
nobodyさん :2010/06/25(金) 10:37:35 ID:beZDHavc
fopenしつつ、パーミッションを777にしたいということなんですが。 オプションでは付いてないんですが。 あとから変更すると既に変更不可になってそうです。
phpでchmodしてください
664 :
nobodyさん :2010/06/25(金) 11:33:14 ID:beZDHavc
10進で777を書き込んで パーミッションが411になってしまったんだと思うんですが。 これって削除も更新も出来ないんですが。 FTPソフトから。 これにアクセスする方法はないんですか?
665 :
nobodyさん :2010/06/25(金) 11:34:25 ID:beZDHavc
>>663 サンクス。 phpから親ディレクトリのパーミッション変更してみます。
PHPでchmodを 777 じゃなくて 0777としてください。
667 :
nobodyさん :2010/06/25(金) 13:10:12 ID:beZDHavc
サンクス
668 :
nobodyさん :2010/06/25(金) 13:47:53 ID:F/VYj9su
phpinfo()で出力される情報の中に、 extension_dirとinclude_pathという2つのパスがありますが これらは何を基準に分けてるのですか? extension_dirの中を見るとso拡張子のファイルしかないので、こちらはバイナリファイルを置けばいいのですか? 追加したいライブラリがso拡張子だったらextension_dirに突っ込んで phpファイルだったらinclude_pathに突っ込む、という感じでいいのかな。
669 :
nobodyさん :2010/06/25(金) 19:25:21 ID:TAYX3VSM
mb_convert_encodingで文字コードを変換すると、 一部の漢字がうまく変換されずに困っています。 JIS第三水準以上になると、ほとんど駄目なようなのですが、 対処法はありますでしょうか? よろしくお願いします。
670 :
nobodyさん :2010/06/25(金) 20:04:08 ID:beZDHavc
全文字揃うユニコードにする
671 :
nobodyさん :2010/06/27(日) 01:38:10 ID:aVrX+ivV
$text = "abcdefg"; echo $text[3]; こうやれば「d」の文字が拾えますが $text = "あいうえお"; echo $text[3]; とやった場合マルチバイトのため文字として拾えません。 これを拾えるようにする方法は無いのでしょうか? $text = array("あ","い","う","え","お"); これはなしの方法であくまで $text = "あいうえお";とやった変数に格納したデータを拾う方法。
>>671 mbstringのページを見てみると幸せになれるかも
ああ、読み間違えたね、俺。
675 :
nobodyさん :2010/06/27(日) 12:43:50 ID:aVrX+ivV
>>672 それつてmb_系(mb_substr)の関数仕えって事?
むしろなぜCみたく文字列を扱うのか
JavaScriptなら配列のように扱ってもちゃんと文字が取れるけど 普通は関数使うね
UTF8リテラルもなくなったしな
681 :
nobodyさん :2010/06/27(日) 21:53:55 ID:hmPoeXmO
test.datの中に以下のようにデータが格納されている場合 1,佐藤,ok,43 2,鈴木,no,65 3,田中,ok,87 4,斉藤,no,23 5,紅子,ok,90 4番目の斉藤のnoの部分をokに変えようとした場合 シェルのsedみたいに該当部分だけを書き換えることが出来る関数とかあるでしょうか? ちなみにDBへの移行が出来ないのでfileで読み込んで斉藤にヒットした行のnoをokに変更、それ以外はそのままファイルに追記していく形で変更を行ってます。
直接的な関数はないけどfgetcsvとfputcsvとか使えば少しは負担減るかも DBは使えないってsqliteもだめなの?
テキストはログファイル程度にしておかないと後で苦労する
684 :
681 :2010/06/27(日) 22:45:42 ID:hmPoeXmO
>>682 csvとして扱う関数があるわけですね。
そちらをちょっと調べてみます。
DB(sqlite含)関連が入っていない+追加出来ない状態です。これはサーバーの仕様なのであきらめてます。
>>683 私もそう思います。
でもきっとこれを作った当初は規模の拡大を予測してなかったんだと思います。
ソースを見たところ社内SEが部署内のちょっとした効率化のために作成したもののようです。
部署内でちょっとずつ機能追加してたら、他の部署からも〜みたいな感じで膨らんで今にいたるという状況みたいです。
ゼロから完全書き換えしたほうが後々いいとおもってはいますが、そこは大人の事情で出来そうにないので現状で何とかしようとしていたところです。
685 :
nobodyさん :2010/06/28(月) 14:52:59 ID:t3TKO+l1
すみません。 PEARの公式サイトからXML-RPC2のパッケージをダウンロードして解凍したら PHPファイルじゃなくてXMLファイルでした。 何を言っているのか分からないかもしれませんが 私にも何が起こったのか分かりません。 超能力とかそういうのじゃありません。 もっと恐ろしい能力の片鱗を味わいました。 どうすればいいですか教えて下さい。
686 :
nobodyさん :2010/06/28(月) 15:05:34 ID:t3TKO+l1
解凍レンジで解凍したら出来ました。 本当にありがとうございました。
687 :
nobodyさん :2010/06/28(月) 17:01:14 ID:me2fxhSA
689 :
nobodyさん :2010/06/28(月) 17:08:50 ID:me2fxhSA
691 :
690 :2010/06/28(月) 17:21:02 ID:???
間違えた。
答え教えると別のパターンの時も聞いてくるだろ 勉強しろ
694 :
nobodyさん :2010/06/28(月) 18:10:59 ID:me2fxhSA
DOMでも使えば?
697 :
nobodyさん :2010/06/28(月) 18:35:48 ID:me2fxhSA
>>695 ( ^ω^)おっおっおっ
良いサイトありがとう!
698 :
nobodyさん :2010/06/28(月) 18:37:34 ID:me2fxhSA
>>696 DOMとかわかんないお( ^ω^)
でもありがとう( ^ω^)
699 :
nobodyさん :2010/06/28(月) 18:47:59 ID:z0Gu2+zS
PHP5で質問です。 try{ in_array($hoge,$fuga); }catch(Exception $e){ echo 'error'; } としたときに in_array関数のパラメータに誤ったデータが入ってきたら Exceptionのキャッチが出来るかと思っていたのですが、 キャッチできませんでした。 そういうものなのでしょうか? もしキャッチをするとしたらどの様に記述すればよろしいのでしょうか? よろしくお願いいたします。
>>700 ありがとうございます。
やっぱり無理なんですね。
実務では、DB操作で複数テーブルへの操作を行おうとしていて、
in_arrayでエラーが発生したら
例外をキャッチしてロールバックをしたかったのですが、
そのまま素通りしていたものですから、
なにか良い方法がないかと思案しているところでした。
if (!in_array($hoge, $fuga)) throw new Exception(); すればいいのでは?
戻り値見ないの?馬鹿なの?死ぬの?
標準関数なのに例外投げないのね
706 :
699 :2010/06/28(月) 20:57:18 ID:???
>>702 第二引数に配列でない値がとんできたとか・・そういう類の予期し得ないデータです。
>>703 ありがとうございます。その場合PHPのエラーが発生したらfalseが
返ってくるのでしょうか。
ちょっと今試せない環境なので、試せるようになったら
試してみたいと思います。
標準関数が例外投げたら逆にうざいっていうか、ありえん
Mon,28 Jun 2010 21:24:24 +0900 こんな感じの日時をunixtimeに変換する関数みたいなのありますか?
711 :
709 :2010/06/28(月) 21:42:50 ID:DMKCG0er
id出し忘れてました。すいません
>>706 703だけどもしくはset_error_handlerでPHPエラー時に例外投げるようにするという手もある
>>711 みんなには内緒だよ つstrtotime
>>710 >標準関数が例外投げたら逆にうざいっていうか
標準関数が例外を吐く例
>>706 is_arrayでチェックする。そういうデータが来る可能性は予期できるはず。
>>713 >>708 は標準関数が例外を吐く例には見えないんだが・・・?
>>706 第二引数に配列でない値、それは予期し得ないデータとは言えませんw
is_array使えばいいだけだろwww馬鹿なの?wwww死ぬの?wwwwww
>>707 ifとか減らせるからコードの見通しがよくなるんだけどな
警告を出すことはあるけど例外を出す関数は標準関数には無い
つSPL
クラスは例外投げるよw
try〜catchで囲んでおけば 何かあったらcatchでつかんでくれるって方が楽だと思うんだけどな・・ PHPにはterminate()も無いんだよね?
1.phpで自分自身のファイルのエンコーディングって取得できますか? 2.sambaのunix charsetのようなファイル名の文字コード等は取得できますか? $_SERVERにはないようですし。。。 getlocaleは地域の取得で違いましたし。。 なぜ必要か、 1.は便利だから。 2.はファイルアップロード機能の汎用性のあるものを作りたいからです。 ファイル保存時適切に日本語ファイル名のエンコーディングを指定、変換しないと化けちゃうからです。 PHP初心者です。至急宜しくお願いします。昼休みあと5分(涙
アップロードされた時のファイル名をそのまま使うつもりですか。どきどきしますね。
>>723 別にそんなの珍しくもないのに何言ってんだか
大抵のアップローダはオリジナルのファイル名が見れるだろ
>>724 オリジナルのファイル名のまま保存してるわけがなかろう
> ファイル保存時 これがどの行為を指しているかによるな
727 :
681 :2010/06/29(火) 22:09:22 ID:DeLVAKxK
eregはPHP5.3から非推奨となってますが、これは5.3ではeregはまったく動かないということでしょうか? それとも動くけど推奨は出来ないということでしょうか?
> 注意: PHP 5.3.0 以降、 regex 拡張モジュールは非推奨となりました。 > かわりに PCRE 拡張モジュール を使うことが推奨されています。 > この関数をコールすると E_DEPRECATED が発生します。 PCRE への変換についてのヘルプは 相違点の一覧 を参照ください。 消えて無くなることは無いがlinuxはモジュールを選んでいれられるため 今後regexが入ってない環境が出てくる可能性が高いということ 特殊な使い方をしない限りすべてpregで代替可能です そしてeregより高速に動作します
729 :
nobodyさん :2010/06/29(火) 22:41:44 ID:DeLVAKxK
>>728 なるほど。
eregをpregに書き換えるスクリプトでも作って書き換えてみます。
MVCの勉強になった!ってニッチな軽量フレームワークを教えてください。
731 :
nobodyさん :2010/06/30(水) 09:46:55 ID:XzF49h+x
ちょっと質問ですが 計算できる数値で00、01 とか2桁で数値を表示させるにはどうすればよいのでしょうか?
733 :
nobodyさん :2010/06/30(水) 10:41:22 ID:XzF49h+x
レスありがとうございます。 なんかうまくいかないんですけど原因がわからないのでお願いします。 $number = "1"; echo printf("%02b",$number); → 012 と表示されます。 本当は01としたいのですがどの変がおかしいのでしょうか? 【OS名】winxp sp3 (xampp1.6.4) 【PHPのバージョン】 5.2.4
echo printfとかしてるからだろ。 printfだけで出力までするからechoは余計。printfは出力した文字数を 値として返す(この場合は"01"で2文字だから2)から、それがechoで さらに出力されて余計な2も出てる。
[s]printf あと、bだと2進数になっちゃうのでdね。1なら同じだけどさ。
736 :
nobodyさん :2010/06/30(水) 11:10:33 ID:XzF49h+x
ありがとうございます。echoが無駄なんですね 表示については解決できました。 これを1づつ増やしていくにはどう処理すればいいのでしょうか $number = '0'; $number =($number + 1); file_put_contents( "a.txt", "$number" ); テキストに01 02みたいに出力したいんですが この場合02ではなく 2 で出力されてしまいます
737 :
nobodyさん :2010/06/30(水) 11:12:13 ID:XzF49h+x
訂正 $number ="01";
>>736 おまえは2時間前のできごとをもう忘れているのか?
740 :
nobodyさん :2010/06/30(水) 14:31:43 ID:XzF49h+x
>>739 ???
>>738 仕様でできないってことなのかな
他の方法考えて見ます(01スタートでなく最初から2桁の11スタートとか
どうもありがとうございました。
$number =1; $number = $number + 1; file_put_contents( "a.txt", sprintf("%02d",$number) ); 数値足してくんなら、最初っから数値にしとけよ。 数値にみなせる文字列だったら+1すれば数値に解釈して"01" + 1 ってやれば 2になるけど "02"にはならねーから。 2桁で表示させる方法聞いといてそれなんでつかわねーんだよ。 俺らバカにしてんのか? 分かんなかったら分からんって書けよ。
プログラム初心者か、ただのバカなんだろ。 優しくしてやれよw
会話になってねー こんな馬鹿と一緒の職場とか想像すると寒気がするな
745 :
nobodyさん :2010/06/30(水) 20:19:11 ID:QOd5zTpX
現在Twitterでbotを作っているのですが、 質問がプログラムのことなのでこちらで質問させていただきます。 $hour = date('H'); if($hour < 12){ $jikan = array( "時間" => array("AM","午前中"), "午前" => array("AMです","午前中です"), "午後" => array("まだAMです","まだ午前中です"), ); }else{ $jikan = array( "時間" => array("PM","午後"), "午前" => array("もうPMです","もう午後です"), "午後" => array("PMです","午後です"), ); } $data = array( "6月" => array("6月です","JUN"), "30日" => array("30日です","Thirty"), "(時間|午前|午後)" => $jikan, ); このように実装して 「時間、午前、午後」と書き込むと午前か午後によって違う返事を返すが、 「6月、30日」と書き込むと時間に関係なく同じ返事を返すようにしたいと思っていますが、 上記だと、「時間、午前、午後」とif文中の単語で話しかけると、 「Array」という文字列を返してきてしまっています。 まだPHPは初心者のため、すみませんがどこが間違えているのかご教授願えませんでしょうか。 よろしくお願いいたします。
エスパーじゃないんで、間違ってるであろう部分をみせてもらえんと 答えようがないよね? 返事とか書き込むととか、話しかけるとか言われても 他人には分からないことだということは、理解頂きたい。
"時間" => array("AM","午前中"), これを "時間" => "午前中", こうするとどうなるの?
748 :
745 :2010/06/30(水) 21:51:29 ID:QOd5zTpX
>>746 すみません・・・どう説明すればいいのかわからなくて・・・
>>747 そうすると、$jikanの中に"午前中"が入ります。
>>748 じゃあ、話しかけた時の処理にあると予想される、
$jikan[なんとか]
というところを
$jikan[なんとか][0]
こうするとどうなるの?
エスパーできないんで、質問返しで悪いが('A`;) おまいさん、まさか出力が「$data」ってオチじゃないだろうな? あと、出力結果が「Array」ってことは、配列を理解してないんジャマイカ? 「PHP初心者」って言ってるけど、PHP以外はどんなのを理解してんの?
Head first PHPと独習PHPとどっちがお勧めでしょうか?webプログラミングは始めてなんですが、
ウェブプログラミング以外のプログラミングは経験済みということですね?
753 :
nobodyさん :2010/07/01(木) 22:35:32 ID:BxoJrqT8
PHPのサブセットで、スクリプトのコンパイルと実行が出来るDLLがほしい。 ありますか。
754 :
nobodyさん :2010/07/01(木) 22:36:53 ID:HAlm0epV
ポータルサイトなどを見ていたら、URLが view.php?a=index としているサイトがあり、a=で各ページを指定して テンプレートを読み込んでいると思います。 MVC的にこうする方が管理しやすいらしいのですが、 index.phpやentry.phpにする場合と比べて、メリットがよくわかりません。 なぜURLパラメータでテンプレート指定するのでしょうか?
MVCっていう単語を知ってるならwikiでggr それでもわからんならまたこい
756 :
nobodyさん :2010/07/01(木) 23:10:32 ID:BxoJrqT8
なんでサーバーサイドのプログラムはPHPで ユーザーサイドはJavascriptなんだ。 統一したほうがわかりやすいが。
サーバーサイドJSって流行んないよな
758 :
nobodyさん :2010/07/02(金) 05:12:45 ID:AwwkgWaD
PHPを一つのDLLにまとめて、多言語から呼び出せるようにしてほしい。 データベースとか単独で動かない機能はけずっていい。
クライアントサイドPHPなんてあるのか?
まぁ、扱うものが違うから統一は難しいだろうけど 基本的なとこの記述くらいは統一してほしいな。 JSで変数名に$付けて叱られたことが何度あったことか。
.と+で毎度苦しむ
>>759 JAVAみたいに個人のPCにインストールする形にすればあるいは・・・
>>760 jQueryを使うと、$が出てくるからまたややこしいですよ
764 :
nobodyさん :2010/07/02(金) 15:15:32 ID:VD/AbeYD
ヒント:変数のスコープ
766 :
nobodyさん :2010/07/02(金) 16:14:02 ID:tc4YOvkc
MVCについて相談です。 お問い合わせフォームのような機能がある場合 Model:DBへの追加やメール送信処理を行う(/model/contact.php) View:お問い合わせフォームのテンプレートを選択(/template/contact.tpl) Controller:どのファイルを操作するか指定。上記の例なら「contact」 そして結果を受け取って出力 と言う考えで正しいでしょうか? そして、ControllerにModelの内容書いた方が早い気もするのですが、 それはやっぱり駄目なのでしょうか?
それでいいならもうMVCじゃなくていいじゃん 例えば半年放置して再開したときその真価が分かる
768 :
nobodyさん :2010/07/02(金) 16:45:38 ID:VD/AbeYD
コントローラをもっと肥大化させよう
VはテンプレにおまかせだけどMとCはどこで線を引くかいつも悩むな
771 :
766 :2010/07/02(金) 18:06:49 ID:tc4YOvkc
皆さんありがとうございます。MVCの考え方自体は合ってるのでしょうか? 自分が作っているシステムでは、Controllerが肥大化する事はないので Modelと分けなくても良いのではないか?と思っています。 ただ、コーディングを向上させたいので、MVCを勉強して どういう分け方をすればいいか学んでいます。 オープンソースのOpenPNEとかEC CUBEとか見てますが、 classファイルが複雑化されていて、元を辿るのに一苦労です。 コーディング的にはそれが正しいのかも知れませんが。
「分けてて良かった」っていう経験がないと理解は難しいかね 疎結合とか単純化とか後で楽するため的な無駄な作業だからなw 考えを保守とかバグ対応とかに向けたら少し分かるかも。
Pythonだったらクライアントもサーバーもいけるよ
いけるかどうかなら
775 :
nobodyさん :2010/07/02(金) 20:54:48 ID:asARGkCP
PHP初心者でver.5.3.2をダウンロードしようとしたんですが、VC9 x86などの意味は分かるのですが、 Non Thread SafeとThread Safeの違いが判りません。 これらはどういった機能で、どちらを使えばいいんでしょうか?
776 :
775 :2010/07/02(金) 21:14:48 ID:gGj5zy9Z
事故解決しました
777 :
nobodyさん :2010/07/03(土) 18:25:21 ID:84+K0MiS
ブレースの閉じ忘れじゃないかな
779 :
nobodyさん :2010/07/03(土) 20:06:53 ID:84+K0MiS
780 :
nobodyさん :2010/07/04(日) 02:22:50 ID:lkrZPMso
$config = DATA . $dataname . "/" . CONFIG_NAME; すいませんこれってどういうことですが?質問自体バカで申し訳ない
783 :
nobodyさん :2010/07/04(日) 03:35:25 ID:lkrZPMso
>>781 非常にありがたいのですが、できればヒントをいただけると幸いです。
<<784 サンクス
786 :
nobodyさん :2010/07/04(日) 10:38:00 ID:fEOSEN4h
>>783 良い質問は良い回答から。
「これってどういうことですか?」と言う質問は漠然としすぎて、
質問になっていない。
答える方も困るんだよ。
「やかんってなんですか?」って聞かれて
「金属です。」「お湯を注ぐものです」「お湯をわかすものです」
たくさん答えができてしまうだろ。
「やかんってどういう物質でできているんですか?」
という具体的な文章で質問しなさい。
中学生2年女子より。
改造しようと思ったけど、定数が分からないってオチ?
定数というか「どうしてこういう書き方してるんですか?」だと思うけどな。 質問の仕方もそうだけど、回答する側もある程度質問者の 意図するところを汲み取るようにしないと。相手は分からないんだから。 エスパー出来ない奴は答えるべきじゃないよ。
どうしてこういう書き方をしてるかどうかなんて分かるわけないじゃん書いた当人じゃないんだから 国語のテストかよ
>>789 俺ならこう答えるよ
「定数にする事で、共通ディレクトリや設定値を入れて
各ファイルで呼び出すが出来るから。」
定数を知ってたらこんな質問しないだろうし
>>787 だろうな
文字列の足し算がわからないのかなと思った。 ちなみに . 足し算ってなんの言語由来?
794 :
nobodyさん :2010/07/04(日) 17:06:01 ID:/aajFMKw
if (isset($_POST["title"]) && $_POST["title"]) { すみません、このifの条件文なんですが、どういうことなんでしょうか?; 変数がセットされていることと、もうひとつの条件がよくわからないです・・
true
!emptyだけでいい気もする
!= "" じゃ駄目?
798 :
nobodyさん :2010/07/04(日) 18:54:41 ID:/aajFMKw
うーん・・ $_POST["title"]がtrueってどういうことを意味するのですか?
800 :
nobodyさん :2010/07/04(日) 19:35:11 ID:/aajFMKw
>>799 みました
注意: $xが定義されていない状態で単に if ($x)としてしまうと
E_NOTICE レベルのエラーが発行てしまいます。
代わりに、empty()や isset()を使うかあるいは変数を初期化するようにしてください
このことですか?
いまいちわからないです;
if($_POST["title"] == 0)
って判断したい場合、$_POST["title"]が未定義の場合もtrueと判断される。
それを防ぐため定義チェック(isset)を追加したりする。
んで
>>794 の場合は条件的にissetは必要ないのだけど、クセかなんかで
issetを付けちゃってるだけだと思う。
PHPの設定次第では、未定義参照でエラーっす。 で、issetでチェックしてあれば、ショートサーキットで後ろの評価しないんで・・・
803 :
nobodyさん :2010/07/04(日) 21:59:15 ID:lkrZPMso
>>780 です。お返事ありがとうございます。
すいませんが、定数の定義付けってdefine("定数名","定数の値") でなくとも
できるのでしょうか?
どうしてこういう書き方をしているのかご教授お願いいたします。
どうして定数だと判断したの?
805 :
nobodyさん :2010/07/05(月) 01:21:12 ID:kve1q94K
constructの使い方について質問です。 class Main extends Sub { public function __construct() { echo $this->test; } } abstract class Sub { public function __construct() { $this->test = 1; } } $ob = new Main; というコードを書いたのですが、何も出力されません。 イメージ的には継承されたSubの値がMainに反映されて 結果が表示されると思ったのですが、継承元でconstructは無理なのでしょうか?
>>805 子クラスでコンストラクタを定義した場合は
明示的に parent::__construct() で呼ぶ必要がある
>>801 issetは必要。存在し、未入力じゃないことのチェックのイディオムだよ。
!=か!emptyでも同じやん
>>807 揚げ足で悪いが未入力じゃないというのは語弊がある
正しくは存在し且つNULL以外で初期化されている変数だと思う
810 :
805 :2010/07/05(月) 10:20:52 ID:???
>>806 ありがとうございます。上手くできました。
テキストボックスに0が入力されたらどうなるんだろうな
813 :
nobodyさん :2010/07/05(月) 13:26:37 ID:E/YNQXWp
if (isset($_POST["title"]) && $_POST["title"]) { } else { echo "titleが未入力ですよ"; } 未入力チェックってこういうことだと思うんだけど、 "0"の場合に未入力と判定されちゃわない? 質問になってしまったのでID出し。
emptyは?
emptyは0を「存在しない」扱いしたはず
未定義でエラー出さんだけで ! つけたのとか、 == falseと同じでしょ。
>>813 される
それをやりたいなら
if(isset($_POST["title"]) && $_POST["title"] != "") {
}
とするべき
== null もよく見るけど、あれと == "" とは違うの?
test
== null って有効だっけ? is_nullをいつも使っているんだが
だからー !== とか === 使えって。 == NULL って、 false でも 0でも 空の配列でも "" でも 通るぞ。
書き込みできなくてイライラしてる人が沢山いるんだろうな
回答者は●を買いなさい
また大規模規制でもあったのか?
通年です
モリタポもらってp2お勧め
そろそろ夏休みの季節か・・・
大学の夏休みはたしか10月までだっけ?
830 :
794 :2010/07/05(月) 17:07:39 ID:XGgM750L
むずかしいなぁ・・
$_POST["title"]がtrueを返すときの条件が比較表?みてもわからない;
http://www.phppro.jp/school/phpschool/vol13/2 今このスケジュール表のプログラミングしてるんですが、このページの下のほうにある
<dl>
<dt><label for="schedule-title" id="label-title">タイトル
</label></dt>
<dd><input type="text" name="title" id="schedule-title"
value="<?php print(htmlspecialchars($_POST["title"],
ENT_QUOTES)); ?>" /></dd>
<dt><label for="schedule-body" id="labe-body">内容</label></dt>
<dd><textarea name="body" id="schedule-body">
<?php print(htmlspecialchars($_POST["body"], ENT_QUOTES)); ?>
</textarea>
</dd>
</dl>
これは正しいのですか?
何回試してもエラーが出てしまいます。
Undefined index: title in <b>C:\Apache2.2\htdocs\schedule_edit.php</b>
on line <b>121</b><br />
<br />
<b>Notice</b>: Undefined index: body in <b>C:\Apache2.2\htdocs
\schedule_edit.php</b> on line <b>125</b><br />
>>830 Undefined index: となってるから
$_POST["title"]と$_POST["body"]を空で送信(submit)してるでしょ
空で送信されたら未定義になる。
未定義なのにprintさせようとしてるからNoticeがでてる。
正しくはissetなどで確認してから・・・となるんだろうけど
この場合のNoticeは無視しちゃう所多いよ
833 :
nobodyさん :2010/07/05(月) 17:41:56 ID:qHUIRNCb
大角本がいいよ
ひろゆきオススメのあれか?w
835 :
nobodyさん :2010/07/05(月) 18:26:03 ID:E/YNQXWp
>>817 formで送られるデータって文字列として取得されることが保障されてるんだっけ?
それなら !== ""でよさそうだけど。
>>830 phpの内容がわからないのでどこが121行目かちょっとわからんとです。
>>831 最初のフォーム表示時じゃないの?
空で送信しても string(0) "" にならない?
入力欄が空なんじゃなくて、$_POST["title"]を送信してないって意味では
まだやってんのか。 所詮はただの配列なんだからちょこっとコード書いてみりゃ分かるだろ。
if( isset($_POST['title'][0]) ) これだけでおk、
誰も明確な回答を示さずにぐだぐだやってる感じがいいよね
その内、派閥的な論争が始まる
>>840 空送信し放題じゃん
!==か、分かりづらければisset && != とかでいい
この辺は好みだよね
それでおkってことは、フォームデータは文字列として取得することが 保障されているってことでいいのかしら。 ラジオボタンとかでvalue=1とかしてても勝手にint変換されたりしない、でおk?
リクエストパラメータは常に文字列ってマニュアルの何処かに書いてあったはずだからググれ
ありがとう!
もはやバッドノウハウ系な気が
PHPはフィールド名に[]が付いてたら配列に展開するので
文字列か配列かのどちらかになる可能性がある
コードゴルフならともかく初心者に
>>840 を教えてるのが居たら袋叩きにしていいぞ
コードが短ければ玄人ってわけじゃないんだし、 第三者が見てわかりやすい記述を心がけようぜ。
そんなに叩く程か? Cのコードゴルフじゃあるまいし全然原型とどめてるじゃん。
>>852 application/x-www-form-urlencoded の title[0]=0 を受け入れるが意図した挙動じゃないだろ?
入力値を信用したコードの時点で使いものにならない
そもそも空文字列の時に[0]は\0だったりしないのかな。C的な発想で申し訳ないが。
>>835 name属性がない場合 null
name属性があって入力がない場合 ""
よって
if( isset($_POST['hogehoge'] ) && $_POST['hogehoge'] !== "")
{
}
じゃねーのかい!
こんな基本的なところで何騒いでいるんだ・・・
857 :
nobodyさん :2010/07/06(火) 11:22:03 ID:1Cm5WNj+
よくフレームワークやMVCのコードを書く時、URLが
http:// (ドメイン)/(コントローラー)/(アクション)
という形になっているのを見かけます。
例)掲示板に投稿
http://hoge.com/bbs/entry それで思ったのですが、アクション(メソッド)が指定されているURLに
直アクセスされた場合、どうするのでしょうか?
POSTのデータが送られてきたか否かで判断して、直アクセスの場合は
元のページにリダイレクトする、とかそう言う事をしているのでしょうか?
アクションを直接GETとしてURLに含めるのは、セキュリティ的に疑問です。
セキュリティ的にGETでだめならPOSTでもだめだろ。
そもそも、アドレス関係ない話じゃん。
860 :
857 :2010/07/06(火) 12:07:00 ID:1Cm5WNj+
>>858 GETだとフォームを介さなくてもアクセスできるから
POSTより緩いと思うんですよね
>>859 857に書いたようなURLがformのactionにしていされていたら
検索エンジンのクローラーに取得される可能性があります。
そうなると、セキュリティ的にまずいと思うんですよ。
セキュリティの問題でクローラーがどうのとか、そこが変なんだよ。
cakephpかなんかで適当にサンプル作って、ソース見ればいいよ。 あっさり解決するから。
863 :
857 :2010/07/06(火) 13:34:39 ID:???
わかりました。そうします。
セキュリティがまずいっていうか、クローラーやトレンドマイクロからスパム投稿される
キャプチャでもおいとけば?
置けばどうなるの?
868 :
nobodyさん :2010/07/08(木) 08:59:00 ID:Tsw8WKYJ
【PHPのバージョン】5.2 above 【質問内容】 PHP で文字列を組み上げるのに、Ruby でいうところの #{} 的な インラインテンプレートみたいなのってないでしょうか? sprintf と + で処理の実現自体は可能なんですが、なんかごちゃごちゃしてしまうので もうちょっとエレガントな記法ってないのかなと思って質問する次第です。 よろしくお願いします。
つSmarty
870 :
868 :2010/07/08(木) 10:05:54 ID:???
あぁ、Smarty 使ってるプロジェクトならいちおそれありなのかなぁ。 ただ、それだけのために Smarty 組み込んだところで、余計可読性下げそうでちょっと勘弁。 ありがとうございました。
可読性が下がることはないと思うけどな。 まあ、自分でテンプレート処理書いちまえばいいんだと思うけど。 実際は "This is a {$pen}";ですむんじゃねーの?
872 :
868 :2010/07/08(木) 11:04:41 ID:???
m9(・∀・) ソレダ 単純に "{$var}" で展開されたのね・・・万事解決です、本当にありがとうございました。 ってかくと感謝してなさそうに見えて不思議ですが、ほんとに助かりました。ありがとう。
Rubyの#{}が何なのか分からなかったのはオレだけ
874 :
868 :2010/07/08(木) 11:31:52 ID:???
この手の記述って便利なんだけど、ググれないのが困るんですよね。
.htaccessの話なのですが、 アクセス規制用に以下の部分を別ファイルにしたいのです。 deny from 192.168.0.11 deny from 192.168.0.12 deny from 192.168.0.13 deny from 192.168.0.14 みたいな感じで。 httpd.confを触れるなら include ファイルパス で、できるのですが。。。。 .htaccessではできないんどえしょうか?
なぜここで聞く
878 :
nobodyさん :2010/07/08(木) 22:38:14 ID:lGIUgqyl
勉強中の初心者です。PHP+MYsqlで質問です。 DB名を、配列に取得して、プルダウンメニューで選択するようにしたいのですが ボックスに表示する部分なのですが mysql_list_dbsを使ってmysql_fetch_arrayでいけますか?
879 :
nobodyさん :2010/07/09(金) 03:37:15 ID:xzt7gYmY
同じくPHP + MYSQLについて。 ユーザー定義関数内でデータベースを扱う場合、 各関数内に //MySQLに接続 $con=mysql_connect(DB_SERVER, DB_USER, DB_PASS); //データベース選択 mysql_select_db(DB_NAME,$con); として一々データベースに接続しているのですが、 パフォーマンスは悪くならないのでしょうか? みなさんがどうしてるか知りたいのです。 もし一々接続しなくてもいける方法、 もっとパフォーマンスが良くなる方法などがあればご教授ください。
クラスにしてプロパティに入れておく
882 :
nobodyさん :2010/07/09(金) 17:23:12 ID:7d5uHpFB
PHPにインターフェイスは実装されていません
>>879 同じ引数で接続する場合は既存の接続を再利用してくれるが
USE `database` を毎回発行するのは無駄なので、
リソースをどこかにプールしておくべき
function get_connection() {
static $c;
if (!$c) {
$c = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
mysql_select_db(DB_NAME,$con);
}
return $c;
}
886 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 04:56:21 ID:WdQ5SbfS
今まで問題なく動いていたシステムが鯖移転で一点不具合でてまして、にっちもさっちもな状態なので助言いただきたく思ってます。 外部へのコネクションが極端に時間がかかるのです。 普通のテキストを読み込むだけで10〜20秒程度要します。 厳密には関係ないかもですが、ネットワーク帯域自体は細いわけではなくサイトは瞬時に表示されます。 ただのこの外部へのコネクション時は非常に時間がかかるんです。 PearのHTTP_Clientを使って接続しているのですが、何か情ありませんでしょうか?
887 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 04:58:08 ID:WdQ5SbfS
忘れてました。 PHPは5.1,6です。
888 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 05:37:00 ID:4d57FSnB
<?php $fruit = array("Apple" => "りんご", "Orange" => "みかん", "Grape" => "ぶどう"); で例えばAppleの中にある文字が本当にりんごだった場合のみ 処理を続行するようなことってできますか? もしAppleに「みかん」が入っていたら処理を中断するような感じにしたいんですけど
889 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 06:07:03 ID:WdQ5SbfS
>>888 if ($fruit['Apple'] === 'りんご') {
echo 'Appleはりんごだよー';
}
else {
echo '中断するよ';
}
887です。
原因はDNS周りにありそうです。汚しましてすいませんでした。
890 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 12:37:46 ID:2QvhDB/5
PHP掲示板で、携帯とJaneとPCに対応しているやつはありませんか。
891 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 12:41:51 ID:2QvhDB/5
892 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 14:58:38 ID:g8ZkkqTi
文字列の末尾に指定文字が含まれているか 調べるにはどうすればいいのでしょうか? $text = 'testName'; $type = 'Name'; if (strstr($text, $type)) { echo $text."に".$type ."は含まれています"; } とするれば一応出来るのですが、「末尾が$typeである」 という条件を加えたいと思います。やり方を教えてください。
893 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 15:01:24 ID:2QvhDB/5
正規表現使っとけ。 PHP5とかからだと、文字列の後方検索に対応していたはずだけど。 多くで動くようにするなら、正規表現。
894 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 15:10:36 ID:g8ZkkqTi
ありがとうございます。自信ないけど、こんな感じですかね? if(preg_match("/(.*)+" . $type . "$/", $text, $array)){ echo $text."に".$type ."は含まれています"; }
895 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 15:15:33 ID:2QvhDB/5
たぶんそんなかんじ。聞くより動作みたほうがいいでしょ。
896 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 15:21:46 ID:g8ZkkqTi
動作はするのですが、 もし別の条件で通ったり通らなかったり無いか自信が無くて・・・ とりあえずこれでいきます。
こんなのでわざわざ正規表現使う必要ないだろ if( substr( $text, 0-strlen($type)) === $type )
898 :
794 :2010/07/10(土) 17:45:08 ID:9rtjPRpZ
.= ってどういう意味ですか?
$title = "baka"; $title .= "test"; echo $title; //bakatest
900 :
794 :2010/07/10(土) 18:18:52 ID:9rtjPRpZ
ありがとう!
901 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 22:32:13 ID:0jjmMoFC
「elseif」と「else if」、どっち使ってます? ちなみにPHPのネストの上限ってあります? 後者が内部的にはネスト扱いとなるなら、関係あるのかなーと思って。
902 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 23:11:38 ID:o7F/R3R5
903 :
901 :2010/07/10(土) 23:44:49 ID:0jjmMoFC
>>902 なるほど〜。どうもです。
インタプリタ的には前者を使った方が優しいかな。
904 :
名無しさん@そうだ選挙に行こう :2010/07/11(日) 01:19:52 ID:C1oKqEx5
クラスが継承されているか否か調べる関数か、書き方があれば教えてください
>>904 function is_class_extended($base) {
foreach (get_declared_classes() as $super) {
$class = new ReflectionClass($super);
while ($class = $class->getParentClass()) {
if ($class->getName() === $base) {
return true;
}
}
}
return false;
}
echo 'Exception is extended? ', var_export(is_class_extended('Exception'), true), PHP_EOL;
echo 'stdClass is extended? ', var_export(is_class_extended('stdClass'), true), PHP_EOL;
get_parent_class($object)
class_parents($object)
908 :
名無しさん@そうだ選挙に行こう :2010/07/11(日) 19:08:50 ID:aH0kYx2z
preg_match関数で正規表現の複数指定方法について ./aaaディレクトリ内においてディレクトリ名がbbb/ さらにその中のccc/までたどり着くには どういった記述がよろしいのでしょうか
日本語でおk
910 :
nobodyさん :2010/07/12(月) 18:29:55 ID:2AUEyQFR
911 :
nobodyさん :2010/07/12(月) 20:09:58 ID:o18xCfm1
$sql = "SELECT user.name,category.name FROM user INNER JOIN category USING(category_id)"; $res = mysql_query($sql); while($row = mysql_fetch_array($res,MYSQL_ASSOC)){ print_r($row); } とした時に、nameの部分が被って配列に代入されます。 フィールド名の指定を「user.name, category.name AS cate_name」 みたいに変更する以外に方法はないのでしょうか?
912 :
nobodyさん :2010/07/12(月) 21:29:01 ID:r9oprwp5
mysqli、PDOとか使えば、SQLの段階でasるのは避けられるけど、 結局bind時に変数名がかぶるから、asった方がいいと思う。
>904 その実装方法は地雷だからやめた方がいい。 「必要なメソッドが実装されているか」だけを検査すべき。 スマートにやるならインターフェイスを使う。
>>913 クラスが継承されている場合、継承元のクラスファイルを読み込む
ような仕様がしたいのですが、これも地雷になるのでしょうか?
915 :
nobodyさん :2010/07/13(火) 00:43:05 ID:lEQMzPMj
タマゴが先かニワトリが先か。
ニワトリが居ないと卵は産まれない
>914 その場合、親クラスは絶対に読み込み済。だから読み込む必要などない。 やってみればすぐ分かるが、親クラスを読み込んでいない状態で子クラスは宣言できない。
919 :
904 :2010/07/13(火) 10:11:14 ID:???
>>917-918 ありがとうございます。
クラス定義する時、どのファイルが必要か分からないようにしたいんです。
フレームワークのように、柔軟に作ったファイルが読み込まれるような。
オートローディングは使っているのですが、
PHP4に対応させたい場合、どうすればいいかと思いまして。
また、918さんのような書き方もB.phpを各ファイルに書かなくてはいけず、
効率が悪いと思います。
なんだ、オートローディングのPHP4対応の話と言えば早かったのかもね。 俺も困ったけど諦めた。
もういいかげんPHP4は捨てていいと思うが
922 :
904 :2010/07/13(火) 10:35:05 ID:???
万が一の事を考えて想定していたのですが、 捨てても良いかもしれませんね。Class定義しにくいし。 オートローディングでやります。
923 :
nobodyさん :2010/07/13(火) 20:22:51 ID:hmJ3ix43
xmlのエレメントを再帰的に配列に格納したいと思いますが、 いい案が思い浮かびません。 xsltのように捜索してテンプレートにマッチさせ値を取得できればと思っています。 xpathを利用しても、取り出す要素は固定化してるし。 何かいい方法はありませんでしょうか。
require_once 'Zend/Json.php'; $array = Zend_Json::decode(Zend_Json::fromXml($xml, true));
925 :
923 :2010/07/13(火) 22:32:14 ID:hmJ3ix43
924さん、ありがとうございます。 さすがに、アトリビュートも取得する方法はありませんでしょうか。 一応取得時にarrayでなく、objectも指定しましたがアトリビュートの値までは 取得できませんでした。
false にすれば @attributes でのるはずです。
927 :
923 :2010/07/14(水) 01:19:28 ID:ez+KFUZ4
すごい!載りました。 ありがとうございました。
928 :
nobodyさん :2010/07/14(水) 08:49:45 ID:XR87xhsM
<?php $b = '$a = "あいうえお"'; var_dump($b); $aの変数を取り出す方法はありませんでしょうか。
何がしたいかよくわからんが、 $b = $a.'="あいうえお"'; じゃないのか? シングルクォートで囲んでたら文字列扱いされるよ
930 :
nobodyさん :2010/07/14(水) 09:42:02 ID:XR87xhsM
文字列をphpのコードとして実行させたいです。
932 :
nobodyさん :2010/07/14(水) 10:00:23 ID:XR87xhsM
ありがとうございました。 javascriptみたいですね。
934 :
nobodyさん :2010/07/14(水) 10:58:15 ID:XR87xhsM
単純にevalで評価するところとか。
スクリプト言語っぽさがでてるところだね。
>>933 は読み間違いをしたんだと思う。
936 :
nobodyさん :2010/07/14(水) 16:43:45 ID:oe5o0zrz
ADODBのCacheFlushが全削除かSQL文ごとにしかキャッシュを消せないようなのですが、 テーブルごとのキャッシュを消すためになんかいい方法ないでしょうか? 今のところSQL文を別テーブルに保存してそれを消すときに取り出してひたすらforeachしようかと思っているのですが。
スレチ失礼。ATNDより、PHP関連の勉強会を紹介します。
■Ktai Library for cakephp 勉強会@関東
URL:
http://atnd.org/events/6209 日時: 2010/07/17 11:00 to 15:00
場所: マイ・スペース&ビジネスブース池袋西武横店
参加条件: Masa-Pさんの本「PHPで作る携帯サイト デベロッパーズガイド」を持参、かつ4章までを自力である程度実装できている、もしくは出来る方
■OpenPNE3で学ぶsymfony勉強会
URL:
http://atnd.org/events/6255 日時: 2010/07/24 15:00 to 17:00
場所: 手嶋屋新宿御苑オフィス
内容: この勉強会は毎回OpenPNE3の各機能、仕様にフォーカスを当て、ベースフレームワークであるsymfonyを理解していく勉強会です。
参加者はみんなsymfonyに興味のあるプログラマです。Webエンジニアとのネットワークづくりにもお役立てください。
■Python4PHPer 第7回講習会
URL:
http://atnd.org/events/6344 日時: 2010/08/12 10:00 to 22:00
場所: 国立オリンピック記念青少年総合センター
内容: Python未経験者向けの、PythonとGoogle App Engine (GAE) の入門講座です。
■第11回 LOCAL PHP部勉強会
URL:
http://atnd.org/events/6443 日時: 2010/08/28 14:00 to 16:30
場所: 札幌市産業振興センター セミナールーム9
スレチ失礼って何もしらずに書き込むよりたちわりいな。しね
しかもマルチだしな
Masa-Pさんの名前を出していろんなスレに書き込むとは・・・とりあえずMasa-Pさんを恨むわ
まさPとやらを叩けばいいってことだな?Masa-Fの兄弟か?
スパムにマジレスかっけー
マジレスしてないと思うけど
スレチ失礼(キリッ 分かってんなら書き込むな氏ね
ハァ?
何に対して怒ってんだよ
947 :
nobodyさん :2010/07/16(金) 15:29:50 ID:SH5lEMBU
WordPressで先頭に固定表示した投稿の、タイトルや投稿日時などを非表示にするにはどうしたらよいでしょうか。 固定表示した投稿をページのようにまっさらな状態にしたいのですが。
自己解決しました。 index.phpに、以下の方法で該当部分のコードを囲んで出来ました。 これを機にPHPの勉強をしたいと思います。お騒がせしました。 <?php if (is_sticky()) {?> <?php } else{ ?> 該当部分のコード <?php } ?>
949 :
nobodyさん :2010/07/17(土) 04:00:38 ID:thvaY0IW
質問させてください 画像をアップロードする時にリサイズしようと思っているのですが リサイズ後の画像が真っ暗です どこが悪いのでしょうか? $src = @imagecreatefromjpeg($move_file); $dst = imagecreatetruecolor($new_width,$new_high); imagecopyresampled($dst,$src,0,0,0,0,$new_width,$new_high,$file_width,$file_high); imagejpeg($dst,"./test.jpg");
$file_width どこで出してんだ?
一部しか出してこなかったらその変数がカラかどうかも分からないな
952 :
nobodyさん :2010/07/17(土) 21:59:34 ID:z9LmUGB3
Apacheの公開フォルダに入れたWebアプリケーション等のソースコードを、ブラウザからは実行できるものの、ソースコードは他人に見られないように保護するような設定って出来るんでしょうか? もし出来るのであればWindows、Linux共に方法を知りたいです 例えば友人のパソコンにWebサイトなどを作ってやってApache下に置いたとしても、友人がそのソースコードを真似て他に配布したりというのを避けたいのです Linuxであればパーミッションでと思ったのですが、相手のパソコンなので、普通にroot権限だとパーミッションなんか関係なくなるので意味が無いなと思いまして どうしたらいいのでしょうか?
そんな友人と言えない仲なら何もしないでスルーする。
難読化でいいんじゃないですか
友人のパソコン使わせてもらって何を言ってるんだか
956 :
nobodyさん :2010/07/18(日) 12:13:05 ID:MZPafWAG
そもそもOSは何だ?
957 :
952 :2010/07/18(日) 13:21:53 ID:???
確かに、おかしな質問だということは分かるのですが、あまり自分のコードを他に使って欲しくない理由がありまして 友人のパソコンを使うのではなく、自分で開発したものをフォルダ内に入れるということです OSは相手はWindowsXPとか7のHome版です 自分はCentOS使ってますけど 難読化以外には何か対策は無いのでしょうか? 例えば何かソフトでそのフォルダへのアクセスをガードできたとしても、ブラウザ上で実行が出来なければ意味が無いですし 皆さんは商用の場合はどのような対策をされているのでしょうか? そのままシステムを丸々他にコピーされても困ると思うのですが 例えcopyrightを書いていたとしてもさほど関係なさそうですし
他に使って欲しくないなら友人のパソコンに入れなきゃ良いだけ。 なんでそれが友人なの?最初から隠さず商用と書けば良いのに。 商用なら色々方法あるし。
ライセンス契約で縛る。本当に価値のあるソフトウェアの場合、損害賠償額が凄まじい事になる。 最近は「オープンソースにする」という裏技もあるが。 友人と契約なんてできない?そもそも人のコードを勝手に盗む、あるいは盗むかもしれないと疑わないといけないような奴は友人ではない。
960 :
952 :2010/07/18(日) 13:57:38 ID:???
>>958 まぁ友人に頼まれてって感じなのですが、個人で使うならいいのですが、おそらく他人のパソコンにも入れるだろうなと思いまして
例えばWindowsのダウンロード→インストールするタイプのフリー版以外のソフト(詳しく知りませんがCだかVisual C++なんかで作られたものなど)は簡単には他のパソコンには入れられませんが、
PHP何かで作ったものはApache下に置いたフォルダさえあれば言い訳で、どう対処するんだろうと疑問に思いまして
自分は自分の為だけにしか作ったことが無いもので、そういった場合どうするんだろうと思いまして
>商用なら色々方法あるし
具体的にはどのような対処法があるのでしょうか?
もし宜しければ教えていただきたいです
>>959 ライセンス契約ですか
確かにそれが一番だと思います
ただ、興味本位で聞かせていただきたいのですが、その場合中にはそういうのを無視して配布するような人もいて、こちらがそういう相手を認識できないこともあると思いますが、
そういう場合はどのようにするのがいいのでしょうか?
よく考えてみて、こういう問題ってPHPは難しいな、と思いまして
レン鯖かなんかでwebapi的に動かしたら?
962 :
952 :2010/07/18(日) 16:47:37 ID:???
>>961 確かにそのような事も考えたのですが、アプリケーションによってはlocalhost/のようにネットに繋がなくても使えるものもありまして
特にDBを動かすようなものは
そこで振り返ってみて、PHPでそういう話題とか記事を見聞きしたことが無いな、と思いまして質問させてもらいました
そういう場合に自分ではどうにも対策が分かりませんでした
ローカルで動かさすならローカルにコード置くしかないだろ
964 :
nobodyさん :2010/07/18(日) 18:42:48 ID:VLBtU4j9
おかしいな人。 それはその人を信頼するしかないんじゃないの? もしくは自分で自宅サーバーを作ってその友達しか入れないように するとか。 後はライセンスだな。でもこっそりほかの人に配布したら 意味ないし、つーかPHPは難しいなというよりあんたが難しい。 後別にlocalhostでの起動ならphpでなくてもよかったんじゃないの?
965 :
nobodyさん :2010/07/18(日) 20:06:43 ID:WiuHCw18
リクエストされたURLを取る方法を教えてください。 ぐぐって$_SERVER ['REQUEST_URI']とか試しましたがドメイン部分が取れません。 他にも色々試しましたがドメイン部分移行の/の後しか取れません。 PHP5.2.11でCentOS、Apache2.2です。
$_SERVERをvar_dump()するだけで解決するのに
>>952 システム屋なんかはシステム入りのサーバーを丸ごと貸し出して
内部には入らせないようにするとこもあるらしいけど。
あくまで使用のみの権限にして。まあWEBAPIみたいなもんだけど。
難読化は解読が難しくなるだけで、ブラウザ上でも実行可能だけど。
実は以前これで揉めた事があるので、良い対策方法を俺も知りたい。
中の確認できないようなサーバーを社内にって
phpをc++に変換して実行
>>967 PHPはこの点は難しいよね。
ちょっとPHP知ってる人がいればすぐに真似されたり転用され得るから。
例えばVC++で作られている(と思われる)ソフトなんかは例えばテキストエディタで開いても文字化けしてたりして、詳しくない人はビビってそれ以上やらないだろうけど。
難読化はただ相手に転用される時に判別付きにくくする程度の気休めだろうけどね。
>>969 自分はC++はやったこと無いんだけど、C++に変換とか出来るの?
またそういうので対策になるの?
971 :
nobodyさん :2010/07/19(月) 16:14:03 ID:2i1rbnSf
コンパイルすりゃーいい
すみません 教えてください。 whileを使ってHTMLでテーブル作成するとき、 <?php while ($row1 = mysql_fetch_array($res1)) { print "<tr>\n"; print "<td><b><a href=./e=&view_id=".$row1["s_name"].">" . $row1["s_name"]."</a></b></td>\n"; print "</tr>\n"; } ?> <td>を<td align="center">とか余分なタグを入れるとエラーがでます。 <table>も同じくです。printするだけなのに、どうしてエラーになるのでしょう?
"を\"でエスケープしてみたらどうなの
974 :
nobodyさん :2010/07/19(月) 17:51:26 ID:sHIUCWJE
レッツPHP!様の新着ブロガー(
ttp://php.s3.to/net/ )というプログラムを利用しようと思い
RSSサイトURLをひとつだけ設定し、記事表示件数を5としました。
すると表示される一番最初の記事だけが表示され
あとの四行が全て(1970/01/01)と表示されてしまいます。
これは何がいけないのでしょうか?
975 :
sage :2010/07/19(月) 17:53:10 ID:Ug5vBszx
print "<td><b><a href=./e=&view_id=".$row1['s_name'].">" . $row1['s_name']."</a></b></td>\n"; シングルクォート使っちゃいなよ。
>>974 var_dump($ch) してみたら?
>>973 .975
ありがとうございます。 HTMLをprintする時は注意が必要なんですね。
問題点が見えました。
>HTMLをprintする時は注意が必要なんですね いや、そうじゃなくてな、 文字列の中に(中略)というわけでそれを言うなら「時は」じゃなくて「に限らず」だな。
次は $str = "<td><b><a href=./e=&view_id=".$row1["s_name"].">" . $row1["s_name"]."</a></b></td>\n"; でエラーになります>< だな
別に難読化しても解読できるような友人なら初めから
>>952 に製作を頼まなくね?
だから難読化で無問題だと思う。
実はPHPの上記のような商用の場合の対策はあるのだよ そのパソコンでしか使えないようにするような事は ただ、コードが複雑になってしまう 難読化に関してはまぁしてもしなくてもいいんだけど、出来るならした方がいいと思うね
982 :
nobodyさん :2010/07/21(水) 02:35:12 ID:FRhRPQxh
mb_convert で変換してるなら mb_detect_order の設定が怪しいかも・ それか自前でへんなエスケープしてるとか
985 :
nobodyさん :2010/07/22(木) 00:31:23 ID:9L3V/lR5
本当にくだらない質問なんですが $cgi = $context->getCgi(); この場合の「->」ってどういう働きをしているのでしょうか
>985
>5 の4。ちなみに名前は「アロー演算子」と言うのだが、あまりこの名称を使っている人を見ない。
つうかこのスレだけで数回出てきているので「->」で検索。
まずは配列(array、連想配列)を思い浮かべてくれ。
$user["name"]とか$user["age"]とか、そういう変数を複数持てるアレだ。
配列だとキー名は単なる文字列だが、オブジェクトの場合はキー名の代わりに変数名みたいなものを使える。
$user->age とか $user->name とかいう形でアクセスできる。 ちなみにうっかり$user->nmae とかタイプミスするとエラーになる。
んで、オブジェクトを使っている場合は、値だけではなく「関数」も持たせられる。
$user->get_price()とかすると、$userの持ってるget_price()という関数が呼び出される。
この関数の中では、$user->ageや$user->nameのような、「オブジェクトの持つ変数」も使えるし、$user->get_gender()のような他の関数も(書いてあれば、だが)呼べる。
詳しくはマニュアルにて熟知すべし。
http://jp2.php.net/manual/ja/language.oop5.php
987 :
nobodyさん :2010/07/22(木) 01:56:48 ID:9L3V/lR5
>>986 すばらしいお返事です!ありがとうございました!
テンプレにあるんだけどな!
phpでローカルのプログラムをexec() で実行すると遅いんですが、 なにか理由があるのでしょうか。
990 :
nobodyさん :2010/07/22(木) 14:09:39 ID:NJJj5G9E
IP抜かれちゃったぜ
サイトもソースも見てないけど、どうせ排他制御してないんでしょ
993 :
nobodyさん :2010/07/22(木) 14:55:10 ID:NJJj5G9E
flock($file,LOCK_EX); はしてるけどやり方が間違ってるのかな?
parse_ini_fileで読み込むiniファイルの仕様についての まとまった説明ってどっかにない? がんばって探してる けどどうにも見つけられない
>>993 やり方が間違っている。
排他制御対象のファイルは読むときもロックしないとだめ。
そうじゃないと書き換え中の半端な状態のファイルを読んで
しまうことがある。
"w"でfopenするとその時点でファイルが空になるので、その
あとでflockしても手遅れ。ロック外で書き換えたことになる。
996 :
nobodyさん :2010/07/22(木) 16:54:25 ID:NJJj5G9E
次スレはどこ?
999
このスレは1000の風になりました
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。