【PHP】下らねぇ質問はここに書き込みやがれ 34
PHPに関する質問用スレです。ここならお前の下らない質問に回答があるかも知れません。
まず読め→【PHP マニュアル】
http://www.php.net/manual/ja/ PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 33
http://pc8.2ch.net/test/read.cgi/php/1164209222/ ◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
http://pc8.2ch.net/php/subback.html ・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
http://pc8.2ch.net/db/subback.html ・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
【簡易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プログラムとして実行された結果になる。
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に保存?
→ 好きにしてください
「エスパーきぼんぬ」「氏ね」「(゚Д゚)ハァ?」等のレスを貰う八ヶ条。 1. ハードウェア、OSのバージョン等には一字一句触れない。 2. 大切な個人情報が漏れるとまずいので、己の行った操作、変更などは秘密。 3. エラーメッセージの類は決して書かない。「エラーが出るんです」で留める。 目の前で生じている現象をそのまま具体的に書くなどもっての外。 事実より俺様の脳内解釈を優先すべし。 4. 独り言文体で必勝。 「…なんだけど、どうすればいいのかなぁ」「何が悪いんだろう?」 5. 「急いでいます」「困っています」等、自分の都合を全面に押し出す。 6. もう試したことを得意げに指摘してくる奴には、厳しく対応。 「それが駄目だったから質問してるんです」「それはもう試してみて駄目でした」 "どう"だめだったのか、本当に実際それを行ったかどうかなんか問題じゃない。 7. ストレートに答えを書かないもったいぶったレスには、逆切れで対応。 「だからどうすればいいんですか?」「分からないなら引っ込んでろやゴルァ」 示されたURL等を参照するなんて態度は、回答者を甘やかすことに他ならないので 絶対に避ける。 8. 情報は小出しに。 「エスパーきぼんぬ」 補足 上の八ヵ条を「一つでも」満たす者は質問者として不適格だということだ。 そのような悪い質問に対して答えられるのは, 質問者の意図をすべて汲み取ることのできるエスパーでもなければムリ, という意味であって,決して,高度な技術を持つユーザに対する尊称でなはい。 まちがっても「エスパーの方,回答お願いします」 なんて痛い質問するな。つうか氏ね。
11 :
nobodyさん :2006/12/08(金) 08:08:07 ID:UlcPY8MZ
スレが切れてしまたので再掲です PHPにてディレクトリ内のファイルの数を取得するにはどう記述すれば良いのでしょうか? ディレクトリ内に他のディレクトリは有りません。ファイルだけです
13 :
nobodyさん :2006/12/08(金) 09:54:02 ID:ewFyIfPg
>>11 $d = new DirectoryIterator('path');//調べたいディレクトのパス
$c = 0;ファイル数
for ($d->rewind(); $d->valid(); $d->next())
{
if ($d->isFile()) $c++;
}
>>13 こんな意味不明なことがビジネスになる時代か...
気持ち悪い。はっきり言って異常。
>>15 お前の考えに一票。
17 :
nobodyさん :2006/12/08(金) 10:08:29 ID:O/tUI87z
明示的に変数を宣言しないと使えないようにはできませんか? よく変数名をちょっと間違えたまま気づかず、 バグを発見するのにすごく時間がかかることがあるので。
>>17 無理だねえ。
PHPのいい所でもありいい加減なところでもあるから、
仕様だと思って、IDEでの開発をお勧めする。
宣言されてない変数だとエラー出るようなIDEも結構あると思うから。
>>13 >>ここの買取口数とメールフォームの口数を買い取り口数にマイナスする計算の連動
何をしたいのか良く分からんのだが
>>17 error_reporting(E_ALL)は?
正規表現による置き換えついて質問なんですが、 \t<p>あいうえお</p> (\tのとこはタブ) これの、タブと、<p></p>をとりのぞいて あいうえおと表示する正規表現を書きたいのですが、 $a = "\t<p>あいうえお</p>"; $b = preg_replace("/<(.|)p>/", "", $a); $c = preg_replace("/\x09/", "", $b); print $c; 今のところこんな感じで、$bで<p></p>を、$cでタブをといった感じで 分けて処理しています。 $bで、両方とも一緒に取り除くような書き方はできませんでしょうか? 今後似たようなことをしたい場合、さらに取り除きたい条件が増えた時、 どのように対処するのかが知りたいので、 一緒にとりのぞくやり方があったら教えていただけませんでしょうか? ちなみに$bの<(.|)p>というのは、勘で書いたらできていたので、 もっと適切な書き方があれば教えていただきたいです。
23 :
21 :2006/12/08(金) 11:09:46 ID:???
>>22 すみません。
一応そこで「正規」「表現」「正規表現」のキーワードで探したのですが、
みつからなかったもので・・・
あと正規表現って言語を超えて全て共通なのでしょうか?
>>23 >あと正規表現って言語を超えて全て共通なのでしょうか?
違う(ついでに、スレも)。
25 :
22 :2006/12/08(金) 11:29:59 ID:???
そもそもタブは、タブ除去関数あるだろうが
27 :
nobodyさん :2006/12/08(金) 11:39:38 ID:vLtHeZoc
mysql_query("update table_$t set col_$r = '$q' where col_1 = '$max2'"); 上のように、table_$tのcol_1の値が$max2である場所のcol_$rに、$qというデータを挿入する というコマンドを書いたのですが、データが挿入されません。 $qと$max2を囲っているクオートの使いかたを間違っている気はするのですが、どう直せばいいのか解かりません。 誰か教えてください。m(_ _)m
28 :
21 :2006/12/08(金) 11:40:37 ID:???
>>24-25 どうもありがとうございます。
誘導先が参考になりそうなのでまずはちょっとスレを眺めてみたいと思います。
>>26 そんなもんがあるんですね。後ほどマニュアルひいてみます。
31 :
nobodyさん :2006/12/08(金) 12:13:42 ID:UlcPY8MZ
32 :
nobodyさん :2006/12/08(金) 12:18:10 ID:EP/lKf3+
指定したディレクトリ内のファイルを削除して 最後にそのディレクトリも削除するという仕組みを作っています。 $dir_name="test"; if(file_exists($dir_name)){ $dh = opendir($dir_name); while($file = readdir($dh)){ if ($file != "." and $file != "..") { unlink($dir_name./.$file); } } rmdir($dir_name); } 画像は削除されるものの、どうやってもディレクトリが削除されず、 パーミッションエラーになります。 (ちなみにローカル上でテストしているので、サーバはWinXPです) ディレクトリ作成時はmkdir($dir_name,0777); などにしているので、特にパーミッションの指定はしていません。 上記のソースの書き方が悪いのでしょうか?
知ってるかい? Windowsにはパーミッションの概念はないんだぜ。
34 :
32 :2006/12/08(金) 12:27:04 ID:???
知ってます。だからパーミッションエラーと言われても??って感じです。 ちなみにアクセス権はWindowsでもありますが。
35 :
32 :2006/12/08(金) 12:31:25 ID:???
連投ですが、、Permission denied エラーメッセージが出ます。
_.. - .._ _.. - ,ニ-冖 ⌒ 冖-ニ - _ / ノ´,. .‐.: : : ̄: :、:‐. 、`ヽ \ / //: :./: : : : : : :l: : : :.\ヽ \ < ヽ/: : : :/: : : : : : /: :.l: : :、: : :ヽ/ > 丶、/: : : ::/: : : : ::::〃:/:.|:: : :.l: : : :.', / l:l: :-:、l.: :::::::://://:∧:::._;l:-!: l:.|! ,l:l: : : ::|><__/ ' / '_,. へ:.|: l: :|::!l l:.|:|: : : ::lz=ュ ′ z=ュ.リ:://: l l: :Nヽ: : :ヽ ' /:://: : :.l 下らねぇ質問はここに l: : /il ヽ、ヽヽ /二ヽ / '// ̄`ヽ! 書き込みやがれ、ちび。 l: / il li、`` | | /' li:. ヽ l:/ il li `丶、ヽ-- ,' ィ .il li::. ヽ ,/ il.※.li ,.ィ`不ヽ、 il.※.li::::::.. ヽ . // .:il li // //'{l:l ヾ、il li\::::::... l、 / l/ ..::::il li ヽヽ//l>ィll:l__,ノイ li:::::::丶、:::::::...l \ |: l:::. ..:::::::::il.※.li `イl:l. {.l:「´ il.※.li:\:::::::. `` ┘ \ l:: l::::::_:::-:':´il li {l:l,><{ l:l il li\_l\::::. .::/ /,l:::.  ̄ ::::::il li、,.、,、,、{.l:ト、イ.l:l、,、,il li::::::::l:::::ヽ::. .::::/` 丶、 ,. '"´,.-l::::::::::::::::::::::/il.※.li、,、,、,、,、l:l::::::::{_l:l,、,、il.※.li、:::::::l:::::::..........:::::/ニ、ヽ、
>>13 その会社の従業員数、ホントかよ。
たかだか数百円の売買してるのに、どうやってその人数を維持するんだかwww
>>27 自分でいろいろ直して試してみてから質問しろチンカス。
ちょっと考えれば数通りしかないだろ。
RMT関連の会社は"自称"が多いからね。
会社自体の存在がなかったり、
登記してるだけで実体がないものがほとんど。
客の信用寄せのためだが、扱ってるものがオンラインゲームのデータと滅茶苦茶。
しかもほとんどが中華絡みで、海外への不正送金が後をたたない。
世間ではニートまたは、ニート予備軍という部類だな。
まぁドブネズミがやるような商売なんて
>>13 は相手にしないでやってくれ。
xmlファイルを読み込むxml専用の関数みたいのってありましたよね? どの関数かちょっとわからなくて迷ってるのですが、 どなたか心当たりありませんでしょうか? file()のような関数で、よりxmlファイルを扱いやすくするような関数だったかと・・
>>39 2chに書き込む暇があるなら、PHPマニュアルで検索くらいしたらどうか?
PHPロゴの下の検索バーで、search for [XML] in the [function List]▽
>>32 開けたら閉めろってよく怒られなかったかい
42 :
32 :2006/12/08(金) 14:04:34 ID:???
>>41 最後から2行目のrmdirの前に
closedir($dh);を追加したのですが、testディレクトリ内のファイルは削除されるものの
ディレクトリ自体を削除しようとするとDirectory not empty inというエラーが出て
削除出来ません・・。
質問なんですが 参照ダイアログや保存ダイアログで拡張子指定やファイル名に規則性をもたせる方法ってありますか?
>>32 $dir_name./.$file
エラーになるはず
RMTって何ですか?
携帯用のHPを作っているのですがauでセッションが引き継げないエラーが出て困っております。 hoge.phpで端末認証してからhoge2.phpにheaderで飛ばしています。 その際、session_id()をURLにいれて飛んだ先でも引き継ぐようにしているのですがauだと引き継げていないのです。 私の持っているDoCoMo機種だと問題なく動きます。 ご教示お願い致します。
>>42 試してみたら、ちゃんと消えたよ
そのエラーを見る限り、なにかファイルが残っているんだろ
>>11 UNIXとWindowsで多少変わるのと「.」から始まるファイル名を含む場合に注意が必要だが
echo count(glob("$dir/*"));
でファイル数は取れるんじゃなかろうか。
>>35 Windowsの場合、操作対象のファイルを使用中にスクリプトを実行(例えば
メモ帳で編集しているファイルを削除しようとする)するとそんなエラーが
出たような気がする。
52 :
nobodyさん :2006/12/08(金) 16:45:27 ID:DDnDD/EO
長文失礼 PHPを使って画像をアップ後、move_uploaded_fileで移動(保存)という流れの プログラムを作っているのですが、アップした画像が見れないですし、 さわれない状態になってしまってます。 調べてみると、どうもアップされた画像のパーミッションが 600になっていて、これを chmod 755等としてやると問題ないです。 毎回アップのたびにファイルをexec(chmod ・・)すれば一応動くのですが、 根本的な解決はどのようにすればよいのでしょうか? 環境は fedora core 6 PHP 5.1.6 をApacheモジュール Apache 2.2.2 ファイルをアップするディレクトリは755で所有者はApache ちなみに、アップしたファイルも所有者はApacheです。 でもコレってもしかして、Apache板?
>>50 だから
>>35 のエラーはちゃんとクローズしたら回避できたんだろ。
いちいちむしかえすなよ。
空じゃないから削除できないってのは隠しファイルか
システムファイルでもあるんじゃないの
>>53 だからいちいちむしかえしに抗議すんなよ。
>>50 の指摘だって当たってるんだから
後で誰かの役に立つこともあるだろ。
DBクラスのインスタンスを保持するには singletonパターンやcontainerパターンなどがあるそうですが どんな方法がいいですか?
57 :
nobodyさん :2006/12/08(金) 18:20:32 ID:Y02nKAI9
PEAR等のクラスでよく以下の様にメソッド名の先頭に&がついているものを 見かけますがこれは何を表すのでしょうか? function &method(){ ... }
マニュアル(ry
59 :
nobodyさん :2006/12/08(金) 19:10:21 ID:La6qVtX7
if($a & $b){ print "true"; } といったif文でどういったときにtrue判定されるのか分かりません。 マニュアル等でもかまいませんのでお教えください。
ビット演算子についてぐぐれば分かるかもしれない
61 :
57 :2006/12/08(金) 19:28:38 ID:Y02nKAI9
>>58 マニュアルは一通り探してみたのですが見つからないのです。
62 :
59 :2006/12/08(金) 19:35:53 ID:La6qVtX7
自己解決しました。 下記のようなソースを書いたのですが、結果が検索等した内容と不一致でしたので悩んでいたのですが・・。 $_GETの内容が文字列として扱われていることを忘れていました・・。 intval($_GET['a']) という風に数値として扱うことによって正しい解が得られ理解の裏づけも出来ました。 $a = intval($_GET['a']); $b = intval($_GET['b']); print "十進数<br>"; echo $a; print ":"; echo $b . "<br>"; $c = $a & $b; if($a & $b){ print "true!"; }else{ print "not true!<br>"; } print "二進数<br>"; printf("%'_8b",$a); print "<br>"; printf("%'_8b",$b); print "<br> 二進数結果:" . base_convert($c,10,2); print "<br>十進数結果:" . $c;
63 :
nobodyさん :2006/12/08(金) 19:37:03 ID:DDnDD/EO
>>52 解決しました。
apacheですね。m(_ _)m
>>65 そんな「キモヲタ業界の常識」を得意げに語られてもねぇ・・・
俺はネトゲーにはまるで興味わかないからどうでもいいが、
まぁ、キモヲタはキモヲタどうし、仲良くやってれば?
>>66 だよな。
しょせんキモゲーマーはキモゲーマーでしかない。せいぜい
自分が死ぬ間際になって「あぁ、オレは人の役にも立たず、
キモゲーマーとして一生を終えてしまった。」と後悔すればいいさ。
>>65 おまいネトゲーしたことあんの?たかがネトゲーしたことあるのを
自慢するなんて相当肝いよ^^
>ここも
宣伝丸出し乙。
>>38 まぁ漏れは業界関係者だから分かるけど国内で登記しているRMT業者ってのは結構健全なもんだよ
TVでは海外への不正送金やら脱税やらバーチャル徒労やらと散々言われててネガティブなイメージはあるだろうけど
> RMT関連の会社は"自称"が多いからね。
> 会社自体の存在がなかったり、
> 登記してるだけで実体がないものがほとんど。
よくも平気でこんな嘘が言えるね。
国内の大手RMT会社は の 「ほとんど」 は VeriSign + 帝国データバンク のステッカーを貼ったりと信頼性をアピールしている。
いっとくが、帝国データバンクの実在証明は登記書類等が必要で、偽装するのは極めて困難だ。
> しかもほとんどが中華絡みで、海外への不正送金が後をたたない。
海外のRMT業者ってのは確かにそうだね。
海外のRMT業者と国内のRMT業者の大きな違いは、どっちで登記しているか(あるいはしていないか)の違い。
国内RMT業者ってのはいたってシンプル。
売りたい人からゲーム内通貨を買い取り、買いたい人に買値の倍ぐらいの値段で売る、それだけ。
ゴールドファーマーといった海外の中華組織と絡むメリットは無い。
個人間のRMT、海外のRMT業者に比べて、国内RMT業者の価格は1.8倍ぐらいするわけよ。
何故、そんな高い値段で買ってくれるかわかる?
信頼があるから。
BOT生産やらチートで生成したお金を取得した人は、ゲーム内アカウント剥奪などのリスクがあるわけで、
「あの会社で買ったら垢BANされた」 なんて噂がながれたら、会社としての存続に関わる。
不正送金ってのは留学生がやって逮捕された例があるけど、全体の市場規模からしたらそんなのは一部だし、
会社としての規模が大きくなればなるほど調査も入りやすくなる。
あと、脱税については、RMTは(最も?)脱税がしにくい業界と言える。
だって、収入:客からの振込み 支出:社員の給料+事務所代+PCなどの経費+客への振込み と、銀行振込を通して税務署にほぼ全て把握されるから、収入を隠したり支出を多く見せかけたりするのは困難。
69 :
軟式PHP :2006/12/08(金) 20:27:45 ID:???
あれ、スレ間違えたかな?^^;
>>68 長文はやめようね。RMTの業界自慢は ス レ 違 い だから
消えろ。
業界が健全?はぁ?
ゲームの金を現実の金に変えるなんていう低俗極まりないことを
商売にしてそれで満足なのかって話だよ。
金さえ手に入れば満足なつまらない人生送りたいなら勝手にやれ
ばいいけど。
>>47 auはcookie使えるからヘッダが被っちゃっているんだろうね
マクドナルドの携帯サイト(mdj.jp)で登録とかすると パスワードを入力するように求められるけど、 このパスワード入力欄は、入力したパスが伏字にならない。 input typeをpasswordにしてないせいだろうけど、 これって脆弱性・・・とまでは言わないのかな??
>>72 ユーザビリティの観点からパスワードを非表示にするとデメリットが生じるじゃん。
パスワードをいれるときに覗き見されないようにユーザが工夫すればいいだけでしょ。
何を入力したか分からないよりよっぽど親切。
74 :
軟式PHP :2006/12/08(金) 21:15:28 ID:???
親切よりセキュアなほうがいい。
76 :
73 :2006/12/08(金) 21:19:49 ID:???
>>74 だったらパスワードの安全性を確保できるような仕様にすることが優先だな。
大抵の人 (9割以上) が 4桁の数字をパスワードにしているから、
ブルートフォースアタックで簡単にやぶれるぞ。
必ずアルファベットを使わないと駄目とか、数字なら8桁以上とか、制約をつけて安全性を高めた方がいいね。
>>76 それでたまに普段使ってるパスワードが使えないサイトがあったりして困るんだよな。
勝手にセキュアと思い込んだルールをユーザに押し付けつけるなよと。
ケータイで桁数が多いとそれだけ会員になってもらえないw
>>77 > それでたまに普段使ってるパスワードが使えないサイトがあったりして困るんだよな。
> 勝手にセキュアと思い込んだルールをユーザに押し付けつけるなよと。
パスワードを使いまわしするという行為自体がセキュアでないことをお分かりですか?
パスワードの入力欄に入力した文字が ****** に変換されないことが原因でクラックされる例なんてそんなにないでしょ。
>>79 だから?全サイト1つずつパスワードを変えて100以上ものパスワードを暗記してられるとでも?
覚え切れなくてメモ残す羽目になったらもっとセキュアじゃないだろう。
81 :
79 :2006/12/08(金) 21:41:56 ID:???
>>80 メモを残すことがセキュアじゃないか。
漏れはパスワードを手帳にメモするときは、独自のルールで暗号化している。
Fkkh8D なら 最初の3文字はアルファベット数字を2回進め、最後の3文字はアルファベットと数字を3回戻す、みたいにね。
メモを安全に管理すれば、メモを残しておいても問題ないだろう。
ISPのパスワードなどの重要なのは、独自のルールで暗号化したものを、さらに家の金庫にいれて保管してるよ。
パスワードを使いまわししていたら、どこか1箇所から漏洩しただけで、全てのサービスがクラックされる可能性があるわけだが。
その管理の何処がセキュアなんだ。
もし、独自ルールでの暗号化が面倒ならば、サイト毎に違うパスワードにしてメモして、
メモしたパスワード + In@2 (暗記するパスワード) みたいにすれば問題なし。
82 :
軟式PHP :2006/12/08(金) 21:43:32 ID:???
>>76 仕様とかそういう以前に俺はtype=passwordにする。
ただ、そんだけ。
>>78 ケータイでpasswordにしてたら古い機種はキツイよなw
何打ってるか分からんやつがあるw
>>81 そんな独自のルールじゃ、攻撃者がメモをたまたま見つけてコンピュータで暗号解読を試みたら、短時間で見破られる可能性あるんじゃ・・・
86 :
81 :2006/12/08(金) 21:52:03 ID:???
>>85 あ、説明が不十分だった・・・。
独自のルールに変換した文字列に 4桁ぐらいの共通パスワードをいれたものが実際のパスワードになってる。
ただ単に4桁の共通パスワードを加えただけでも、ランダムな英数字にしているから、
62^4 = 14776336 通りを試さなければならない。
そして、もし、サイト運営者が悪用しようとしても、メモを奪わないと他のサイトのパスワードを知ることができない。
>>85 マクドナルドの件から始まった幼稚なセキュリティの話は
どうにか我慢してたけど、おまえの発言はさすがにばかば
かしすぎるぞ。
>>86 おまえも自慢げに説明するな。読んでるほうが恥ずかしく
なる。
88 :
軟式PHP :2006/12/08(金) 21:57:13 ID:???
すげぇ・・・俺も見習ってパスワードをメモって暗号化して ライオン像を斜めに傾けると本棚が開いて出てくる金庫にしまうぜ。
>>86 パスワードを忘れたときに、自分自身が解読できなかったら、元も子もない罠
そんなパス管理を世の中の全てのユーザができると思い込んでる辺りが…
>>90 それも全て<input type=text>のため。
見えて入力しやすいフォームのためなら、ユーザーは僅かながらの労力を惜しんではならんのだ。
>>89 残念ながら、そこまで記憶力わるくねーよ
毎日何度も使っているパスワードをどうすれば忘れられるんだ
それならメモしなければよろし
ねぇ、このくだらないコキブリレベルのぱしゅわーどにょのおはにゃしは いちゅまでつじゅくんでちゅか? ここはあくまでもPHPのしゅれでしゅよ?
おまえらってなんで難しく考えるんだろうパスワード項目を多重に増やせばいいだろ。 これでID入力1つ、パスワード入力5つあれば問題ない。
>>95 はいはい。お前が実践して便利だと思ったら使えば。
99 :
97 :2006/12/08(金) 22:51:12 ID:???
はやく答えろや人力検索ども
セッションってもうワッシワッシ使っちゃっていいの? 何処かが作ったCMSのスクリプトを覗いたらメニューの文字からリンク先まで 全部セッションに突っ込んであったりしたんで・・・
>>97 そもそもダイアログって何の話?
ファイルアップロード?
あそこはPHPじゃ制御できない。
JavaScriptでも無理。
ActiveXならできる。
>>100 有限だけどメモリが確保できる限りは大丈夫。
ただ、遅くなるけど。
>>102 ありがとうございます
とりあえず基本的なセキュリティとメモリを念頭に使えば良いみたいですね
同一人物かどうかは知ったこっちゃないが、
>>99 氏ね
同一人物じゃないから安心して叩け
すみません 「56664,123,1,32,0,96,moji」 のように一行で書かれていているものを 「,」で区切ってそれぞれ変数に格納するには どうしたらいいでしょうか
explodeで区切ったらいいです
ありがとうございます
110 :
認定回答者 :2006/12/09(土) 00:51:07 ID:ohlkT/vm
>>107 斬鉄剣のようにきれ。しかし、文字の中に「,」が付いていた場合、間違えた場所を切るぞ
$array=array("あああ","いいい","ううう"); 配列に上記の3つの値が入っているとします。 ここで指定の値(例えば「ううう」)を削除して出力するには どうしたらいいのでしょうか?
>>112 削除して出力?出力は「ううう」を表示すればいいの?
114 :
112 :2006/12/09(土) 01:37:12 ID:???
>>113 いえ、「ううう」を削除して$arrayには「あああ」と「いいい」が入っている
状態にしたいのです。
unsetも試してみたのですが、違うみたいで・・。
>>100 >全部セッションに突っ込んで
それが超ウンコな実装方法だという自覚があって、
それでも使うというのなら、無理に止めはしない。
しかしアクセス数が少ないうちはそれでもいいが・・・
>>114 いや、unset()でいいと思うよ。
ちょっとどうやってやろうとしたのか見せてみ。
117 :
112 :2006/12/09(土) 01:56:28 ID:???
>>116 $array=array("あああ","いいい","ううう");
$del_val="ううう"; //削除する値
unset($array['$del_val']);
こんな感じです
PEARでの認証がどうしてもできずに困っています。 入力フォームは現れるのですが、入力してログインボタンを押すと真っ白な画面になってしまいます。 ソースは以下の通りです・・。
119 :
118 :2006/12/09(土) 02:00:18 ID:???
require_once "./common/PEAR/Auth.php"; function drawLogin($username, $status, $objAuth) { if (isset($_SERVER)) { $server = $_SERVER; }else { $server = $GLOBALS['HTTP_SERVER_VARS']; } echo '<form method="post" action="' . $server['PHP_SELF'] . '">' . "\n"; echo '<label for="username">ユーザー名:</label>'; echo '<input type="text" name="username">' . "\n"; echo '<label for="password">パスワード:</label>'; echo '<input type="password" name="password">' . "\n"; echo '<input type="submit" value="ログイン">' . "\n"; echo '</form>' . "\n"; } $params = array( 'dsn'=>"mysql://root:admin@localhost/db_bbs", 'table'=>"auth", 'usernamecol'=>"username", 'passwordcol'=>"password", 'cryptType'=>"md5", ); $objAuth = new Auth("DB", $params,"drawLogin"); $objAuth->start(); if($objAuth->getAuth()) { echo "ようこそ!" . $objAuth->username . "さん<br>"; }
>>117 そもそも '〜' 内では変数を参照できないから、
それ$array['ううう']の参照になってない、って突っ込みもあるけど、
$idx = array_search($del_val, $array);
if($idx !== FALSE) unset($array[$idx]);
って感じかな。
121 :
nobodyさん :2006/12/09(土) 02:02:33 ID:k1+g2Cld
大変恥ずかしい質問なのですが、どなたかお答え頂けると嬉しいです。 phpMyAdminを導入したのですが、基本的な操作方法がわかりません。 ググって色々なサイトを見たのですがいまひとつ理解ができないです。 どなたか参考になるサイトなどあれば教えていただけないでしょうか。
123 :
121 :2006/12/09(土) 02:17:25 ID:k1+g2Cld
今、自分で参考になるサイトを見つけました。 なので、なんとか設定をすることができましたm(__)m
>>122 可変引数は参照渡しに対応してないらしーです。
125 :
122 :2006/12/09(土) 02:28:44 ID:???
>>124 そうですか・・・
ありがとうございました。
126 :
124 :2006/12/09(土) 02:30:36 ID:???
127 :
nobodyさん :2006/12/09(土) 03:40:48 ID:pb/pWspH
PHP5 + SQL Server 2000でHTMLを保存しようとしているのですが、 SQL Serverのtext型のデータの出し入れの方法がわかりません。 VBとかのサンプルは見かけるのですが、PHPでのやり方をおしえてください
130 :
nobodyさん :2006/12/09(土) 10:04:30 ID:YIF875cZ
ウィルスセキュリティソフトで、サーバー化ソフトを使ってるPCには使えないものが歩けど みんあはどうしているの?
そもそもLinuxで動かしてるし>Apache
>>130 サーバ用のあるでしょ。
まぁ他人にスペース貸したりしてるわけじゃないし、
最低限のセキュリティー対策してれば、
外部から感染することは少ない。
>>131 Linuxならウィルスにかからないとか思ってるわけじゃないだろうな?
>>132 ハァ!?
ウイルスにかからないPCなんてない。最大限に対策をしつづける。
こんなの常識だろクズ
134 :
130 :2006/12/09(土) 11:01:53 ID:???
レスありがとうございました 僕のためにみんなけんかをしないでください
>>133 何ふぁびょってんの?半島の方でしたかw
138 :
nobodyさん :2006/12/09(土) 12:26:13 ID:FhkAh91m
PHPというかWebProgの初心者です 掲示板の管理画面を作ろうとしています。 1ページ20件ずつ表示する掲示板で 20件を超えると<a>リンクで2ページ目が出現する仕組みです。 管理者がログインしている状態でこの掲示板を開くと 各書き込みに対し編集ボタンが表示されるようにしたいのですが 2ページ目に<a>リンクで飛ぶと、当然POSTでパスワードを 受け渡すことができず、こまってしまいました。 こういうのってどうやって実装するものなのでしょうか。 もしスレ違いでしたら誘導よろしくお願いします
>>138 認証したらセッションを開始して管理者であることを
示すキーかなんかを放り込んでおけばいいのでは?
各画面ではセッション変数を読み出し、管理者なら編集用の
リンクを張るなどする。
>>138 一つ前の過去ログに同じ質問がございますので、肉ちゃんねる等で参照してください。
>>138 >当然POSTでパスワードを受け渡す
当然そういう危ないことは止めていただきたい。
>>139 の言うとおり、セッションで管理者ログインフラグとか立てる。
>>139 レスありがとうございます
セッション管理について無知でした
調べてみたら、まさにこれだ!って感じです。
かゆいところに手が届きました
感謝です
143 :
138 :2006/12/09(土) 12:45:39 ID:???
>>141 POSTでパスワードはまずいのですね・・・なるほど
セッション管理を使ってみます
本当にたすかりました
mb_http_output あたりのせいだと思うのですが、 SJISの文字列AとEUC-JPの文字列BをブラウザへGET送信した際、 B側を echo すると 表示させるphp側で <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"> と指定しているにもかかわらず、文字列BのみがSJISで表示されます。 (このため文字化けします、ブラウザの文字コードを再度EUC-JPに指定してやれば、 文字化けが解けます) 文字列AをEUC-JPにしたら、文字化けせずに正常にEUC-JPで表示されます。 おそらく、GETで受け取る際に文字コードを判定、 その後、その文字コードで表示、みたいなことを PHPのmbstring側が勝手にやってるような感じですが、 php.ini を弄る以外で何か解決方法はないでしょうか? ちなみに mb_http_out("EUC-JP") をしても変わりませんでした。 お願いします。
>>144 とりあえずmb_*関係の設定をすべてさらすこと。
次に表示するソースの文字コードを確認。
こっちはエスパーじゃないんだから。
肝心のmbstringの現在の設定値を言い忘れてました、失礼しました。 Directive Local Value Master Value mbstring.detect_order auto auto mbstring.encoding_translation On On mbstring.func_overload 0 0 mbstring.http_input auto auto mbstring.http_output SJIS SJIS mbstring.internal_encoding EUC-JP EUC-JP mbstring.language Japanese Japanese mbstring.substitute_character no value no value となっています。 ソースの文字コードはEUC-JPです。 この問題以外は文字化けは発生してません。 文字化けが発生するのも文字列Bのみです。 宜しくお願いします
auto autoとかjapanとかなんで二重に書くの?
150 :
146 :2006/12/09(土) 13:21:47 ID:???
表記もわからない人は答えなくていいです。 それではよろしくお願いいたします。
151 :
138 :2006/12/09(土) 13:21:57 ID:???
>>148 ごめんなさい、過去ログをあさるに必死で
レスつけきれていませんでした
感謝ですm(__)m
>>146 mbstring.http_output SJIS SJIS
153 :
146 :2006/12/09(土) 13:40:26 ID:???
>>152 >文字列AをEUC-JPにしたら、文字化けせずに正常にEUC-JPで表示されます。
という部分の理由は分かるでしょうか?
また、mb_http_out("EUC-JP") をしても駄目なのはなぜでしょうか。
$string_contents = file_get_contents でコンテンツが見つからなかったときに エラーを吐かせず$string_contentsに別の数値を入れるにはどうすればいいですか
155 :
146 :2006/12/09(土) 13:43:10 ID:???
一応補足しておきますが、
>>150 は私じゃないです、
暇人は羨ましいです
156 :
146 :2006/12/09(土) 13:44:08 ID:9A0i8Wu2
ID出す(age)なきゃならないのですね・・・
157 :
146 :2006/12/09(土) 13:59:24 ID:gM+cEjaM
150と156は偽者です。 たいへん恐縮ですがはやく教えていただければと思います。 こちらも暇ではないので。
めんどくせーからいちいち偽者でるんじゃねえよタコ
最初からIDを出さないからこうなる。 ローカルルールも意味無くあるわけじゃないんだよ。 文字列をEUCに変換して出力するならそのままEUCで出力される。 何もしなければお舞さんが設定したとおりSJISに変換してEUCの HTMLに出力する。 これがAとBの違いだろ。
160 :
146 :2006/12/09(土) 14:09:51 ID:gM+cEjaM
どの設定をかえたらよろしいのでしょうか?
161 :
146 :2006/12/09(土) 14:25:55 ID:9A0i8Wu2
> 文字列をEUCに変換して出力するならそのままEUCで出力される。 > 何もしなければお舞さんが設定したとおりSJISに変換してEUCの > HTMLに出力する。 > これがAとBの違いだろ。 文字コード自体は文字列BもEUCなのです、 SJISになってるわけではないです、あくまでブラウザ出力の 文字列B部分がSJISになっているだけであって。 だから >(このため文字化けします、ブラウザの文字コードを再度EUC-JPに指定してやれば、 文字化けが解けます) となります。
この板にお前の質問に答えられるやつは居ないと思うよ 159も根本的に勘違いしてるし
>>162 お前のような難癖つけるだけの馬鹿はすっこんでろよ。
165 :
146 :2006/12/09(土) 14:35:30 ID:gM+cEjaM
文字コードの設定ってアパッチの設定とPHPの設定だけですよね?
回答にはなってないけど。 送信されてきた文字列がSJISかEUC-JPかはどうやって 判断したの? mb_detect_encodingで調べてみた?
もうほうっとけよ。 なんか2人146がいるし、めんどくさいから相手にすんな。
>>144 ID:9A0i8Wu2が本物であると予想して相手してみる。
とりあえず再現するコードを書いて(特にform部分と、文字コード関連の操作)。
そうすれば、内容が明確になるだろうし、回答も得られるはず(
>>146 の設定内容は了解した)。
少なくとも、文字列Aと文字列Bというのが、どういう操作の対象なのかがわからん。
同時に送信しているのか、別の送信の仕方をしているのか。ブラウザの通常の使用で再現されるものなのか。
まーとにかく、再現するコードを書いてくれ。
言葉だけで説明されると、曖昧さが出てくる。
>>154 $string_contents = @ file_get_contents("ファイル名") or $string_contents = デフォルト値;
169 :
154 :2006/12/09(土) 14:59:31 ID:???
170 :
146 :2006/12/09(土) 15:29:44 ID:9A0i8Wu2
>>166 はい、mb_detect_encoding で調べてます。
>>168 $vara = "シフト";
$vara = mb_convert_encoding($vara, "SJIS", mb_detect_encoding($vara));
$vara = urlencode($vara);
$varb = "イーユーシー";
$varb = mb_convert_encoding($varb, "EUC", mb_detect_encoding($varb));
$varb = urlencode($varb);
header("Location: index.php?vara=".$vara."&varb=".$varb);
して、
index.php(文字コードEUC、HTML出力EUC) 側で
echo mb_detect_encoding($_GET['varb']);
echo $_GET['varb'];
です。
EUC と表示され、$varb 自体は文字化けします。
>>170 そのindex.phpで、
mb_http_output("EUC-JP");
header("Content-type: text/html; charset=EUC-JP");
<meta http-equiv="content-type" content="text/html; charset=EUC-JP" />
echo $_GET['varb'];
を全部やっても化ける?
172 :
146 :2006/12/09(土) 15:45:08 ID:9A0i8Wu2
$strがA〜Z、a〜z、1〜9と-_の時にもTRUEを返したいのですが、 どのようにすればよいのでしょうか?
174 :
173 :2006/12/09(土) 16:08:40 ID:???
すみませんミスです $strがA〜Z、a〜z、1〜9と-_の組み合わせでできているとTRUEを返したいのです。 ($str = 'abc123'; =TRUE) ($str = 'abc1$3'; =FALSE)
>>172 ブラウザに何使ってる?
デフォルトの文字コードを自動判別になってなくて、
ヘッダーの指定を無視するなんてオチだったりして。
173応援あげ
177 :
173 :2006/12/09(土) 16:21:46 ID:???
>>176 有難うございます
if(!ereg("[0-9a-zA-Z]",$str)){
//エラー処理
}
ここまでは分かったのですが、「-」と「_」はどのようにすればよいのでしょうか・・・?
>>172 >mbstring.encoding_translation On
原因はこれだわな。varaがsjisだから、クエリストリング全体にsjis→eucの変換がかかってる。
だからeucでエンコードされてるvarbがおかしくなる。
php.iniがいじれない状況なら、クエリストリングの先頭に常にeucとして解釈される短い文字列でも埋め込んでおけば?
>>177 eregなんか使うなよ。
preg_match('/^[a-zA-Z0-9_-]+$/', $str);
180 :
179 :2006/12/09(土) 16:30:29 ID:???
最後の「-」の前に「\」な。
181 :
173 :2006/12/09(土) 16:33:03 ID:???
>>179-180 有難うございます。
その方法で解決できました。
差し支えなければ、eregとpreg_matchについての違いなど教えていただけないでしょうか。
本には同じ説明文で記載されていたので・・・
すみません、PHP+MySQLなんですが、ここでも大丈夫ですかね? $db = 'database'; mysql_db_query($db,'SELECT FORM database . table WHERE id LIKE abc'); 『database』というデータベースの『table』というテーブルの『id』というフィールドを検索して 『abc』と同じものがあればTRUEを返したいのですが、上記の方法では何も返されませんでした。 どのように記述すれば良いですか。御指摘お願い致します。 また、スレ違いなら誘導していただけると嬉しいです。
eregを使うなってのは確かセキュリティ的にあれだからですよね? mb_ereg なら問題ないって聞いたんですが。 個人的にはなぜかereg系使いやすいんですよね・・・
>>183 $dbにはデータベースへ接続したときに得られたリソースを入れる。
後、セレクト文で何もセレクトして無いでしょ。 count(*) でも入れとけば?
>>185-186 有難うございます。
$dbHandle = mysql_connect("localhost","root","root");
mysql_select_db("database");
echo mysql_query("SELECT * FROM table WHERE id = 'abc'");
「リソース」というのが少しわからなかったので上記の方法でしてみました。
すると、「Resource id #5」という値が返ってきました。
もうリソース怖いです、やめてください。
>>187 マニュアル読めよ
$result = mysql_query("SELECT * FROM table WHERE id = 'abc'");
while ($row = mysql_fetch_assoc($result)) {
print_r($row);
}
>>187 ちゃんとマニュアル見てる?
返り値
SELECT, SHOW, DESCRIBE や EXPLAIN 文では、 mysql_query() は成功した場合に resource を返します。エラー時には FALSE を返します。
それ以外の SQL 文 UPDATE, DELETE, DROP などでは、 mysql_query() は成功した場合に TRUE 、エラー時に FALSE を返します。
返された結果にアクセスするためには、結果リソースを mysql_fetch_array() やその他の関数に渡します。
SELECT 文によって返された行の数を知るには mysql_num_rows() を用います。また DELETE, INSERT, REPLACE, または UPDATE 文で変更された行の数を 知るには mysql_affected_rows() を用います。
クエリが参照するテーブルにアクセスする権限がない場合も mysql_query()は失敗し、FALSE が返されます。
使い方に対するとても丁寧でわかりやすい説明があって、サンプルソースまでついてて、
しかもほぼ完全に日本語化されてるなんて恵まれた環境そうないと思うんだけど。
>>135 スーパーグローバル$_SESSION配列に確保できるメモリサイズが有限で
これを超える格納はこけるでしょ
>>184 バイナリ対応もアレだけど、基本的にはereg系はpreg系に比べて数倍遅いからpreg推奨なだけ。
ただ、それなら何故ereg系があるかっつーと、昔からある正規表現で使い慣れた人が多いから。
性能的にそこがボトルネックになってるわけじゃなきゃ使いやすい方を使えばよろしい。
JAVAでポップアップメニュー作ってますが、ボタンを押してリンクに飛ぶ代わりに そこから<?php include("sample.html"); ?>みたくPHPを呼び出すことできます? さらにブラウザに表示するアドレスをsample.htmlにできますでしょうか?
>>193 君は1度、
サーバーサイドとクライアントサイドのプログラムの違い、
それぞれのプログラムがどのマシン上で動いているか、
includeでどこのファイルが呼び出されているか、
そして恐らくはJavaとJavaScriptの違い、
を勉強してみた方がいい。
ものすごくとんちんかんなことを言っていることに気づくはずだ。
ajaxればできるんじゃね
普通にリンク先をsample.htmlにするのと何違うんだ
>>196 >>193 が言ってるのはJava(Script?)からPHPのPerlバインディングみたいにPHPコードを
使えるかってことだろ。説明がちんぷんかんぷんでよくわからないが、HTTP経由ではないだろ。
ポップアップメニューってことはクライアントで動いてるんだろ。 HTTPも使わずにネット越しのファイルをどうやって読み込むんだよ。
[f1][f2][f3][f4][f5]のフィールドがあって そこのf1とf2に$f1、$f2の入れたいのですが insert into user values('$f1','$f2'); だけでは入ってくれず、他のところに insert into user values('$f1','$f2','','',''); というように空白を入れないと入ってくれません f1->$fi、f2=>$f2のように指定することはできないのでしょうか? MySQL+PHPですが、向こうに質問スレがなかったのでこっちで聞いてみました
>>200 SQLのマニュアルくらい読もうよ。
insert into user (f1, f2) values ('$f1', '$f2');
ってすれば対象カラムを指定できるでしょうが。
めちゃめちゃ基本の文法だと思うよ。
向こうに質問スレあるよ
>>201 もしくは
insert into user f1='$f1', f2='$f2'
でもいけるよ
丸っきりSQL文の話でPHP関係ないけどね
203 :
200 :2006/12/09(土) 21:15:13 ID:???
>>201-202 ありがとうございます!
今日からDBはじめたヒヨッコなので・・・
もう少し勉強してから手をつけていきたいと思います
>>201-202 の方法でも格納されなす(ノД`)
ちなみに文は
function mdq($sql){
mysql_db_query($db,$sql);
}
$sql = "insert into account id='$id',password='$pass',name='$name',addr='$add',id='$age',id='$age',sex='$sex'";
mdq($sql);
$sql = "insert into user id='$id',name='$name'";
mdq($sql);
なんですが・・・
・・・エラー文は?
>>205 エラー文は返ってきません
ちなみにphpMyAdminで確認しています
>>202 の文法って正しくは
insert into user set f1='$f1', f2='$f2';
じゃないの?
>>204 > function mdq($sql){
> mysql_db_query($db,$sql);
> }
あとこれだと$dbがどこにも定義されてない状態になるから
いくらSQL文が正しくても動かないんじゃなかろうか。
それとmysql_db_query()は旧バージョンの関数名なので使わない方がいい。
いったいどんな古い本で勉強してるんだ。
>>206 エラー文は返ってくるものではなく取得するもの。
mysql_query()実行後にmysql_error()で得る。
>>208 $dbはその上に書いてます。
($db = "database";)
さきほどまではmysql_db_queryでも正常に動いていました
(
>>200 の状態の時のことです)
mysql_db_queryをmysql_queryに変えると
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource
というエラーが返ってきました(PHPで)
mysql_error()と記述しても、それのエラーは返ってこない状態です。
>>209 とりあえずmysql_queryは引数とかも変わってるのでそこの修正は後にしろ。
マニュアル読み直して書き直しが必要。
それより
>>207 の方は?
>>210 setは加えても変化はありませんでした。
最初から書き直すのですかorz
マニュアル見て頑張ります
>>211 >>201 の文法ならどうよ?
つーか、ひょっとしてMySQLのバージョンが相当古かったりするか?
mysql_query($db,$sql); これを mysql_select_db($db); mysql_query($sql); で解決できました。 本当にありがとうございました。
つーかね。PHPマニュアルのMySQL関数のところを 読めば、やりたいことの例文が全部載ってるわけ。 2chで質問する暇があったら、マニュアル読んだ方が 早いから。絶対。
その本家マニュアルの所在を2chで質問するまで知らなかったようだがw
別に誰もいなくなるならそれはそれで良いことの気がするけど。
くだスレだとしても、もう少しレベルの高い話がしたいな。
例えば?
>>218 レベルの高い話しましょうか。
来年売れそうなWEBアプリケーションてどんなだろう?
このくらいの話ができないようなら消えてください。
>>221 じゃ先ずあんたからどうぞ。
できないなら消えてください。
マニュアルに例文がそのまま載ってるような質問に 苦言を呈しただけなのに、何でそんな話になるの? 0か1かまで単純化しないと話が理解できないの? 極論過ぎ。小学生の言い訳かよ。
おまえら質問スレで何勝手に議論はじめてるんですか? 誘導だけで回答できない雑魚はいらないので、 答える意思がないやつor議論はじめるやつは消えてくれ。
だから当人の持ってる本にはあれしか例文が無かったんでしょ。
>>218 じゃあ普通の質問スレいけばいいんじゃね?
くだらない質問だからくだスレであって
そうでなかったら意味ない
>>227 その普通の質問スレが無くなってこのスレに統合されたんよ。
経緯を知らんやつは半年ROMてろ。
だからタイトルから「下らねぇ」を消せとあれほd(ry
別にレベルとかどうでもいいじゃん。 くだらねえのもくるし普通のもくる。 低レベルから高レベルの質問でも答えられるやつがいるなら問題ないだろ。 わざわざ拘ってるのに理解できん。
スレタイが下らなくなくなれば、そもそも下らなさに言い及ぶ奴も減るということか。
>>227-229 つーか、下らなくない質問がある&聞きたいというなら
改めてそういうスレを自分で立てればいいんだよ。
ニーズがあると本気で思ってるならさ。
>>235 あなたがそっちの方がいいと思ったらそっちに書き込めばいい。
根本的に板からして違うとこを姉妹スレにするのはどうかと思う。
>>236 は?
じゃあ、どうやってこのスレは立ったんだよ。
>>233 新しく立てたって需要があるわけないでしょ。すでにこのスレがあるわけだし。
ただ、実質この板でメインなスレとして機能しているのに、質問や回答が下らないだの質問者や回答者が下らないだのの議論になるのはバカらしいから、せめてスレタイから「下らない」を削除たらどうよ?って話。
>>238 外したら今度は「下らない内容しか無いんだからスレタイを戻せ」と
逆のアンチが騒ぐだけ。そのくらいも想像できないお子ちゃまですか。
>>238 …なんで「下らなくない」本スレ側が消えたか理解してる?
>>237 >は?
>じゃあ、どうやってこのスレは立ったんだよ。
何回かこのくだ質スレの過去スレ立てようとしたけど、立てられなかった。
エラーメッセージ見た限りでは、ホスト規制とかではなく、「この板ではしばらくスレが立てられません」みたいに出てたから、てっきり一般人には立てられないのかとおもた。
>>241 そのメッセージは「そのホストでは」この板ではしばらくスレが立てられません、だ。
同じホストからの連投が規制されているだけ。
>>242 だから、あえて本スレ側を消して下らない側を残したのに、
わざわざ「下らない」というタイトル消したら意味ないじゃんか。
旧本スレがどれだけ荒れて質問も来ないスレになってたか知らんのか。
>>243 あーそうだったのか。でも今のホストからこの板にスレ立てはしたことないお。
本当にくだらねえなお前等wwww
ま、そういう連中が集うスレだしw
>>238 需要が無いとは言い切れないよ。
元々は本スレと言われた「PHP質問スレ」があったのに
後から下らない質問スレが別に立って、しまいには
そっちが本スレになっちゃったくらいなんだから。
必要とされる方が残る。これが真理。
そしてPHPに関して「下らなくない」質問スレは敷居が高くて生き残れない。
HTTP_Requestでデータを読み込み、そのデータを加工してfwriteでファイルに書き出すPGを作成しています。 レンタルサーバ上(PHP4.4.2)では正常に終了するのですが、 自宅サーバ(PHP5.2.0)では途中で処理が止まってしまいます。(どこで止まっているかわかりません) どう対処したら良いでしょうか?
>>250 プログラムを段階的に区切ってみてどこで止まるか検証しましょう。
せめてソース見せてくんなきゃ他に何も言えんよ
>>252 は?超初心者用くだすれは本スレが消える前からあったろ。
なんでそれで下らない質問スレを残したか意図理解してる?
>>249 いや、くだスレが最初に立ったときにすでに本スレは荒れてたんだよ。
それで、煽り文句として「くだ質池」ってのがちょくちょく書き込まれ、さらに悪化。
そんな折にくだ質に人が移っていって、しばらく荒れた末に本スレは終了。
別にくだ質が残った理由は「くだらないから」だったとは思わんな。
それよりも、そもそも「レベルが高いとか低いとか」そういう話題が出てくること自体が、常にデメリットしか生み出さないので問題かと思う。
むしろ過去の本スレがどうのこうのっていう話題が出てくることも無駄以外の何物でもないってのが本当のところだな。
>>252 それで済むと思うならこのスレも消して超初心者用スレに全部統合で終わる。
スレの使い分けの実情も理解できないやつは黙ってろ。
下らないってスレタイを外したがってるやつが ちゃんと下らなくない質問をここに投下すれば話は済むよ。 実際問題、下らなくない質問なんて1つも出てないんだから スレタイから外す必要なんて全然ないでしょう。
>>256 そういう、質問 or 質問者 or 回答 or 回答者に「くだらない」 or 「レベルが低い」というレッテルをいちいち貼る奴が出てくるとき、一番スレが荒れる。
>>255 じゃあ次からそうしろよ。
文句ばかりで実行が伴わない池沼にはもううんざり。
>>254 「下らない質問」というスレタイには「スレタイがそうなんだから回答側もあまり文句言うな」
っていう、荒れ防止の役割があるんじゃないかな。
実際、このスレの過去スレ読むと、頻繁に文句は出ても全部それで止められてる。
そうでもないと「下らない質問はやめれ」ってとにかく荒れまくる。
PHPは開発者のユーザレベルが他所より低いのはもう避けて通れない事実なんだから、
こういった自虐でもないとまともに質問スレなんて運用できないと思うよ。
本家MLとかまっとーなコミュニティでさえ滅茶苦茶なんだから2chで自制できるわけないじゃん。
>>256 なんで回答側が質問しなけりゃいけないんだよw
馬鹿かお前はwww
質問する側に最低限のマナーを求めているだけだろうが。
お前みたいなあほ質問者は一生ROMるか金払ってコンサル雇え。
>>260 いや俺回答しかしたことないんだが。
> 質問する側に最低限のマナーを求めているだけだろうが。
無理だろ。ありえない不可能なものを要求するお前が悪い。
>>259 「下らない」が自浄作用になっているような部分ってあったか?
むしろ「下らない」をキーワードに、レベルの高低の話が出てきて、終いには「俺以外レベル低い」と言わんばかりの奴も出てくるなど、荒れる原因になっているところばかりだった希ガス。
>>262 アホか。だったら本スレは荒れてない。本スレと下スレの過去ログを比較してみろ。
「下らない」のスレタイを外すと同時に
>>260 みたいなやつが質問のことごとくにケチをつけ始めて
まったくスレが機能しなくなって終わるだけだ。
>>250 エラーでないのかな?
どこが原因なのかよく分からないときは、とりあえずどこまで進んでいるか
きりのいいところに適当に print "aa"とかしてみたりとか、
変数や配列に期待通りの値が入っているか print_r($arr) とかしてみると
原因特定しやすいよ。
>>261 >
>>260 > いや俺回答しかしたことないんだが。
それが何か?
お前が、
>下らないってスレタイを外したがってるやつが
>ちゃんと下らなくない質問をここに投下すれば話は済むよ。
なんて頓珍漢なレスをしてるんだろうがw
この2行と冒頭の1行がどう繋がるのか説明を求む。
>>263 本スレが荒れたのは、スレタイが下らなくないからなのかwww
意味わかんねwww
>>266 涙目での必死な反論なんです。
生暖かい目で見守って上げてくださいw
単なる煽りに走るようになったか。程度が知れたな。
270 :
250 :2006/12/10(日) 02:33:09 ID:???
>>251 すみませんがソースはちょっとみせられないです。(プーチン大統領が見せるなというので。まだ死にたくありません・・・)
>>264 エラーは表示されず、5分くらい画面はそのままです。
ひたすらループしてるPGで全体のループ回数の1/3くらいでとまります。
(画面におおまかにどこまで進んだかは表示させています)
>>268 反論できないなら無理にしなくていいからww
272 :
nobodyさん :2006/12/10(日) 02:34:44 ID:AKRcc5I/
傍から見てて気になったんだが、スレタイの改変を求めてる人に ・今の内容がスレタイと合ってないから外そう って言ってる人と ・今のスレはスレタイ同様に酷いからスレタイ直して内容も改めよう って言ってる人の2種類がいない? なんか論点がぐちゃぐちゃだよ。
>>270 画面への表示は表示毎にフラッシュを入れないと、バッファリングされちゃって
正確な位置が特定できないよ。
実行位置をログファイルに出力するか、flush(); ob_flush(); などを入れて
出力直後に確実にブラウザに表示されるような工夫をしないとデバッグにならない。
なんか「下らねぇ」に愛着持ってる奴がいるみたいね。へんなの。 荒れる原因になるなら、さっさと外せばいいのに。
とりあえず、下らない質問は禁止させたい人へ
>>270 <こいつどうにかしてみせろ。
>>276 自分でスレを立てて実証してからほざけ。
278 :
266 :2006/12/10(日) 02:41:29 ID:???
煽りは無視するとして。
>>266 の書き込みが稚拙すぎたので書き直す。
>>263 本スレのタイトルに「下らねぇ」が入っていなかったから荒れたと言いたいの?
下スレが出来る前から荒れてたのに。
>>274 荒れる原因になるから「下らねぇ」をスレタイにつけないとダメ。
>>270 Apacheのエラーログか何かにメッセージは吐かれてないのか。
吐かれてないなら吐くように設定を変えてみたらどうだ。
なんかループしすぎてメモリを食いすぎただけじゃないのかって気がする。
PHPのバージョンが変わればその辺の仕様も変わるだろ。
>>276 外したら荒れる理由とは?
外さないと荒れる理由は、例えば「下質だからxxx」→「質問者のレベルはxxx」→「お前のレベルはxxx」となって水掛け論が始まることなんだが。
>>282 外す→そんな下らない質問をするな→この質問のどこが下らない→水掛け論どころか喧嘩騒ぎ
少なくとも今のスレの質問内容にも相当不満を持ってるのが何人かいる状況で
スレタイの変更は自殺行為にしか見えないが。
>>278 への回答にもなるけど、元々の本スレが荒れたのも質問内容に対して
その是非を問うようなアホな連中がいたから。
質問と回答の流れに対してフレームが発生するくらいなら、回答者同士で
レベルの水掛け論が起きるくらいなら全然問題があるようには感じない。
(下らない質問スレでの騒ぎはいつも回答者同士だけであって、質問者を巻き込むことは少ない)
そんなのは横目でスルーすればいい話で、本来の質問と回答の流れが機能するなら全然問題のうちに入らないよ。
おおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお まままままままままままままままままままままままままままままままままままま んんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんん ここここここここここここここここここここここここここここここここここここ
>>283 なんで質問者に最低限のマナーを求めることが
これほど非難されるのかさっぱりわからん。
文句を言うやつはどんな下らない質問にで親切丁寧な
レスをつけてからほざけ。
・外す→そんな下らない質問をするな→この質問のどこが下らない→水掛け論 ・外さない→そんな下らない質問をするな→わざわざスレタイ通りの質問をする必要はない→それじゃお前がレベル高いこと言えば→水掛け論 ・外さない→スレタイ通りの下らない質問だな→答えられない無能は引っ込んでろ→やはりこのスレはレベルが低いな→水掛け論 ・外さない→下らねぇってどこからが下らないんだ?→PHPの質問には下らない質問しかない→PHP使ってる奴はレベルが低い→水掛け論 うーむ・・・
妙に伸びてると思ったらスレタイ論争か >スレタイ変更云々言ってる人 新しく立てるんじゃなくてスレタイ変更するのか?
俺がお前たちのために、最高のスレタイを提案してやるぞ。 【PHP】下らねぇ質問「も」ここに書き込みやがれ 35
>>290 何にでも噛み付く奴だな。少しは落ち着け
$hoge = !$hoge としてるのって何ですか?
【PHP】質問は全てここに書き込みやがれ 35
【PHP】いじわるしないで教えてください(><) 35
【PHP】くだらねぇかどうかもわからねぇ質問
【PHP】くだらねぇかどうかもわからねぇ質問【要は全部】
【PHP】くだらねぇ質問か。いいだろう、ここに書き込うわ何をすry 35
$string_contents = @file_get_contents("
http://外部 ") or $string_contents1 =file_get_contents("ローカルファイル ");
という構成なんですが、
http://外部のアクセスに2秒以上かかるときに $string_contentsにローカルを入れるためにはどうすればいいでしょうか
タイムアウトを2sにしろ
普通にfsockopen使ったほうが楽だと思うよ
>>301 set_time_limit()を
〜〜〜("
http://外部 ")set_time_limit()
この形で置けばいいでしょうか
set_time_limitはCPU時間
あるサイト参考にCSVからデータ抽出を挑戦しているのですが一つ教えてください <?php $Cid=$_GET['cid']; $Data=file('top.csv'); for($i=0;$i<sizeof($Data);$i++){ $line=explode(",", $Data[$i]); if($line[任意]==$Cid){ $CatTitle=$line[任意]; break; } } ?> cidで渡された値を$Cidに納めた後、 $line[0]と$Cidが同じならば、$CatTitleに$line[1]を $line[1]と$Cidが同じならば、$CatTitleに$line[5]を $line[3]と$Cidが同じならば、$CatTitleに$line[2]を という風に条件を別れさせたいのですが、どうやったらよいでしょうか? わかりにくくてすいません。
>>305 ifでもswitch caseでも使って条件分岐するしかないのでは?
空行を読んだときやexplodeした配列が4つも無かった場合の
処理を追加した方がいいね。
あと、forでまわすよりforeachで回す方が毎回sizeofしなくて
いいような気がするが、ここら辺はPHPが最適化してくれるのかな?
つfgetcsv
308 :
270 :2006/12/10(日) 14:52:34 ID:???
$req =& new HTTP_Request($url);
で処理が止まっているようです。
尚、$urlは可変で60回位までは正常に処理でき、その後で止まるようです。
>>250 でも書きましたがレン鯖ではOKなのでHTTP_RequestのVerの違いでしょうか?
309 :
270 :2006/12/10(日) 14:54:41 ID:rl/pga4Z
すません間違いました $req =& new HTTP_Request($url); if (!PEAR::isError($req->sendRequest())){ ←この行 処理・・・ }
php5とか? つかエラー文吐かせらんないの?
file_get_contents で、http のリソースを手に入れています。 このときのタイムアウトを設定したいと思うのですがどのように記述すればいいでしょうか?
312 :
270 :2006/12/10(日) 15:06:03 ID:???
>>310 PHP5.2.0です。
Apacheのエラーログには何もでてきません。
エラー文吐かせる方法を知りません _| ̄|○
php.iniの設定変えてみたら? error_reporting = E_ALL & ~E_NOTICE display_errors = On 全然関係ないけどPHP5だと"&"は必要ないね 互換性のために使えるはずだけど(うちの環境では現に使えてるから)
俺pear使わないから知らんけど 書き方間違ってんじゃないの? つかApacheのエラーじゃなくてPearのエラーだけど
getMessage()メソッドがあるんやん
316 :
nobodyさん :2006/12/10(日) 15:40:36 ID:q972gna1
PHP初心者です。 先達のお力を拝借できると助かります。 EUCで動く環境のPHPでDBの内容をクライアントにCSVをダウンロードする際に マルチライン可能の項目に改行コードが混じると SHIFT-JISに変換する際に(mb_convert_encodingを使用) \r\nに変換されてしまい困っています。 うまいこと改行コード(CRLF?)を出力方法は無いものでしょか? 今のところ @nl2brを使い改行の前に<br />を差込 Astrtokで<br />で分解し\r\nを\\nに変換 B再度strtokで\\nで分解し 分解されるたびに mb_convert_encodingで 改行コードを出力 ここまでで一見上手く行った様に見えたのですが 小文字でn が来るとmb_convert_encodingで出力される際に 改行が出力されてしまいます。 参考になるような資料はないでしょうか?
>>316 DBに改行コード(LF)を含むテキストをEUC-JPで格納し、
出力する際はShift-JIS+LFで出力したいの?
まず、DB上でその情報を利用して検索などをしないなら、
適当にエンコードして格納しておけば?
検索する場合は、格納時に適当なキーワードを抽出して
別テーブルで管理し、本文はやはり適当にエンコードして
格納すれば?
というのがぱっと浮かんだ。
後は識者の光臨を待てw
318 :
270 :2006/12/10(日) 16:23:33 ID:???
解決しました。 原因はPHP.iniのmax_execution_time=30に引っかかり30秒で止まってました。 途中のPGをちょっといじると 「 Maximum execution time of 30 seconds exceeded」のエラーメッセージが表示されたので、 set_time_limit(300);を追加してOKになりました。
319 :
316 :2006/12/10(日) 16:33:01 ID:q972gna1
>>317 >DBに改行コード(LF)を含むテキストをEUC-JPで格納し、
>出力する際はShift-JIS+LFで出力したいの?
こういう事です。
残念ながらDBに適当にエンコードして格納して置くことは
許してもらえないのです(泣
320 :
nobodyさん :2006/12/10(日) 16:35:50 ID:tstv0UFr
無名関数を定義する方法を教えてください。 Perlならsub{}、これだけですよね?
\r\nでなんでだめなの?
>>321 どうもありがとうです。でもこれなんか使いにくいですね。
文字列の配列で渡すんですか…
クラスの静的メソッドって名前空間に関数を詰め込んだだけのような気がするんだけど、もっと何か違いがあるの?
325 :
316 :2006/12/10(日) 16:53:10 ID:q972gna1
>>322 ダウンロードしたcvsをExcelで扱いたいもので…
\r\n → \n に全部置換すりゃええんじゃないの?
>>324 たとえば、singletonパターンを利用するときはgetInstance()と
いう静的なメソッドから内部でクラスのインスタンスを生成するし、
SQLクエリの結果を静的なプロパティに格納しておいて静的なメソッ
ドから取得することもある。
どーでもいいけど、名前空間という言葉の使い方を間違えてるよ。
>>324 継承ができる。
ただし基底クラスの静的メソッド内で、派生クラスを指定して呼び出したのかどうか、という情報が復元できない難点があるので、それを補う場合は引数にクラス名を渡すなどの工夫が必要。
>>324 クラスというスコープ内に定義されるわけだから、静的・非静的にかかわらず、privateなメソッドやプロパティを使用可能な点は、「ただ詰め込んだだけ」以上の利点だとは思わんのか?
ところで、PHPの名前空間サポートは今のところどうなってんの?
>>330 そういうミーハー的なネタは自分でMLでも漁ってください。
332 :
316 :2006/12/10(日) 17:22:54 ID:q972gna1
>>326 !!!
エンコードするタイミングと置換のタイミングが味噌だったようです。
@EUC(DBの値)⇒SJISに変換
A改行コードが「\r\n」と言う文字列に変換される
BSJISで\r\nを\nに置換
C出力
↓な感じで解決しそうです!
$hoge = mb_convert_encoding (hogedb($item[$hoge]),"SHIFT-JIS", "auto");
$hoge = str_replace ("\\r\\n","\n",$hoge);
print $hoge;
ありがとうございました。
>>332 >$hoge = str_replace ("\\r\\n","\n",$hoge);
これだとバックシュラッシュ多すぎじゃない?
334 :
333 :2006/12/10(日) 17:31:43 ID:???
誤)シュラッシュ | 正)スラッシュ
335 :
333 :2006/12/10(日) 17:33:57 ID:???
>>332 あぁ、これでいいんだ。よく前を読んでなかった。何度もすまない。
kakasiをsoとしてインストールしたいのです。 どうしてなのですか?
>>337 これ、古い記事だけど実際はサポートされなかったんだから、その
旨の文章をちょこっと追加してほしいよな。紛らわしい。
まぁ、なくても 特 に 困らない機能だけど、サポートされたらちょっと
嬉しい気もする。
<?php require_once("PEAR/Info.php"); $info = new PEAR_Info(); $info->show(); ?> 上記のソースでPEARのインストール済みのものが表示されますが、 なぜか一覧にMDB2とHTTP_Requestだけが表示されません。コマンドプロンプトの[pear list]では表示されます。 何が問題なのでしょうか?
>>323 PHPでPerlより楽に書けるパターンなんて
欲しい機能そのまんまな関数があったときくらいで
それ以外は全部面倒な書き方を強いられる。
Perlは言語仕様が強力すぎだからあきらめれ。
file_get_contents (http) でタイムアウトの設定するにはどうすればいいのでしょうか? ためしにini_set('default_socket_timeout','4'); と設定してみたのですが、変わらないままでした。 使用している php は 4.4.4 です。よろしくお願い致します。
そんなんできたっけ?無理だったと思ったけど。
fsockopen使えば? 関数作ればfile_get_contentsと同じように使えるし PEAR使えばもっと楽
fsockopenの使い方があまり分からないんです
例えば ini_set('user_agent', $user_agent.'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)'); $string_contents = @file_get_contents("$url1") or $string_contents =file_get_contents("$local"); $string_contents = str_replace(",", "\n", $string_contents); をfsockopenで記述するとどうなりますか?
ヒント:マニュアルのユーザーノート
348 :
nobodyさん :2006/12/11(月) 02:51:15 ID:U3obhrAG
今実行しているスクリプトファイル名を取得するにはどうすればいいですか?
>>348 <?php phpinfo(); ?>で調べて見れ
__FILE__
352 :
nobodyさん :2006/12/11(月) 10:13:46 ID:T7VRNufo
質問です。 $fp = fopen("./file.txt"); としたあとに、既に"./file.txt"が開かれているかどうかを確認するのに、 if(is_set($fp)) で確認してるんですが、この方法で確認するのは果たしてOKなのか疑問です。 どのように確認するのが、一般的なんでしょうか? if($fp) とかでもいいんでしょうか?
353 :
nobodyさん :2006/12/11(月) 10:15:07 ID:T7VRNufo
訂正 ×is_set 〇isset
>>352 マニュアル嫁。
オープンが失敗すると、関数は FALSE を返し、 E_WARNING レベルのエラーを発行します。
@ を使ってこのwarningを抑制することもできます。
と書いてあるから、それを確認したらいいのでは。
>>352-353 >オープンが失敗すると、関数は FALSE を返し、 E_WARNING レベルのエラーを発行します。 @ を使ってこのwarningを抑制することもできます。
356 :
352 :2006/12/11(月) 10:44:26 ID:T7VRNufo
>>354-355 なるほどありがとうございます。そこまでの意味を掴み切れてませんでしたorz
$fp = fopen("./file.txt") or exit("File open error.");
おれはif文で開けることが多いな。
ファイルをアップしている間に 「少々お待ちください」 の画面を出したいのですが どのタイミングでどの様な処理をすれば良いのか見当もつきません。 良い方法を教示ください。
360 :
nobodyさん :2006/12/11(月) 16:11:58 ID:T7VRNufo
なんでもかんでもPHPでやるのはどうかと思いますよ。得手不得手というものがありますから。
PHPとJavaサーブレットの得手不得手って何?
362 :
nobodyさん :2006/12/11(月) 17:44:08 ID:knN2XhtS
セッションについて質問です。 ブラウザのウィンドウを新たに立ち上げた場合は 新ウィンドウは旧ウィンドウのセッションを引継ぎはしませんが、 タブブラウザで新しいタブを開いた場合には 新タブは旧タブのセッションを引き継いだ状態になってしまいます。 同じウィンドウのタブ同士で、セッションを同一に扱わせない処理って出来ますでしょうか?
363 :
nobodyさん :2006/12/11(月) 19:37:01 ID:TN4IXMY0
ftp_put( $conn, $remote, $local, FTP_ASCII); なら動作するんですが、 ftp_put( $conn, $remote, $local, "FTP_ASCII"); だと ftp_put() expects parameter 4 to be long というエラーが 出ます。理由をおしえてくり。 $mode = "FTP_ASCII"; ftp_put( $conn, $remote, $local, $mode); も同じエラーが出ます。
PHPでエクセルファイルを操作することってできますか? 具体的にはCSVの一枚表だけでなく、一つのファイル中に複数のシートを作ったり 印刷範囲の設定などをしたいと考えています。
出来るよ。印刷範囲はしらんけど。
複数のシートを作るのはどうやるんですか?
addWorksheet関数だよ。
ありがとうございます。PEARのExcel Writerですね。 ちなみにサンプルではaddWroksheetメソッドのコール時に参照代入になっていますが オブジェクトのコピーは自動で参照になると思ってましたが これは必要なんでしょうか?
>>363 これ "FTP_ASCII" はFTP_ASCIIという文字列。
これ FTP_ASCII は定数。
引用符で囲むと意味がぜんぜん違うものになる。
ためしに $mode = FTP-ASCII; にしてみな。
371 :
370 :2006/12/11(月) 20:40:29 ID:???
間違えた。 $mode = FTP_ASCII;
こういうミスがデバッグを苦しめるんだなw
374 :
340 :2006/12/11(月) 22:09:45 ID:???
>>359 最近PHP5向けのpeclでそういうのが出てた。
なんで出来ないかは「file upload progress php」あたりでググってみると分かる。
>>340 おいらのPEAR/Info.phpはPHPで記述されている
mb_convert_eocoding()を配列の要素全てに適用するには array_map()を使うしかないですか? その場合to_encodingも配列で渡さないといけないようですが countで数えるなりして同じ数の文字コードを格納した配列を作らなければならないんでしょうか? 数百個になりそうでちょっと気が引けるのですが・・・
mb_convert_variables()
おー、ありがとうございます 独自関数とarray_walk_recursiveで作ったところでした・・・
379 :
340 :2006/12/11(月) 23:43:45 ID:???
>>375 俺のもPEAR/Info.phpはPHPで記述されています
381 :
nobodyさん :2006/12/12(火) 02:10:30 ID:zaiE1Sl7
掲示板とか日記とかをPHPで作るとき、 ユーザーからの入力は当然エスケープして表示するわけですが、 このとき、ハートマークとかコピーライト記号とか、そういう特殊記号があった場合に、 それらだけをエスケープせずに表示するにはどういう実装方法を取るべきなのでしょうか?
>>381 自分で実体参照文字リストとか作って配列に入れといて、
htmlspecilacharsかけた後の文字列とその配列の中身を比較して、
同じのがあればそれをアンエスケープすれば?
たとえば「♥」を見つけたら「?」に戻す(アンエスケープする)とか。
383 :
382 :2006/12/12(火) 02:43:58 ID:???
・・・あ、よく考えたらそれじゃダメか。 エスケープされた「後」に、実体参照文字だけ元に戻したいとなると これじゃ無理だ・・・
まあ、要は頑張れってことだ、ということだけはわかった。
>>383 「&amp;#[0-9]+」を見つけたら「&amp;」→「&」変換するとかじゃ無理かな…
>>385 一番手っ取り早い力ワザはそれだよね。
ただし、何かセキュリティ的にヤバい穴が出来ないか心配。。。
>>385 そういう置換をするための正規表現ってどう書けばいいの??
よく分からないから当てずっぽうでこんなの↓書いてみたけど当然ダメだったorz
$text= htmlspecialchars('ハートだよ?');//文字列全体をエスケープ
$regex = "^&{1}[0-9]{3,6};$";
preg_replace("/".$regex."/", "&\1", $text);//実体参照文字だけをアンエスケープ
388 :
387 :2006/12/12(火) 04:56:10 ID:???
あ、しまった。なんか書き込み時に&が勝手に変換されちゃってる。 仕方ないので半角&を全角&にして書き込んでみます。 $text= htmlspecialchars('ハートだよ&#9829;');//文字列全体をエスケープ。&は実際には半角 $regex = "^&amp;{1}[0-9]{3,6};$";//&は実際には半角 preg_replace("/".$regex."/", "&\1", $text);//実体参照文字だけをアンエスケープ
phpでrss feedを生成したいのですが、うまくいきません。 やりたいことは、出力したい内容をphpでデータベースから一回ごとにリアルタイムでとってきてxml形式のファイルを動的に生成出力したいのです。 単純に <?xml version="1.0" encoding="utf-8" ?> <rss version="2.0"> <channel> <title>.... という文字列を出力するだけではだめなのでしょうか? ブラウザでアップロードしたURLを見てみても、見ることができません。 ページが見つかりません やその他のエラーは出ず、 アドレスバーにだけそのURLが入っている状態で、ブラウザの内容は前(任意)のサイトのままになってます。
>ブラウザの内容は前(任意)のサイトのままになってます。 ブラウザのキャッシュが効いてるんじゃないのか?
PDOについて、 $db=new PDO($hoge1.":host=".$hoge2.";dbname=".$hoge3,$hoge4,$hoge5); $stmt=$db->query("SELECT * FROM hogetable"); //$stmt=NULL; while($row=$stmt->fetch(PDO::FETCH_ASSOC){ $stmt2=$db->prepare("INSERT IGNORE fugatable (fuga) VALUES (?);"); $stmt2->execute(array(row["hoge"])); } のようなコードを書きたいのですが、 $stmt=NULL;を入れないと$stmt2->executeが実行されないのは何故なんでしょうか。
PHPのマニュアルのunserializeに、 >エラーやシリアライズされた FALSE 値をアンシリアライズする場合、 >FALSE が返されます。この特殊なケースは str を serialize(false) >で比較する、もしくは E_NOTICE をキャッチすることで区別することができます。 と書いてあるのですが、1,2行目は $str = 'hage'; if (@unserialize($str) === false && $str != serialize(false)) { echo '1:unserialize error'; } ということだと理解しました。 で、3行目なんですが、キャッチと言う言葉から try { $arr = @unserialize($str); } catch (exception $e) { if ($e->getCode() == E_NOTICE) { echo '3:unserialize error'; } } と言う事かなと思ったのですが、どうも違うようです。 「E_NOTICEをキャッチすること」とは具体的にどういうことなのでしょうか?
PDO::query() を次にコールする前に 結果セット内の全てのデータを取得しない場合、そのコールは失敗します。 PDOStatement::closeCursor() をコールし、次に PDO::query() をコールする前に PDOStatement オブジェクトに関連付けられたリソースを解放してください。
マニュアル読まないでアバウトな感覚で使ってるからそういう疑問が出るんだろうね。 サンプル重視のアホばっかだなwww
>>395 お前こそ
>>1 も読まずに何をほざいてるの?お前みたいな馬鹿がいるから
>>1 も、マニュアルも読まない馬鹿が増えるんだよ。
>>396 お前のように文句しか言わない池沼はうせろ。
ま、ほんとは答えられないんだよねw
人のことを言う前に答えろや
お前が吹っかけてきたんだろうがw 形勢不利と見るや責任転嫁ですか? 分かった分かった。無理すんな。 くだ質スレでケチつけるしかないほど普段の生活で抑圧されてるんだな。 でも次からは雑談スレやチラ裏でやれ。
フェラチオしたい…
>>391 なんかおかしいならとりあえずエラー出そうよ
$stmt2 = $db->prepare("INSERT IGNORE fugatable (fuga) VALUES (?);");
if (!$stmt2) {
var_dump($db->errorInfo());
exit;
}
こんな感じでいける
$db = new PDO("mysql:host=localhost;dbname=test", 'user', 'pw');
$rows = $db->query("SELECT * FROM hogetable")->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
$stmt = $db->prepare("INSERT IGNORE fugatable (fuga) VALUES (?);");
$stmt->execute(array($row["hoge"]));
}
404 :
nobodyさん :2006/12/12(火) 14:20:40 ID:K9EOWnsJ
テキストファイルの内容を全行読み込んで それを違うテキストファイルに追加して書き込むにはどうすれば? 書き込むファイルには、すでにテキストが書き込まれていて その後に、追加したいんですが
>>404 追記したいファイルを"a"モードでfopenして書き込めばOK
406 :
nobodyさん :2006/12/12(火) 14:30:10 ID:K9EOWnsJ
ありがとうございます!! テキストファイルの内容を全行読み込んで 全行書き込むには forループさせるしか方法はないんですか?
>>406 file_get_contents(), file_put_contents()とかもアリじゃない?
サーバの引越しとかDBの調整とかスクリプトのテストとかをするときに、 アクセスしてきた人に対して一時的に「メンテナンス中」と表示するには どうしたらいいんでしょうか? イメージとしては、管理者(自分)だけはいつも通りサイトにアクセスできるけど、 一般の訪問者はどのページにアクセスしようとも、 mod_rewriteか何かで、メンテを知らせるページに強制ジャンプさせる…みたいな感じです。
411 :
nobodyさん :2006/12/12(火) 15:33:14 ID:j1klqrWE
複数のプログラムの実行についてお聞きしたいのですが。 例えば、A.php,B.php,c.phpというプログラムがあったとして、Aを実行して 処理が終わったら、B,Cの順に実行するということをしたいのですが、どうすれ ばいいでしょうか?よろしければ、お教えください。
>>411 execute.phpというファイルに
<?php
require('A.php');
require('B.php');
require('C.php');
と記述して、execute.phpにアクセスするとか、単にそれぞれの
ファイルの末尾にrequire()を追加するのは?
>>411 そんなことすら自分で分からないレベルなら、
そういうことをやらないほうがいいと思う。
絶対にいろんなバグや予期せぬ動作が起きまくる。
>>407 今年一杯で終了じゃなかったっけ?カナシス
415 :
nobodyさん :2006/12/12(火) 15:47:21 ID:8yL3wR52
issetとemptyの使い分けがわかりません。 どういったときに使い分けるのでしょうか?
>>415 isset = コップが有るかどうか
empty = コップに水が入っているかどうか
417 :
nobodyさん :2006/12/12(火) 16:00:35 ID:8yL3wR52
>>416さんのとてもわかりやすい例えで解決しました。 さしつかえなければ416さんの得意分野をおしえてください。
くだらんネタは書き込まなくていいよ
>>413 わからないから
>>411 は質問したんだろ。
>絶対にいろんなバグや予期せぬ動作が起きまくる。
これは当たり前のことだろうが。それともお前はバグを起こしたことがないのか?
お前がバグさえ起こしたことがない天才プログラマーなのは勝手だが、意味不明な
アドバイスをするな。
>>420 = 時々沸いてくる意味あるアドバイスもせずケチつけるだけのやつ。
自戒乙。
最初は誰でも知識がないんだから質問して知識をどんどんつけていけばいいじゃないか。 自分の知ってることであれば答えてやるから遠慮せず質問ぶつけてこい
>>420 まぁ、そういうお前にもこのスレ読んでくれ
なんて誰も頼んでないわけだが。
>>422 だよな。お前みたいのがいてよかったよ。
424 :
411 :2006/12/12(火) 16:19:50 ID:j1klqrWE
先ほどのことなのですが、AとBはそれぞれ単体で動かすと、正常に処理できる のに、require.phpとして <?php require('A.php'); require('B.php'); ?> として実行したら、Aの部分しか処理できていませんでした。 何故なのでしょうか?
426 :
411 :2006/12/12(火) 16:27:03 ID:j1klqrWE
>>426 うーん、わからん。
実は全角の<?phpになってるとか...それはないか。
428 :
411 :2006/12/12(火) 16:43:36 ID:j1klqrWE
そうですか。。。どうもでした。
>>411 パターン1
execute.phpからAへ飛ばす
処理が終わったら行の終わりにBへ飛ばす記述
処理が終わったら行の終わりにCへ飛ばす記述
ぱたーん2
execute.phpというファイルに
<?php
require('A.php'); Aの行の終わりに「Aの処理が終了した」変数Aをセット
require('B.php'); 変数AがTRUEならBを処理→変数Bをセット
require('C.php'); 変数CがTRUEならB
>>413 ,421,423,425
お前に言ってんだよw読解力無いな。鸚鵡返ししかできんのか。
さっさと失せろ。
だが断る。
>>431 必殺「鸚鵡返し」。 お前が
>さっさと失せろ。
まぁ落ち着けよ
435 :
PHP出版 :2006/12/12(火) 17:02:35 ID:???
eval("include('A.php')"); eval("include('B.php')");
437 :
nobodyさん :2006/12/12(火) 17:05:27 ID:apzoBj1l
たくさんの入力項目を元に、 ファイルを作成するプログラムを作っているのですが、 $a = $_POST['a']; $b = $_POST['b']; $c = $_POST['c']; みたいなかんじで変数でごちゃごちゃになっています。 もうちょっと綺麗な書き方あったらぜひ教えてください。
>>436 素直に読めば
>>419 にケチをつけているのではないことくらい自明だと思うが?
まあいいや他所でやれ。
439 :
軟式PHP :2006/12/12(火) 17:12:00 ID:???
>>437 他人が作ったソースを読んでみるのも勉強になるお。
>>438 そうか?オレは
>>419 に対してだと思っていたが。
まぁ、とにかくレスアンカー必須のほうが誤解もなく安全だろ。ということでみなさ
ん、マナーとしてレスアンカーはきちんとつけようね。
>>437 extract()のマニュアルを調べるといいかも。
>>437 配列とか。
なんかプログラマって、いちゃもんつける人多いよね。
理系だから、完全な解を求めたがるような印象…
>>437 $key = array($_POST['a']=>'a',$_POST['b']=>'b',$_POST['c']=>'c');
echo $key['a'];
444 :
nobodyさん :2006/12/12(火) 17:20:08 ID:apzoBj1l
みなさんどうもありがとうございます! さっそく教えていただいた配列でやってみたいと思います。 extractもマニュアルでひいてきます。
446 :
nobodyさん :2006/12/12(火) 17:23:16 ID:8yL3wR52
aaa.txtが存在しまして、file関数で変数$fileに取り込む記述があります。 $file = file("aaa.txt"); ファイルが開けない原因を考えているのですがわかりません。 どなたかアドバイスお願いいたします。
パーミッション
449 :
nobodyさん :2006/12/12(火) 17:41:25 ID:8yL3wR52
<<447-448さんありがとうございます。 やはりパーミッションですよね。 windowsでテストしているのですが、この環境でlinuxと同じように パーミッションをいじくる方法ってありませんか?
$aが0のとき、empty($a)がTRUEになるのですが、 マニュアルだとnullや0はFalseを返すと書いてあるのになぜでしょうか?
451 :
391 :2006/12/12(火) 17:48:07 ID:???
>>393 >>402 超ありがとう!!
やっぱり、いったんfetchAllしてforeachで回すのがいいか。
>>452 勘違いしました(汗
クエリーから送った0だと空扱いにならないんですがなぜでしょうか?
この記述はAが出力されますが、クエリ文字を$aにおくるとBになるんです。
$a = 0;
if (empty($a)){
echo "A";
}else{
echo "B";
}
0とnullの違いわかってる?
>>453 よくわからないので、できればソースを。
>>454 おい、emptyでは0もnullもいっしょw
458 :
453 :2006/12/12(火) 19:08:03 ID:???
すいません、勘違いしてました。 なるわけないですね。
>>458 すげぇ、おちだなwwwwwwwwwwwwwwww
混乱させた罪は重い
461 :
411 :2006/12/12(火) 19:26:37 ID:j1klqrWE
エラーを全表示にしたら、Fatal error: Maximum execution time of 30 というエラーが出ていて、php.iniを修正したら解決しました。 お答えくださった方々、ありがとうございました。
464 :
nobodyさん :2006/12/12(火) 22:23:01 ID:aSyT8QN3
ある。
>>464 あまりにも華麗に入ってきたから気づかなかったが、よく考えたら
その質問は
ス
レ
違
い。
「第三者がUPした任意のファイルをダウンロード」する時点で、 全てはダウンロードする側の自己責任。
XSS絡みでPHP使用する場合の話だから あながち完全にスレ違いってわけでもない
>>464 をスレ違いじゃないとすればApacheの設定やJavaScriptの使い方
を尋ねてくる輩まで全部世話しないといけなくなるぞ。
>>464 の質問にはPHPに絡むと思われる記述はどこにもないじゃん。
472 :
nobodyさん :2006/12/12(火) 23:42:04 ID:Fq05kJcv
SESSIONって使ってますか? 自分でファイルに書き出して、セッション管理する方が サーバーの設定に惑わされることもなくていいように感じるけど。
ぱくられたらおわり
474 :
ID出し忘れてました :2006/12/13(水) 02:35:11 ID:e6aGkkm7
サーバの引越しとかDBの調整とかスクリプトのテストとかをするときに、 アクセスしてきた人に対して一時的に「メンテナンス中」と表示するには どうしたらいいんでしょうか? よく大手サイトなどでメンテナンスのときになってるようにしたいです。 イメージとしては、管理者(自分)だけはいつも通りサイトにアクセスできるけど、 一般の訪問者はどのページにアクセスしようとも、 mod_rewriteか何かで、メンテを知らせるページに強制ジャンプさせる…みたいな感じです。
if ($_SERVER['REMOTE_ADDR'] != "おまいのIP") { header('Location: メンテナンス中のページ'); die(); }
476 :
nobodyさん :2006/12/13(水) 04:28:27 ID:e6aGkkm7
>>475 なるほど、その手がありましたか!! 意外と盲点だった・・・。
大規模サイトもそんなシンプルな手法なのでしょうか?
言っておくけど、この板に大規模サイトなんて触ったことある人はいないよ。
大規模サイトってどのくらいの規模以上のものを言うの? yahoo並、とかいうあいまいな基準を出されても分からないから数値でよろ。
>>477 なんでいないと決め付けるの?
案外身近にいるもんだよw
>>478 少なくとも、1サイトで「ロードバランサ+Webサーバ2台+DBサーバ1台」
という構成が、大規模サイトの最低基準だと仮定すると??
>>480 その構成は金の無駄じゃね
ロードバランサなんて使わずに、DNS ラウンドロビン すりゃいいじゃん。
>>481 問題点
1.耐障害性の欠如
分散先のサーバの障害検知は原則として不可能である。
そのため、分散先のサーバのうちの1つだけがサービス不能な場合等に復旧が遅れがちである。
2.分散先サーバの通信継続性
接続ごとに接続先が違うと、接続の継続性が求められる
サーバの場合に問題が起きる可能性がある(暗号化通信など)。
3.分散先サーバの同期
分散サーバのコンテンツの内容が同一でないと、
接続に問題が起きる可能性がある(Webサーバでのリンクなど)。
4.DNSキャッシングの情報更新の際に生じる時差
5.トラフィック負荷を分散する際の予期せぬ偏り
1〜5の問題があるからロードバランサーなんだろうw
>>477-480 今まで関わったWeb系で一番規模が大きいのは、
Webサーバー6台、DBサーバー2台、メールサーバー1台、SSL処理サーバー1台、ロードバランサー1台だった。
(大規模サイトかわからんがな。ちなみに携帯メインサイト PCサイトもあるけどあくまでも携帯中心だった)
PHPが使われてたのはPCサイトだけだったけど・・・
Perl60% Java30% PHP10%なサイトだった。最初はJavaだけだったはずが、PerlとPHPもやることに/ ,' 3 `ヽーっ
>>482 >1〜5の問題があるからロードバランサーなんだろうw
他人の文章を丸パクリしたくせに生意気なこと言える立場かよw
>>483 ちょw そうです。見栄が張りたいんですw
わざわざ検索されたんですねw
乙ですw
>>486 うわぁw こいつ完全に開き直ってますwww
>わざわざ検索されたんですねw
>乙ですw
余裕あるように見せても、お前、実際かなり恥ずかしいぞwwwww
>>482 ┐(´ー`)┌ ぷっ
まぁ、これは槍玉に挙げられてもしょうがないわな。
お願いだから、くだらなさ、レベルの高さ、規模の大きさに関連する話題でこのスレを荒らさないでください。
別に話題としてはしてもいいけど、 煽りにいちいち反応するなよ。餓鬼じゃあるまいし。
493 :
nobodyさん :2006/12/13(水) 11:33:34 ID:teIa09dB
教えてください。 $a = array("あ",0,"い","う","え","お"); $b = array("か",7,"き","く","け","こ"); $c = array("さ",9,"し","す","せ","そ"); $d = array("た",1,"ち","つ","て","と"); $e = array("な",5,"に","ぬ","ね","の"); $f = array("は",6,"ひ","ふ","へ","ほ"); という$a〜$fの配列を、数字順に$a,$d,$e,$f,$b,$cという風に 並び替えたいのですが、スマートに書けません。 どんな書き方が負荷のかからないスマートな書き方なんでしょうか?
494 :
493 :2006/12/13(水) 11:35:08 ID:teIa09dB
$list = array($a,$b,$c,$d,$e,$f); $New_list = array(); $n = 0; while(count($list) > $n){ if($n){ $f = 1; $m = 0; while($f){ $x = $list[$n][1]; $y = $New_list[$n - $m - 1][1]; if($x < $y){ $New_list[$n - $m] = $New_list[$n - $m -1]; $New_list[$n - $m - 1] = $list[$n]; if($n == $m){ $f = 0; } }else{ $f = 0; $New_list[$n - $m] = $list[$n]; } $m++; } }else{ $New_list[$n] = $list[$n]; } $n++; }
配列の2番目($a[1]〜$f[1])を配列にいれて、 sortすればいいだけでは?
>>492 使い古された論法だが、おまいもいちいち反応してるやんけ。
>>493 usort($list, cmp_arr);
function cmp_arr($a, $b) {
return $a[1] < $b[1] ? -1 : $a[1] > $b[1];
}
497 :
493 :2006/12/13(水) 12:05:12 ID:???
498 :
nobodyさん :2006/12/13(水) 12:06:53 ID:BBaxillB
テキストファイルをfile()で配列にして、そこからE(全角)で始まる 英数字の文字列を取り出したいのですが、うまくいきません。(処理されない) $file_array=file("$filename.txt"); for($i=0; $i < 10; $i++) { $str = mb_ereg("[a-zA-Z][a-zA-Z0-9]*",$file_array[$i]); if($str) { $gakuseki = $str; echo "$gakuseki"<br>\n; } //その他の項目 } このような感じで、Eから始まる文字列を抜き出す処理を加えると、 何も処理されなくなってしまいまして。。。 よろしければ、お教え願いたく。
499 :
nobodyさん :2006/12/13(水) 12:19:07 ID:bSWpJk+Q
JpGraphで折れ線グラフ作ってるんですけど、 プロットに適当な文字列を表示することってできるんでしょうか? プロットの値を表示することしかできないんでしょうか? 返答、お願いします。
>>498 $lines = new ArrayIterator(file('file.txt'));
for ($lines->rewind(); $lines->valid(); $lines->next()) {
mb_ereg("[a-zA-Z][a-zA-Z0-9]*", $lines->current(), $matches);
list($str) = $matches;
echo ($str ? $str."<br />\n" : '');
}
501 :
493 :2006/12/13(水) 12:38:04 ID:teIa09dB
>>496 で教えていただいたものについて、
$x = 1;
usort($list, cmp_arr);
function cmp_arr($a, $b) {
return $a[$x] < $b[$x] ? -1 : $a[$x] > $b[$x];
}
と書き換えましたが正しく動作しませんでした。
return $a[1] < $b[1] ? -1 : $a[1] > $b[1]; の数字部分は変数ではなく
数字を入れないとダメなんでしょうか?
関数の中はスコープが違うから$xは未定義だよ
503 :
493 :2006/12/13(水) 12:43:48 ID:teIa09dB
失礼しました。 $x = 1 を書く位置が悪いんですね・・・ すみません
三項演算子は読みにくいから使わないほうがいいよ
>>500 Iterator使うならforeachしようよ。そしてforeach使うなら、最初からただのarrayでおk。
>>484 で、構成は分かったけど、それでユーザー数とかPVとかはどれくらい?
あと1日のトラフィック量とか、そういうのが分からないと
サイトの規模が分からないでしょう。
三項演算子が読みづらいってことはないでしょ。 使いたい人は使えばいい。
クンニされたい…。
三項演算子なんて実務で使ったら上に殺される
それなら俺は殺されまくりんぐだなw
>>504 ,
>>509 なにこいつら?たかが三項演算子くらい使いたいところで使えばいいじゃん。
三項演算子くらいで文句言うのはキモイ。
>>505 まぁ確かにOOPも理解できないお前にはIteratorは一生無縁だろうな。
質問です php 5.1 mysql 5.0 apache 2.0 zend framework 2.0 AJAX系の非同期通信で、エラーが出たときに、画面を遷移させたいのです。 ただリクエストの戻り値の行き先を<div>タグ内にしていて、 実行すると、エラー画面が、その<div>に全部入ってしまいます 現状、 header("Location: error/index"); みたいなことしています (zend controller無しだと、headers already sent みたいなエラーで怒られますが…) PHP内で完結して、画面を遷移or移動させる方法って、他にありませんでしたっけ? (JavaScript込みなら方法はあるのですが、安全性を求められている所なので使えません…)
>>511 PHPは言語自体がOOP向きじゃないから
>>505 みたいなカスが出てきても仕方ないと思うが。
自分が使えないからって
>ただのarrayでおk
とか言いだすのはひどすぎるけどな。
もうお舞ら可燃度高すぎw もうちょっと冷静にいこうよ。
516 :
515 :2006/12/13(水) 15:18:54 ID:???
全角英数字の文字列を取り出して、半角に変換すると文字化けしてしまう のですが。(文字列を取り出した段階では文字化けしていません) $get_id = substr($array_id,0,16); ・・・・ex A0103360 $convert_id = mb_convert_kana($get_id,"a"); このようにして取り出した全角英数字の文字列を半角に変換したいのですが 文字化けしてしまいまして。どうすれば正常に変換されるでしょうか?
>>517 substr() -> mb_substr()にしてみて。
>515>516 ありがとう〜〜〜 516のメソッドのページは見たことありませんでした〜〜 熟読してみます〜〜 ……………やっぱPHPで、ページ遷移させる方法ってのありませんでしたっけ?
520 :
517 :2006/12/13(水) 15:40:10 ID:???
>>518 回答どうもです。
mb_substr()にしてみましたが、文字化けがなおりませんでした。
ほかに手はないものでしょうか?
Zend_Controller_Actionクラスの_forward()というメソッドで エラーが発生したときにエラー処理用のActionに処理を移せば いいかと。 class IndexController extends Zend_Controller_Action { public function indexAction() { //エラーがあったら他のActionに処理を移す if ($error) $this->_forward('IndexController', 'errorAction'); } public function errorAction() { //エラー処理 } }
522 :
517 :2006/12/13(水) 15:47:48 ID:???
mb_internal_encoding を使ったら文字化けなおりました。
書き込まれたソースは半角スペースが削除されて読みにくいので、よかった らこれで変換してから書き込んでください。 <?php $string = <<<END //code END; $string = preg_replace('{ }', ' ', $string); $string = preg_replace('{\t}', ' ', $string); echo $string; できれば誰かJavaScript版を作ってくれると使いやすくていいと 思うんだけど。
>>524 それはいいけど、preg_replaceよりstr_replaceのほうがいいんじゃね、この場合?
preg_replaceの第一パラメータは/pattern/にしないと。 preg_replace("/pattern/", "replacement", "strings");
メール送信について相談なのですが、 BCC送信のように、複数宛先を一括送信する場合は、配列にメールアドレス を入れて、mail関数の処理をforで回すという考えでいいでしょうか? また、特別なソフトを使わない場合、PHPでメール送信するには mail関数やsendmailを使う以外無いのでしょうか?処理速度が心配です。
{}でもおkだけど//のほうがなじみがあるね
>515>516>521 返信ありがとうございます〜 勉強させて頂きました感謝です。 結論から言うと、 $this->_forward('IndexController', 'errorAction'); で、確かにページは出ました。 「<div>タグ」の中に;; クライアント XMLHttpRequestを送信 ↓ 鯖 forwardで違うアクションのページを出力 ↓ クライアント あ、戻り値?何? XMLHttpRequestでしょ? タグの中にinnerHTMLねw 戻り値が何であろうと、根こそぎjs上で指定された場所っぽいです アクションは、途中で変わったので、正規アクションが動く前に処理できる所まで着ました。 もう少しの所まで来た気がします。
530 :
nobodyさん :2006/12/13(水) 16:36:09 ID:+OBhpWUX
2006年12月13日を2006/12/13の形にしたいのですが どうするのが簡単でしょうか?
$str = "2006年12月13日"; $str = preg_replace('/年|月/', '/', $str); $str = preg_replace('/日/', '', $str); echo $str;
指定したディレクトリの .txt .pdf のファイルを一括して削除 したいんですけど、何か方法はないでしょうか?
534 :
nobodyさん :2006/12/13(水) 17:25:49 ID:+OBhpWUX
$hoge[$num] 感覚的にこんなことがしたいのですがどうすればいいでしょうか? $numには英数字が入っています
>>535 ${"hoge".$num}
>>533 ディレクトリなめて
拡張子がそれらか比較
該当したらファイル削除
537 :
nobodyさん :2006/12/13(水) 17:37:15 ID:dNCg3wG0
$hoge["{$num}"]
538 :
nobodyさん :2006/12/13(水) 17:41:09 ID:F8GTcB6w
ヘッダが濃厚
IEのバージョン
PHPで.aiファイルをswfやjpgに変換できるようなライブラリとかありますか? やりたいことはアップロードされた.aiデータをswfをリアルタイム変換したいんですけど。
<?php
$url = "
http://2ch.se/ ";
$fp = @fsockopen($url,80,$errno,$errstr,5) or die("ゴメン無理");
print $fp;
?>
なぜか表示されません原因は何でしょうか?
543 :
542 :2006/12/13(水) 19:01:39 ID:???
修正 目的のURLが表示されません
接続してるだけでおk?
546 :
542 :2006/12/13(水) 19:21:00 ID:???
<?php
$url = "
http://2ch.se/ ";
$fp = @fsockopen("$url", 80, $errno, $errstr, 30) or die("ゴメン無理");
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: $url\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>
これでも無理でした
$url = "2ch.se";
548 :
542 :2006/12/13(水) 19:58:14 ID:???
ありがとうございます、解決しました。
549 :
505 :2006/12/13(水) 21:54:09 ID:???
>>500 ,511,513
本気で言ってるのか、ただ煽りたいだけなのか・・・
まず500のforの部分をforeach ($lines as $line)とでも書いたらどうよ。
しかもそのケースだったら、Iterator使っても意味なさすぎ。
550 :
542 :2006/12/13(水) 22:06:51 ID:???
たびたびすみません
>>546 でページを表示したときに出る
HTTP/1.0 200 OK content-type:text/html
という表示を消したいのですが
>>546 のどこをどう変えればいいのでしょうか?
>>549 三項演算子の不便さをキモイという素人なんだから放っておけ。
552 :
538 :2006/12/13(水) 22:24:45 ID:sfCDWF8R
>>551 三項演算子が不便!?なにこのド素人。
お前一回くらいオープンソースで開発されてるアプリケーションの
ソース見てみろよ。自分がいかに恥ずかしいことを言ってるか気づ
くよ。
>>553 大多数が見づらい書き方を推奨するなよタコ。
どこのコーディング規約でもたいてい禁止されてる。
>>554 なるほど。それは知らなかった。
>どこのコーディング規約でもたいてい禁止されてる。
では早速、禁止されてる有名なプロジェクトあげてみてくれる?
>>554 「たいてい」と言うほど禁止されてはいないだろ。
一部では禁止してるみたいだけど、さすがに言いすぎ。
そもそも三項演算子も理解できない、読みにくいとか言うレベルの人間が参加してるプロジェクト なんて大したことないだろ。 大口をたたいたやつは、早く三項演算子禁止のプロジェクトをあげろよ。たいていは禁止らしいか ら山ほどあるはずだろ。
たいてい禁止ではなくてたいてい"非推奨"だな。 三項演算子なんて一般的じゃないし、可読性が大事だからね。
>>557 >そもそも三項演算子も理解できない、読みにくいとか言うレベルの人間が参加してるプロジェクト
>なんて大したことないだろ。
何言ってるんだ・・・
個人的に理解できてても、読みなれてても、
複数人がらみのプロジェクトなら
読みやすいほうを採用するに決まってるだろう・・・
>>496 の
return $a[1] < $b[1] ? -1 : $a[1] > $b[1];
〜〜〜〜〜〜
これ何か意味あるの?
>>549 お前の言うこともわかる。たしかにforeachのほうが若干すっきりするしな。
でも、pythonとかjavaをやった人間には
>>500 のほうがしっくりくる気がする。
PHPにはPHPの流儀があるだろうから、それぞれ好きにやればいいんじゃないの?
すいません、CSVから出力するときに、 順番を後ろから出力する載ってどうやったらいいでしょうか? 1〜10行までデータがあった場合、10行目から出力したいのです。
>>562 自分で調べろよ。
PGになればわかるからそういう会社入れ。
禁止っていうのは言い過ぎたかもしれんが、
よほどの事情がない限り使うなとは言われるだろう。
>>552 そのままコピペしたらいけたよ。
IEでもだめかい?
header出力するまえに何も出力ないよね?
>>550 それらの文字列なら出力しないようにすればどう?
もしくはfile_get_contents使えば?
566 :
nobodyさん :2006/12/13(水) 23:04:43 ID:2BlCBXrB
PHPのプログラムなどでよく、 送信→Now loadingの画面→送信完了ページ のようなプログラムがありますが、これはどうやっているのでしょうか? 構造のヒントだけでもいいので、アドバイスいただければと思います。
567 :
556 :2006/12/13(水) 23:06:35 ID:???
>>566 ロード画面は<meta http-rquiv="refresh"〜>でやれば簡単でいいよ。
570 :
567 :2006/12/13(水) 23:20:04 ID:???
>>569 あ、やっぱり?
自分でもそう思ったんだけど、謝るのも礼儀かなと。
>>570 珍しいよ、お前みたいなタイプは。でも、別に悪いことではないわな。
572 :
566 :2006/12/13(水) 23:35:39 ID:???
>>568 出来ました!ありがとうございます。
ただ、これの場合、繰り返し処理の動作など思い処理の場合も
有効なのでしょうか?
>>572 ベンチはかって十分な時間持たせればOK
まったくお前ら良く燃えるな。
冬だからあったかくていいぜ?
>>575 いや本人たちはいいかも知れんが、見てる分には
ちっとも暖まらんぞw
最後のともしびだから、優しく見守ってね
>>561 ん?PHPのIteratorはforeachでまわせるってことだよ。
Iteratorの5つのメソッドを明示的に呼び出す必要はないの。
明示的に呼び出すのは、イテレーションの途中で中断してもう一回再開したり、細かいことをするために使う面もあるが、Webサイトの構築でそんなシチュエーションには残念ながら出会ったことはない。
通常はforeachを用いておけば、rewindやcurrentなど、
>>500 と全く同じ順序で自動的に呼び出される。
pythonやjavaをやっていると
>>500 がしっくり来るってのは、よーわからんな。
C++のSTLと比較するなら、しっくりくるってのもまだわかるけど。
>>578 javaには拡張for文もあるし、Iteratorに拘る必要もない
まぁ、扱いなれた構文で書きたいというのも分かるし、 PHPは似たような関数を各種取り揃えてる辺りからも そういったニーズに応えようとしてるわけだから、 「PHPの構文にある限りは好きなの使えばよろしい」 でFAなんでないの? PHPならこの書き方!みたいのはそんなに無いと思う。 (大抵は制約くらいでしかそんな場面にならない)
>>579 それ俺が知らないと思って言ってるの?何を主張したいのか全然わからないんだけど・・・。
javaの拡張for文もやっていることはイテレーション(リスト状の構造を順番に走査)なわけで。
むしろ拡張for文(=構文糖)を使うってのは、PHPでいうとfor ($lines->rewind();・・・のかわりにforeach ($lines・・・を構文糖として使うことと方向が同じじゃないか。
>>580 いや、言いたいことはわかるけど、そもそも
>>500 で無意味にIteratorを持ち出している点、foreachで書けるものを無意味&煩雑なfor文に展開している点などは、俺的につっこみどころなんだが。
そもそも俺の経験上、PHPのIterator自体お勧めしないものの一つだしな。
582 :
nobodyさん :2006/12/14(木) 00:51:48 ID:6QjdxOSQ
PHPのスクリプトを組んでいるのですが、分からない点がありましたので質問させてください。 変数に文字列を格納していて、その中から特定の文字を2箇所見つけて その間にある文字列を取り出したいのですが、どのように記述したらよいのでしょうか? nfai_usdgvga_jgmandfak_flahogek_glangol_ialgkka のアンダーバーから次のアンダーバーの間を取り出し、その中にhogeが含まれる時に、 別の変数に取り出すということをしたいです。 突然の質問で、大変申し訳ありませんが何卒よろしくお願い致します。
explodeして、それをforeachでループして、ループの中でstrposしてfalseじゃなかったら変数に入れればいい
585 :
nobodyさん :2006/12/14(木) 01:06:07 ID:6QjdxOSQ
ありがとうございました。アドバイスを参考に続けたいと思います。
こう、スレを見返してみると、文字列系の質問が多いな 大体、explode, implode, array_search, array_shift, foreach, eregとかで、答えが出る感じに思う。 と、徹夜中のリーマンより。
文字列系の関数と配列系の関数は、全部憶えておいて損はないよな。
覚える必要はないけどなw 一度、全部読んでおくだけで十分
よく使うやつとか、こういうのがあったなぁぐらいでいいね。 あとはリファレンスを見ればいいし。
590 :
500 :2006/12/14(木) 10:38:40 ID:???
>>581 オレが変な書き方をしたせいで迷惑をかけてるようで申し訳ないです。
あとから拡張とか変更が楽かな?と思って、ついくせでIteratorを使ってし
まいました。でも、みなさんの書き込みを読んでるとその必要も無さそうな
のでこれからはforeachでまわすことにしようと思います。
煽りの原因をつくってしまってすいません。
すみません、質問させてください。 たとえばループ処理系の構文(for等)は、 breakでループを抜けさせることができるようですが、 if構文内で、処理を途中でも抜けさせるような関数はありますか?
無いんじゃないの
>>591 ないよ。なぜなら必要性がないから。
処理させたくないなら、単にif文をネストして処理する条件を
増やしていけばいい。
if ($a) {
if ($b) //ここで$bがfalseならbreak;したのと同じになる
{}
//もちろん$bの評価にかかわらずここは実行されるけど、それは
//書き方を工夫するしかない。
}
594 :
591 :2006/12/14(木) 11:07:47 ID:gRu0cvf6
>>592-593 トンクス!
あぁ、なるほど。
若干書き方を変えるだけでどうにもなりますものね。
1個勉強になりました、ありがとうございます!
複数の入力値があって、 全て入力されているかどうかのチェックが入っています。 入力してなかった箇所は入力してくださいと出すのですが、 送信した際、入力してた方の値もリセットされるので、 inputのvalue属性に入力した値を入れて、入力を保持した感じにしているのですが、 入力値がバックスラッシュ(\)だった場合、 なぜかバックスラッシュが2倍の数になって値に入っているようです。 これは何が原因なのでしょうか?
>>595 magic_quotes_gpcの設定じゃないかな。
配列におけるforeachのように、文字列を一文字ずつ取り出す関数や構文はありませんか?
upローダー作ってますが、 phpのみでフォルダごとアップロードするのって不可能でしょうか? javaアプレットあたりとからめる方法しか思いつかないですが・・。
>>598 それはブラウザ側の問題なのでPHPの処理では無理
input=fileの制限上無理
ありえるとすればzipを鯖で解凍してディレクトリ生成後その中に展開
>>598 単一のクライアントならクライアントのほうにFTPDを立てて、
サーバーからFTP接続してダウンロードさせるってのもトリッキーながら出来る。
mysqlをやってみようと思ってますが、初めからpear等を使うより 関数を使って処理した方が覚えるにはいいですか?
>>597 for($i = 0; $i <= strlen($str); $i++) { echo substr($str, $i); }
とか。
>>603 せめてmb_strlenとmb_substr使おうぜ
mbなんてトラブルの元はインスコしてないよ
>>606 ____
/⌒ ⌒\ ホジホジ
/( ●) (●)\
/::::::⌒(__人__)⌒::::: \ <で?マルチバイトの文字数える時はどうやるのかな?
| mj |ー'´ |
\ 〈__ノ /
ノ ノ
>>606 バイナリで判断してなんていわないでくれよw
マニュアル読んでると、 new XXXみたいにしてから使う関数とかもあるのですが、 これは普通の関数とは何が違うのでしょうか?
610 :
nobodyさん :2006/12/14(木) 21:08:15 ID:IgfNuu2k
ファイルの内容を配列に読み込んで、ある行のデータのみ削除し、 またファイルに書き込みたいのですが、流れがわかりません。 現在のやりかたは、 1.file関数でファイルAを配列に読み込む 2.不必要なデータをunset関数で配列から削除 3.削除した後の配列をファイルBに書き込む 4.ファイルAをunlink関数で削除し、ファイルBの名前をrename関数でファイルAにする というやり方を行っていますが、もっと効率の良いやり方がありましたらご教授お願いいたします。 【テキストファイルの内容】 一行目:あか 二行目:きいろ 三行目:ぴんく 四行目:むらさき
適当な変数にファイル内容を1行ずつ読み込みながら流し込んでいく 要らない部分は流さない。 最後までいって変数の内容を元のファイルに上書き。 じゃだめなのか?
>>610 $lines = file($filename);
//ここで余分な行削除
file_put_contents($filename, implode('', $lines));
// もしくは$fp = fopen($filename, 'w'); fwrite($fp, implode('', $lines)); fclose($fp);
>>601 PEARとかADOとか不要。
特に一人で趣味的に開発してるんなら、わざわざ抽象化する意味ナシ。
615 :
610 :2006/12/14(木) 21:52:13 ID:IgfNuu2k
>>612 さん
>>613 さんアドバイスありがとうございます。
php4と互換性もたせるために
>>613 さんの後者の記述を拝借させていただきましたが、
implodeがないとファイルへの書込みがおかしくなってしまいます。
fwriteは複数行のデータ(多次元配列ですかね?)は書き込めないんですね。
>>615 fwriteの第2引数は文字列だと、マニュアルに書いてある。
>>615 まぁ、なんだ、、、やりたい事を手持ちの機能を使って組み上げていくのがプログラマの仕事だ
618 :
563 :2006/12/14(木) 22:52:19 ID:???
今年のクリスマスの予定はありますか?
phpでツリーを作ります
教室でセクロスします。 見つかったら停学だがそのスリルがいい。
昔実際にセクロスで停学になった俺様が来ましたよ。
624 :
27 :2006/12/14(木) 23:33:48 ID:???
誰かおねがいします。
>>27 まずコンソールからmysqlのコマンド叩いて更新されるか確認したらいいよ。
つーか、エスケープはちゃんとできてるわけ?
626 :
nobodyさん :2006/12/15(金) 00:13:14 ID:0FUvK34I
stream_set_write_bufferってfwriteの前に使用することが推奨されてますか?
>>624 mysql_query( 〜 ) or die(mysql_error();
でエラーでないか確認してみれ。
あと俺は確実に
mysql_query("update table_$t set col_$r = '".$q."' where col_1 = '".$max2."'");
な感じに書いてるよ、めんどいけどね
つーか、PDO使ったら、エスケープも楽にできるのに。 ほとんどPHPでDB扱う際の標準みたいな立場になりつつあるわけだし。
631 :
nobodyさん :2006/12/15(金) 03:49:30 ID:yi07hMf9
emacs使ってる人に質問だけど、php-modeよりいいのってある?
PDOって何ですか
>>632 PEAR::DBの方は知ってるかな?あれはご存知のとおりPHPで書かれている
ため、普通にPHP上のAPIを使って接続してるだけ。PDOはCで書かれている
のでよりネイティブに近い接続をするから速度も速い。
また、PHP5なら例外処理もやりやすいというメリットもある。
ただ、モジュールインストールになるから対応していないサーバーも多い。
634 :
nobodyさん :2006/12/15(金) 09:56:54 ID:VrTEtYOe
多重配列のnullの要素を取り除いて配列に再度格納したいのですが、うまく いきません。 $array[0][0] =PC $array[0][1] =IP $array[0][2] =null $array[1][0] =ADSL $array[1][1] =TCP $array[1][2] =UDP $array[1][3] =null この配列からnullの部分を除いて $array[0][0] =PC $array[0][1] =IP $array[1][0] =ADSL $array[1][1] =TCP $array[1][2] =UDP このようにしたいのですが、どう記述すればよろしいでしょうか?
どうやってみて、うまくいかないと言ってるかを書けば?
636 :
389 :2006/12/15(金) 10:39:28 ID:???
phpでXML形式のファイルを出力したいのですが、うまくいきません。 phpで動的(ブラウザでアクセスがあるたびに生成する)にXML形式のテキストを出力しているのですが、 これをRSSリーダで読み込もうとしても 「登録可能なフィードが見つかりません」と うまくいきません。 出力しているテキストの形式は完全にXML形式になっているのですが、 (ブラウザでソースを見ても完全に期待するXMLファイルと同じ、しかしxmlファイルを表示するときのようにはならない) phpでRSSフィードをXML形式で出力しようとするためには何か必要なことがあるのでしょうか?
637 :
634 :2006/12/15(金) 10:43:38 ID:VrTEtYOe
>>635 そうですね。
//nullの部分を除外して多重配列を再構成//
$other_array //多重配列
$arr_word =array();
foreach($other_array as $val=> $arrValue)
{
foreach($arrValue as $val2=> $strValue)
{
if($strValue == '')
{
break;
}
else
{
array_push($arr_word,$strValue);
}
}
}
このようにしてみたのですが、nullは除外されても多重配列にはなって
おらず、ひとつの配列に要素が全て連結された状態になってしまいます。
どうか正しい記述をお教えいただきたいのですが。
639 :
389 :2006/12/15(金) 11:17:47 ID:???
こういう風です。
<?
print "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
print "<rss version=\"2.0\">\n";
print "<channel>\n";
?>
<title>title</title>
<link>
http://www.site/</link >
<description>description</description>
<language>ja</language>
<copyright>Copyright</copyright>
<pubDate>Fri, 15 Dec 2006 06:00:00 +0900</pubDate>
<item>
<title>item title</title>
<link>
http://www.site/001.html</link >
<description>item description</description>
</item>
<?
print "</channel>\n";
print "</rss>\n";
?>
HTML_QuickFormでcheckboxを生成する際 結果を以下のように配列に値が入るように生成したいのですが どうすればよいでしょうか。 <input type="checkbox" value="1" name="hoge[]"><label>a</label> <input type="checkbox" value="2" name="hoge[]"><label>b</label> <input type="checkbox" value="3" name="hoge[]"><label>c</label> <input type="checkbox" value="4" name="hoge[]"><label>d</label>
>>693 ソースの一番先頭にheader関数でxml用のヘッダ出すと解決しそうな予感。
642 :
641 :2006/12/15(金) 11:29:19 ID:???
ごめ、アンカーは639の間違い。 具体的なソースは以下。 header( 'Content-type: text/xml' );
>>639 そのソースだけならphp使う意味ないような。
こちらの関数も調べてみるといい。
SimpleXML関数 DOM XML関数 xmlwriter関数
質問させてください。 PHPで掲示板を作ってます HTMLタグを無効化するにはどうしたらいいでしょうか? htmlspecialcharsを使うと、? ←この文字が?になってしまいます。 よろしくお願いします。
646 :
645 :2006/12/15(金) 14:13:26 ID:???
あ、2chには書き込みできなかったorz 上の?は &#12316;←半角です。 よろしくお願いします。
まぁ、そりゃそうだろな。&は&になるから。 <と>だけを置換するようにしたらいいんでないかね。
>>639 curlなりでレスポンスヘッダ見て、MIMEがXMLになってるか確認してみれ
>>645 >>674 の方法以外にも、htmlspecialcharsをしてから、
特定のものだけ(この場合だと?)を置き換え。
650 :
645 :2006/12/15(金) 14:43:00 ID:???
>>647 >>649 ありがとうございます
<と>だけを置換するだけでいいんですかね?
htmlspecialcharsの意味がよくわからない^^;
どういうときに使うんだろう・・・
>>650 そもそも&#〜ってのがすでにHTMLエスケープ処理済みの表記だということは理解してる?
エスケープ済み表記をエスケープしたらそりゃおかしくなるという話。
652 :
645 :2006/12/15(金) 14:47:46 ID:???
ちなみに 特定のものだけ置換しないで、 全部の文字を普通に表示させたいです。 (2chみたいに特殊文字が?になるのは嫌なので) となるとやはり<と>だけを置換ですよね <と>だけを置換だと、危険なこととかないのかな?
あとダブルコーテーションとかシングルコーテーションも危険やねぇ。
654 :
nobodyさん :2006/12/15(金) 14:54:42 ID:zjrdLe6P
質問させて下さい。 バイナリをbin2hexで16進数に変換したあと、それをまたバイナリに戻す事は可能でしょうか? 色々みたけど見当たらない・・・packっていうのがそれっぽかったけど、使い方がよく分からない。 識者の方、ご指導よろしくお願いします
>>652 1)痴漢したくないものだけ、htmlspecialcharsに影響されなず、
一般的に使われる事の無いような特殊文字列に痴漢
2)htmlspecialchars 実行
3)特殊文字列を元に戻す
656 :
軟式PHP :2006/12/15(金) 14:59:05 ID:???
>>654 そのpackでできるよ。
<?php
$str = 'その通り';
$hex = bin2hex( $str );
print 'Hex:' .$hex . '<BR>';
$bin = pack("H*",$hex);
print 'bin:' . $bin . '<BR>';
?>
657 :
nobodyさん :2006/12/15(金) 15:04:06 ID:zjrdLe6P
>656 おおー! 素晴らしい! "H*"ってのを指定したらいいのか。 色んなオプション突っ込んで途方にくれてたところですw ありがとうございました。
658 :
645 :2006/12/15(金) 15:05:16 ID:???
掲示板で特殊文字も普通に表示させる方法としては 1.<と>だけを置換 2.ダブルコーテーションとシングルコーテーションを置換 3.trim 4.mb_convert_kana これくらいでいいのでしょうかね?
ユニコードのことをいってるのか?
660 :
nobodyさん :2006/12/15(金) 16:46:31 ID:9BwOCrLJ
都道府県フォームつくってて、 都道府県を選択後、自動で選択した都道府県の市区郡がselectできるよう(表示される) ようにしたいのですが、どうすればいいんでしょう?
661 :
nobodyさん :2006/12/15(金) 16:53:39 ID:qvbJOa4k
あああああ
662 :
645 :2006/12/15(金) 16:58:17 ID:???
ユニコードのこと?
えーと。(ユニコードは使いません)
掲示板などで、投稿された文字をそのままアップじゃやばいですよね。
だから、何か処理をしなければいけない。ってことはわかりますが
その処理は、
>>658 に書いた4つの処理でいいのでしょうかね?
メールにcsvデータを圧縮したファイルを添付しようとしています。 以下のコードでサーバー上に圧縮ファイルは出来上がり、このファイルをFTPでDLして中身を見てみると、確かに圧縮されています。 メールにもファイルは添付されてきます。しかしファイル名は hogehoge.gz ですが、中身も容量も圧縮前のcsvデータそのままになってしまいます。 base64にエンコードする際に圧縮ファイルの中身の文字列を圧縮されたままエンコードしているつもりなのですが、 どうやらcsvデータをそのまんまエンコードしてしまっているように思われます。 正しくエンコードしてやるにはどのように書いたらいいのでしょうか??
以下、コードです。 //■■取得したデータ($getdata)から圧縮ファイルを生成 //圧縮ファイルのオープン $filename = mb_encode_mimeheader("hogehoge").".gz"; $fp = gzopen($filename,'w'); //圧縮ファイルに書きこみ gzwrite($fp,$getdata); gzclose($fp); //圧縮ファイルのオープン $fp = gzopen($filename,'r'); //圧縮ファイルの読みこみ do { $data = gzread($fp, 10000);//←@ gzread で解凍せずに読み込んでるつもり if (strlen($data) == 0) { break; } $contents .= $data; } while(true); gzclose($fp); //エンコード $f_encoded = chunk_split(base64_encode($contents)); //←A エンコードしてるつもり //body文字列の生成(添付部分) $body .= "\n\n--$boundary\n"; $body .= "Content-Type: application/zip; name=\"$filename\"\n"; $body .= "Content-Transfer-Encoding: base64\n"; $body .= "Content-Disposition: attachment; filename=\"$filename\"\n"; $body .= "$f_encoded\n"; $body .= "\n\n--$boundary--\n";
圧縮ファイルをオープンしたら、そりゃ解凍された結果が読めるわなw どうして普通に読まないんだよ。
やや??もしかして //エンコード $f_encoded = chunk_split(base64_encode($filename)); でいいんでしょうか??
//圧縮ファイルのオープン $fp = gzopen($filename,'r'); これがだめぽ
668 :
664 :2006/12/15(金) 17:52:09 ID:???
自己レスれす。
>>666 これじゃファイル名1行こっきりのファイルになっちまいました。
◆質問する時の注意 ・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
670 :
nobodyさん :2006/12/15(金) 17:55:41 ID:o16g8Qpy
>>669 ごめんなさい。sageるクセが付いてまして失礼しました。
なかなかユニークな輩だな。 そろそろ"gz"で読むのがまずいことに気付いたかな?
672 :
645 :2006/12/15(金) 18:10:22 ID:???
あの〜 僕の質問よろしくお願いします。
>>672 もう色々教えてもらったんだからそれで動かしてみて問題があればそこを直せばいいじゃん。
XSSは大抵防げるだろうけど、CSRF、DB使ってるならSQLインジェクションやら
考えることは山ほどあるんだ。ってことで勉強しつつ作ってくれ。
君のは、すでに答え出てるじゃん。 それに入力の検査自体が別にphp固有の問題じゃないし。
>>671 死ぬほどありがとう。感涙にむせび泣いてます。
676 :
nobodyさん :2006/12/15(金) 18:18:08 ID:o16g8Qpy
しまった。また下げてしまった(泣)
高級なソースかけるなら評価自分ででき・・・・
>>677 高級PHPソースの割にはこのスレに質問しにくるとはアホなのか。
なんか、ereg関数とか使ってそうだなwww
680 :
PHP出版 :2006/12/15(金) 19:46:44 ID:???
bcompiler使えでFA
ereg関数つかっちゃいけないすかwwwwwww 馬鹿ですねwwww
682 :
nobodyさん :2006/12/15(金) 21:49:55 ID:Xtqi0V4I
どうでもいい煽りはいらね。
683 :
nobodyさん :2006/12/15(金) 22:06:28 ID:g5A+TTGd
erege
高級ソースをキャベツにかけてくえってことだよ。
>>681 =
>>482 =知ったかぶり厨=消えろ
ereg関数は別に使ってもいいけど、ereg関数にマルチバイト文字列を含む
パターンを使ってるのを見ると「あぁ、こいつは経験が浅いな」と思う。
ereg('[あ-んア-ン]', $string)
こういうの、なんか気持ち悪い。
>>686 >ereg('[あ-んア-ン]', $string)
この場合「こういうの、なんかいやらしい。」が正解だろ?
>>677 つーか、よくそんな怪しいソフトを使う気になるねぇ。
他にいくらでも有名なソフトあるのに。
もしかして「本人宣伝乙」ってヤツ?www
690 :
nobodyさん :2006/12/16(土) 02:01:13 ID:kvjqtHVC
b_使えってことでFA? でもなぜか俺は文字数数える仕事ってないんだよね。バイト数を数えるのは多いんだけど
691 :
690 :2006/12/16(土) 02:01:45 ID:???
すまん mb_ ね
>>677 ヘボカス初心者がやらかす三大意味不明行為(ウェブ開発編)
1.「JavaScriptによる右クリック禁止」
2.「HTMLソース表示妨害(無駄な努力)」
3.「自分の書いたしょぼいコードをやたら大事にして隠したがる」
てめえの書いたしょぼいコードなんか、誰も見たがったりしねぇよ。
宣伝目的ならスレ違いだから消えな。
PHP4.4.3のレンタルサーバーで下記のプログラムをテストしています。 結果がどうしても同じにならないのですがなぜでしょうか? <?php $a = 300.10; $b = 0.10; $a_b_sum = $a + $b; var_dump ($a_b_sum); // float(300.2) $c = 300.20; var_dump ($c); // float(300.2) if( $a_b_sum > $c) { echo "NG"; // こっち } else { echo 'OK'; } if(300.2 > 300.2) { echo 'NG'; } else { echo 'OK'; // こっち } ?>
floatだからですぅ。 文句があるなら下駄でも履かせやがれこんちくしょーっ!
696 :
nobodyさん :2006/12/16(土) 07:31:58 ID:HXTFaSG2
PDF 作成関数で位置やサイズを指定する数値の単位は何ですか?
>>686 俺もereg関数でマルチバイト文字使ってるんだけど駄目なのか・・・
別の関数を使ったほうがいいんでしょうか?
素人ですまんが教えてください。
マジ素人でスマソ。 そう言うわけで教えて欲しいのですが、 xxx.php?page=10&block_num=girl_list のような?の後に続くのは、どう言う意味なんでしょうか? なにぶんPHPと言うモノを知ったのが、今日なんでサッパリわかりません。
>>697 Perl互換正規表現関数。
>>698 ワンクリ詐欺にでも遭遇したのか?引数が意味深だな。
>>689 まぁ、たぶんアレだ・・・
女の子リストの10ページ目を見ていたわけだ…
女の子リスト…
>>696 ピクセルじゃなかったっけ?
>>700 女の子リスト・・どこぞの出会い系かアダルトサイトか?w
702 :
699 :2006/12/16(土) 11:16:56 ID:???
>>701 お舞もそう思うだろ!?いかがわしいサイトにアクセスしている
疑いが強い。
>>699 ありがとです。
>>698 girl_listワロタ・・
それはPHPというよりHTMLの内容じゃまいか?
698だけど 見てたのは確かにアダルトなんですが、普通のURLってxxx.phpてな感じで終わるじゃ〜ないですか。 疑問は、この?page=10&block_num=girl_listの部分なんです。なんの為に、こんなのがひっついているのですか? なんの為に、こんなのがあるのか興味があるんです。
>>704 やぱっりそうなのかよww まぁ、こうもあっさり認められると
これ以上つっこみようもないが。
?以降は(この場合)PHPプログラムに情報を渡すために使われるんだよ。
例えばblock_numの値に応じてページの内容を変えることができる。
block_num=girl_listならお前の好きな女の子のページが表示されるだ
ろうし、block_num=boy_listなら(開発者がページを用意してれば)男だ
らけのページが表示されるかもな(キモすぎる...)。
page=10をpage=11とかpage=09にすると違うページが表示されるかもな。
そのへんは自分で?のついたURLをいろいろいじくってるとなんとなく実感
がわいてくるんじゃない?
普通はxxx.phpで終るけど ?page=10&block_num=girl_listが付いてると不安になるの? その辺を聞きたい。
そうなんですか。早速イジってみます。ありがd
>>706 別に不安にはならないけど、なんの為にあるんだろ?って気になったんです。
>>708 君のレスの、
「って気になったんです。」
も気になるよ。
なんで
>>709 は
>君のレスの、
>「って気になったんです。」
>も気になるよ。
と、下らなすぎるレスをしてしまったんだろ?って気になったんです。
>>698 が何歳なのか気になりました
大人にしては質問が子供すぎる
子供にしては見てるサイトが…
そろそろ誰かがまともな質問をしないと、スレが変な方向へ進む予感。
713 :
645 :2006/12/16(土) 13:03:42 ID:???
>>645 です。
結論として
掲示板に投稿されたデータは
特殊文字を表示させたいならhtmlspecialcharsは使わない
<と>と'と"を置換する。
以上でよろしいのでしょうか?
携帯電話用のホームページで、imode用・au用・softbank用と個別にサイトを作り、一ヶ所を更新すれば全キャリアで更新ができるような、そんなモノはPHPで作れますか?
715 :
nobodyさん :2006/12/16(土) 13:42:21 ID:M68Se3i9
テンプレみたいなの作ってそれを各キャリア用のページに読ませるようにすればどうよ?
$array['jp'] = "日本"; $array['usa'] = "アメリカ"; $array['uk'] = "イギリス"; から jp = 日本, usa = アメリカ, uk = イギリス という文字列を表示させたいのですが、 何か簡単な関数はあるでしょうか?
foreach ($array as $key => $value) echo $key.' = '.$value.', ';
print_r
>>713 危ないやり方だな。
フェイルセーフを考慮するなら、「まずはエスケープする」べし。
お前の考え方は「まずはエスケープしない」になっている。
フェイルセーフって何ですか?
レンタルブログの更新を文字列で抽出して 題名、URL、記事をHTML形式で出力したいんですが、どうすればいいですか?
RSSよめよww
724 :
722 :2006/12/16(土) 16:55:08 ID:???
そうだな
726 :
713 :2006/12/16(土) 17:41:32 ID:???
>>720 <と>と'と"を置換するだけじゃ危険なのですか?
>>721 、
>>726 まずフェイルセーフの概念をよく理解しろ。用語の意味くらい自分でググれ。
で、その概念をシステム制作に当てはめて考えろ。
そしたら
>>713 のやり方がいかに危なっかしいかが分かる。
重要なのは「優先順位」だ。どんな処理を優先させるのか。
安全対策に万が一「抜け・ミス」があったときにでも危険を防ぐにはどうしたらいいのか。
よく考えろ。考えても分からなければ、危険なので難しいことはやろうとするな。
>>726 っていうかお前さ、
>>720 をよく読めよチンカス。
せっかく重要な答えをズバリ書いてやってんのにそれを無視して、
「<と>と'と"を置換するだけじゃ危険なのですか?」などと的外れな質問を繰り返しやがって。
何をエスケープするかじゃねぇんだよ。どのように、どの順番でエスケープするかが大事なんだよ。
>>727 721だけど、意味自分で調べた。サンクス!一つ勉強になった。
730 :
563 :2006/12/16(土) 18:03:51 ID:???
>>619 ありがと〜
逆順はできたのですが、ちょっと意図したものと違いました。
CSVから整形して出力してるのですが、これを、例えば5番目の配列を基準に逆順にソートして出力させたいのです。
rsortだと、そういった指定ができなくて。
<table>
<?php
$Data=file('db.csv');
for($i=0;$i<sizeof($Data);$i++){
$line=explode(",", $Data[$i]);
?>
<tr><td><?=$line[0]?></td><td><?=$line[3]?></td></tr>
<?php
}
?>
</table>
言葉足らずで申し訳ありませんでした。
MySQL使う場合、 普通はリレーション使うと思うのですが、 phpからの操作が非常に面倒になりませんか? リレーション使わずに 一旦あるフィールド値を取得してから そのフィールド値で別テーブルを検索して値を取得、 とかやってる人っていますか? 今までリレーションの存在を知らずに(涙) この方法でやってたのですが、 リレーションを使うのもかなりだるく(慣れていないだけの可能性もありますが)、 過去の手段もかなりだるくなってきました・・・ 他に良い方法がありましたらきぼんぬです。
732 :
nobodyさん :2006/12/16(土) 19:29:26 ID:vIgGXUoj
配列Aと配列Bを比較して、一致している要素が5つ以上あったら 配列Bの[0]の要素を表示するということをしたいのですが・・ $common_word = array_intersect($array_A,$array_B); $array_count = count($common_word); if($array_count >= 5) { } いまのところ、このようになっておりますが、どのようにしたら良いのか 分からなくなりまして。。。よろしければ、ご教授願いたいのですが。
734 :
713 :2006/12/16(土) 19:47:29 ID:???
用心するのに越したことはないってことでしょ
言いたいことは大体わかるよ。
でも具体的に言ってもらわないとわからない。
<と>と'と"を置換するだけで問題ないでしょ?
>>728 みたいな、どうでもいい薀蓄みたいなこと言う人はレスしないでください。
735 :
nobodyさん :2006/12/16(土) 21:11:07 ID:a8ebIslZ
phpMyAdminを設定して実行したのですが、 『扱えない拡張子です,<br />PHPの設定をチェックしてください。』 と表示されます。 PHP.iniでは extension=php_mysql.dll と設定して再起動も完了しました。 ですが、同じエラーのままです。 何か他に考えられることがありますでしょうか?
736 :
732 :2006/12/16(土) 21:23:54 ID:vIgGXUoj
何でもありません。 わざわざ人に聞くようなレベルの話ではありませんでした。
>>726 結論から言うと危険
「マルチバイト XSS」 でぐぐってみ
あとはHTTPヘッダーで文字コード宣言を必ずすること
これがXSS対策の基本
739 :
696 :2006/12/16(土) 21:44:32 ID:HXTFaSG2
>>701 ピクセル単位ですか・・・
俺もそうかと思ったんですが、
だとすると1インチあたりのピクセル数の指定が
どこかにあると思うんです。
PDF って印刷物指向ですよね。
740 :
735 :2006/12/16(土) 21:54:02 ID:a8ebIslZ
>>741 すみません、解決しませんでした。
真剣に悩んでおります・・・。
OS:Win2K Apache2.2 PHP5.2 MySQL5.0.27 文字化けで困っています。 MySQLはSJISに設定しています。 コマンドプロンプトからMYSQLを使用すると正常出力 phpMyAdminを使用すると正常出力 PHPをブラウザで使用すると文字化け(mysql_client_encodingで調べるとlatin1) →2バイト文字が?と表示されます。 解決策をご存知の方助けて下さい。
>>714 できる。
そもそも、基本的なHTML(CHTML・XHTML)などは3キャリア側のサーバーで
自動変換してくれるから問題ないと思いますよ。
ただし、HDML(古いAU端末とTuka端末)のform処理などは対応できていないので注意!
うちは、HTMLを各ノード単位で分割してコンバーター(HTML・CHTML・XHTML・HDNL変換)を通して
表示するようなフレームワークを作って使ってます。
745 :
nobodyさん :2006/12/17(日) 00:44:02 ID:ilUpD26l
SQLに接続するとき set name sift-jis みたいにすればいいんじゃね?
746 :
nobodyさん :2006/12/17(日) 03:44:42 ID:irlLnY56
なんでPHPのロゴに雪が積もってるんだ?
>>734 お前、どうしようもねぇバカでクズだな。
何様のつもりだ。
せっかくもらったアドバイスを無視した挙句に、逆に批判かよ。
お前マジで氏んだほうがいいよ。
749 :
nobodyさん :2006/12/17(日) 07:56:55 ID:fDowNRkw
すみません、phpはじめたばかりなんですが、現在秀和システムの 「きょうから使えるphpサンプル500」っていう本で php.ini の設定しています。 そのなかで、mbstring.script_encoding=EUC-JP という設定を変更するように 書いてあったんですが、ファイルのソースを見たら mbstring.script_encoding が ありません。 これは追加で書き足していいものでしょうか? また、デフォルトで ; でコメントアウトされてるmbstringパラメータは全部コメントアウト解除 すべきですか? あと、phpではないんですが、httpd.confの設定で、 AddDefaultCharset none という項目を編集するように書いてあるんですが、 この項目もhttpd.conf にありません。やはり追加書き足しすべきでしょうか? phpのバージョンはphp-5.2.0 OSはwinXP Apache2.2です
>>749 まずはデフォルトで起動してみて以後自分の設定に変えていけば
あなたの設定したい項目は文字コードにかかわる部分なので
設定しないと起動しないような項目ではない
FA : 書き足す必要は無い
751 :
nobodyさん :2006/12/17(日) 08:19:09 ID:fDowNRkw
>>750 すばやい回答ありがとうございます
そうですか、とりあえず、書き足さないで出来るところからやろうと思います。
いま、環境変数を返すphpを作って(サンプルにしたがって)見たんですが、
ブラウザに表示しないでファイルをダウンロードしてしまいます。
これはなぜですか
かなりショボイ質問だと思いますが、、php.iniの設定がおかしいんでしょうか
>>751 Apache の設定の方に
AddType application/x-httpd-php .php
これを書き加える
○○.phpにしてないって落ちだろw
754 :
nobodyさん :2006/12/17(日) 09:43:07 ID:fDowNRkw
>>752 うおっ 動きました!
httpd.confをみたら、AddType application/x-httpd-php .phpが
AddType application/x-hpppd-php .php
になってました
サンキューです助かりました! よかったー
今年中にアンケート管理と掲示板とメールフォームまで出来るようになろう
ありがとー
755 :
nobodyさん :2006/12/17(日) 11:20:29 ID:cjUGVVxQ
タイトル:string年度 の"タイトル:"と"年度"の間にある部分だけを取り 出したいのですが。 $title = mb_ereg('/"タイトル:"([^"]*)"年度/',$str_contents , $match_title); $str_title = $match_title[0]; print($str_title); このようにしているのですが、うまくとりだせません。 どのようにすべきか、教えていただけないでしょうか。。。
>>755 mb_regex_encoding('sjis'/*必要だったら変更して*/);
$title = 'タイトル:string年度';
mb_ereg('タイトル:([^"]+)年度', $title, $matches);
print_r($matches);
できれば、文字コードをはっきりさせてpreg_match()と16進エスケープを
使ったほうがいいと思うけど。
>>747 といい
>>756 といい
こいつらは、アドバイスしてあげてるつもりなんだろうな。
誰も聞いてないけどw
760 :
nobodyさん :2006/12/17(日) 13:21:27 ID:ssFbcwFM
会員登録ページを作っています。 流れとしては、 入力 → 確認画面 → 修正or登録 な感じです。 入力項目の中にはドロップダウン形式のものや、チェックボックス形式のものがあります。 確認画面から修正画面に戻るときに入力された値を表示させるためにはどうすればいいでしょうか? 自分で考えた方法はフォームを 例:血液型 <select name="blood_type" size="1" tabindex="0"> <option value=1 '.$_POST['blood1'].'>A</option> <option value=2 '.$_POST['blood2'].'>B</option> <option value=3 '.$_POST['blood3'].'>AB</option> <option value=4 '.$_POST['blood4'].'>O</option> </select> のようにして、確認画面からhiddenでひっぱって来るものです。 これだとかなり手間がかかって無駄が多いような気がします。 他にもっと賢い方法があるようでしたら教えてくれませんか?
761 :
755 :2006/12/17(日) 13:24:37 ID:iRROmMBS
>>757 解決しました。どうもありがとうございます。
>>760 $_POST['blood1']
これは何の意味があるんだ?
そこにselectedとか入るわけか?
ちっともphpの話じゃないだろw
764 :
nobodyさん :2006/12/17(日) 13:52:21 ID:ssFbcwFM
>>760 >他にもっと賢い方法
まず公式マニュアルを読んで、
次に巷の解説サイトをいくつか見ればわかるよ
766 :
nobodyさん :2006/12/17(日) 14:00:11 ID:irlLnY56
>>748 北半球ではね。
こういう北半球中心視点は良くないと思う。
768 :
nobodyさん :2006/12/17(日) 14:41:40 ID:ssFbcwFM
>>763 javascript使ったら簡単にできました。
サンクス子
770 :
nobodyさん :2006/12/17(日) 14:48:11 ID:ssFbcwFM
修正ボタンをこれにしました。 <input type="submit" onclick="javascript:history.back();" value="修正">
デザインとロジックの分離において、処理をファイルにまとめて メインファイルからロジックをincludeしたら、 テンプレートつかわなくてもデザインがスッキリすると思うのですが、 どうでしょうか?
そうだね
スレ違いばかり・・・
774 :
nobodyさん :2006/12/17(日) 15:59:14 ID:8qXdAMYD
教えてください! www.xxx.com/aaa.php?id=1&next=1 nextの1で処理を行っているのですが リロードでも有効になってしまいます。 これを回避する方法などありますでしょうか。 submitからなら対策できるのですが、埋め込んだURLからは どうしたら回避できるかわからず詰まっています。
>>774 POSTでやってる対策をGETでもやれば良い
777 :
nobodyさん :2006/12/17(日) 16:49:09 ID:ttycNJ+p
変数.txtってファイルを指定したいんですが どのように書けばいいのでしょうか? ↓こんな感じなんですけど $text = 12; $hantei = file_exists($text.'.txt');//ここでエラーでます
>>777 $hantei = file_exists($text.".txt");
同じだろ? それよりまず何てエラーが出てるのかくらい書こうよ
782 :
nobodyさん :2006/12/17(日) 17:57:37 ID:ttycNJ+p
Parse error: parse error, unexpected T_VARIABLE in 〜〜〜〜こんなエラーです
>>777 の記述は問題ないからその行の前あたりに;や""のつけかた等みなおしてこい
CSVファイルのなかに <a href="yahoo.co.jp" title="トップ,ヤフー">のように”があった場合や、カンマがあった場合、 "<a=""yahoo.co.jo"" title=""トップ,ヤフー"">"となってしまうのですが、これをPHPで読み込むときに、外の"を外して、””を”に変換するにはどうしたらいいでしょうか? それと勝手に””が就かないようにするにはどうしたらよいかアドバイス頂けないでしょうか?
変換するしなくていいじゃん。そういう設定にしてあるだけだから php.iniの設定をたしかめろ。入門者向け教本にたいてい書いてある設定外の項目いじっただろ?
>>785 意味がわからん。それはCSVファイルを保存する時にそうなってるだけじゃねーの?PHPで読み込む前の話。
よくわからんけどreplaceすればいいんじゃないのか?
789 :
nobodyさん :2006/12/17(日) 20:31:33 ID:a5bdt7ul
hiddenは絶対に使わないほうが無難でしょうか? かわりにセッションを使うほうがいいですか? セッションの場合、クッキーとURL埋め合わせがありますけど、 firefox等のブラウザの設定でセッションを受け入れない場合、 クッキーもURLも無効となってしまうのでしょうか? あと、セッションはサーバにゴミがたまりますよね? そのゴミは勝手に削除してくれますか?たとえばクッキーに時間制限があるような感じで。 どなたかお願いいたします。
790 :
735 :2006/12/17(日) 20:48:39 ID:EKx6N1fN
すみません、解決しないのでどなたか答えていただけると嬉しいです。 ググったところでは、mysql/mysqliエクステンションが組み込まれていないとのこと。 php_mysql.dll、php_mysqli.dllがあり、extension=php_mbstring.dllもコメントアウトしています。 その他何か原因があるようなのですが、思いつきもしません。
windowsで動かしてんの?
792 :
735 :2006/12/17(日) 20:55:58 ID:EKx6N1fN
>>791 はい、Windowsです。
WindowsXP SP2
Apache 2.0.58
PHP 5.0.4
MySQL 3.23.58
2台PCがあり、片方は設定して動くのですが、
ノートパソコンの方がエラーが出る状態です。
片方動くならそれと比較してみれ。 phpinfoでMysqlの欄とか表示されてるかい? dllファイルちゃんとあるよね?
794 :
735 :2006/12/17(日) 21:01:18 ID:EKx6N1fN
あー、今infoで「MySQL」を検索しても見つかりませんでした。 つまり、php_mysqlを読み込んでいないということですよね・・・^^; php_mysql.dllの位置がデフォルトのままなのですが、どこへコピーすれば良いのでしょうか?
795 :
743 :2006/12/17(日) 21:03:26 ID:???
796 :
785 :2006/12/17(日) 21:05:23 ID:???
>>787 そうです。CSV保存の時に勝手に””がついてしまうのです。
保存の都度””を置換・削除すればいいのですが、結構な量がある上に、頻繁にデータを書き換えるので、いちいちするのは非常に面倒なのです。
>>788 有り難うございます。ただ、置き換えと削除の両方をしたいのです。
"<a〜 の部分は "を削除したいし、""は"に置き換えたい
皆さん、,や"があるCSVファイルを読み出すときはどうされてるのでしょう?
797 :
735 :2006/12/17(日) 21:08:24 ID:EKx6N1fN
何度もすみません。 extensionのディレクトリパスを指定していなかったです。 Apacheを再起動しましたが、エラーは解決されずのままです・・・。 phpinfoでMysqlの欄を見たのですが、まだ表示されません。
>>796 "(ダブルクオート)の2個の連続は、ダブルクオート1個を表す。その動作は普通。
だから737書いたのに
>>797 phpinfoに表示されているphp.iniが修正しているphp.iniと同じか確認した ?
802 :
735 :2006/12/17(日) 21:23:56 ID:EKx6N1fN
>>800 あ・・・、全然違っていました・・・
php.iniの場所を変えるのじゃなくって、
パスを変更することは可能なのでしょうか?
803 :
nobodyさん :2006/12/17(日) 21:28:18 ID:fhT0kY1a
質問です。 インストールしたソフトの実行出力の結果を取得したくてsystem関数を使ったのですが、 1とか2とかの数字しか返ってきません。具体的には、 <?php $rtn = system("/usr/local/bin/lame", $retval); echo "retval=$retval"; echo '<br>'; echo "rtn=$rtn"; ?> 実行結果 retval=1 rtn= となります。rtnには結果すら返ってきてません。 しかし、lsなどのシステムコマンドだときちんと結果が返ってきます。 ちなみにpassthru関数でも同じでした。 どうすれば結果を取得できるのでしょうか? PHP 4.4.4 with Suhosin-Patch 0.9.5 (cgi-fcgi)
806 :
735 :2006/12/17(日) 21:39:20 ID:EKx6N1fN
>>804 有難うございます、解決しました。
最初に設定できて余裕をもっていたのが間違いですね、
こんな初歩的なとこから間違えるとは・・・
お答えいただいた皆様、有難うございました
こんばんは、ひとつ質問させてください。 $result = mysql_query("SELECT * FROM account WHERE name = '$name'"); この場合は、name=$nameであればTRUEを返すということなのでしょうか。 name=$nameのとき、そのnameがある行を取得したいのですが、どのようにすれば良いのでしょうか?
>>807 TRUE/FALSEを返すとかではなくて、リソースを返すのだ。マニュアルを見よ。
行を連想配列に格納するには mysql_fetch_arry。
810 :
nobodyさん :2006/12/17(日) 22:18:23 ID:fhT0kY1a
>>805 ありがとうございました。
早速以下のように書いてみたのですが、何も出てきませんでした。
なぜかコンソール画面には出力されてきましたが…
<?php
$handle = popen("/usr/local/bin/lame", 'r');
if ($handle){
while (!feof($handle)){
$line = fgets($handle);
echo $line;
}
pclose($handle);
}
?>
function test($str1,$str2){ echo $str1."<br />\n"; echo $str2."<br />\n"; } $str1 = "ホゲホゲ"; $str2 = "あいうえお"; test($str1,$str2); このように、functionに2つの関数を送るのはできないのでしょうか?
すみません、できましたが、function内で mysql_select_db($db); mysql_query($sql); を使うのは不可能でしょうか? mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in とエラーがでます;;
>>812 エラーメッセージを読め。
ヒント: mysql_connect( )
>>810 lameに引数を渡していないとすると、helpがエラー出力に表示されているじゃないの?
816 :
nobodyさん :2006/12/17(日) 23:01:56 ID:1O1pcw5Y
$_GET, $_POST, $_COOKIE を 変数$varで参照できるようにしたいのです。 つまり $var["id"] = $_GET["id"] = $_POST["id"] = $_COOKIE["id"] ということ。 どのようにすれば効率良くできるのでしょうか?
request
818 :
nobodyさん :2006/12/17(日) 23:06:24 ID:fhT0kY1a
>>815 引数に --helpを渡したら出ました!
まさかエラー出力だとは…
ありがとうございました。
掲示板などで、POSTで大量に送られてくるデータ $hogehoge1 = $_POST['hogehoge1']; $hogehoge2 = $_POST['hogehoge2']; $hogehoge3 = $_POST['hogehoge3']; $hogehoge4 = $_POST['hogehoge4']; $hogehoge5 = $_POST['hogehoge5']; これを、一括して$hogehoge[1]〜$hogehoge[7] に格納する方法などはないのでしょうか?
820 :
nobodyさん :2006/12/17(日) 23:11:57 ID:1O1pcw5Y
821 :
796 :2006/12/17(日) 23:15:30 ID:???
>>798 動作が正常なのはわかるのですが、"<a=""〜""となるとリンクが使えなくなってしまったりしませんか?
とんちんかんなこときいてるでしょうか?
自分の環境では、そのまま読み出すとリンクが使えなくなってしまうのでなんとか""を"に変えて邪魔な"を削除したいと考えているのですが。
"を\"にすればいいんじゃね?
823 :
nobodyさん :2006/12/17(日) 23:17:57 ID:MMBQG3mK
よくDB接続の際にPEARを使っている例を見かけるのですが 普通にPHPで接続するのとPEAR使うのとではなにが違うのでしょうか? 利点などあれば教えていただきたいのですが・・・
824 :
nobodyさん :2006/12/17(日) 23:20:57 ID:1O1pcw5Y
>>817 あぁ、$_REQUEST ね……。
ありがとうございました。
PHPからプログラミングを始めて1年ちょっと。 最近はやっとクラスやフレームワークを使用し、 見た目にもある程度のスクリプトが組めるようになってきたかな と自分では思ってます。 windows用のアプリを作りたい理由があり、 visual C#を始める準備をしてるのですが、 敷居って結構高いでしょうか? 質問自体がアバウトなんで、 アバウトな返答でいいのできぼんぬ
828 :
nobodyさん :2006/12/18(月) 00:09:18 ID:Nj+uTZZ4
PHPとC#は全然違うけど、まあ結局は作りたいものがあるかってことで、 目標に進んでいけるかどうかだ。 単になんとなくやってみたいな、ぐらいだと無理かもしれない。 C#は全てがクラス。何でもクラス。とにかくクラス。.NET Frameworkの習得必須。 PHPみたいに関数主体でクラスはおまけってのとは全然違うから、頑張ってね。
>>827 phpから入っちゃったか・・・逆だと楽だったのにな。
ま、何事もやる気と根気。敷居の高さなんざ気にしてたら何もできん。
>>828 C#なんかよりVC++.netにしとけ
>>823 ある程度DB使わないと、PEARとかの使い勝手の良さはわからないかも。
例えばDB使うのってSELECTがほとんどってことが多いけど、接続して
クエリ投げてリソース受け取ってループとかで値受け取ってって流れは
ほとんど共通してる。
なのでこれをSELECTするごとに毎回やるんじゃなくて、関数とかクラス
とか作って、引数にクエリ投げたら配列で結果取れるようにしよう、
とか考えるよね。
んでそういったものがもうPEARとかADOdbとかですでに用意されている
ならそれ使おうって話になるってところかなあ。
デバッグしやすい環境がすでに整えてあったりとか、使いやすいように
工夫されてるし、多くの人が使ってる実績があるから使い方さえ間違え
なきゃちゃんと動くって安心感もあるしね。
他にもいろいろあると思うけど、一番大きなメリットはこの辺じゃないかな。
832 :
nobodyさん :2006/12/18(月) 01:02:19 ID:Nj+uTZZ4
833 :
nobodyさん :2006/12/18(月) 02:18:42 ID:5VuKWrp+
みんなphpMyAdminのバージョンって何使っている? 最新の2.9.1.1? つーか、2.8以降のデザインが好きになれないので未だに2.7.0-pl2使っているよ。 俺と似たような人居る?
それ聞いてなんになるの?
ヒント:スレタイ
バグもないし安定した2.6使ってますが何か
$var = "テストです"; function test(){ echo $var; } test(); これで「テストです」と表示したいのですが、 function内で外部の変数を持ってくるのは test($test)でしか持ってこれないのでしょうか?
global
839 :
837 :2006/12/18(月) 14:36:19 ID:???
>>838 global $var;
で解決できました。ありがとうございます。
>>714 ウイルコムのこともたまには思い出してあげてください><
PHPでモザイクの解除をすることになりました。 GDが入っていますので、やり方やヒントをお願いします。
目を細くして
844 :
8411 :2006/12/18(月) 15:31:51 ID:???
WEBでアップされた動画のモザイクを除去しなければならないのです。 できなければ、大変なことになりますよ?
できちゃった方が大変だと思うんだが。
>>844 そうか、大変だな。
できたら教えてくれ。
@$result = $db->query($sql); A$result = mysql_query($db,$sql); 上記2つは同じ意味なのでしょうか? 何か違いなどがあれば教えてください、
850 :
848 :2006/12/18(月) 15:51:39 ID:???
>>849 あー、@は$dbで接続してるのか
Aはデータベース名か、把握
ちなみにどっちですると効率がいいのかな?
>>848 1の$dbはたぶんユーザーが作ったクラスをインスタンス化したのを
変数にいれて、そのクラスのqueryメソッドを使ってる。
2はPHP側が用意してるmysql関数。
1のクラスの中身がわからないとこたえられない。
1のソースの上のほうで、$db = new HogeHoge;
となってるなら、HogeHogeがクラス。
852 :
848 :2006/12/18(月) 15:59:28 ID:???
@は $username = "dbuser"; $password = "dbpass"; $host = "dbhost"; $database = "dbname"; $db = DB::connect("mysql://$username:$password@$host/$database"); となっていました (phpspot)
>>852 >$db = DB::connect("mysql://$username:$password@$host/$database");
DBクラスのconnect変数を見れ。
mysql_queryって引数sql文だけじゃなかったっけ? @はPEAR接続だよね
855 :
8411 :2006/12/18(月) 16:33:48 ID:???
皆さんのおかげで助かりました。 どうにかなりそうです。
856 :
nobodyさん :2006/12/18(月) 17:02:36 ID:dkU1jlj9
ファイルにhtmlのタグを書き込もうとしてるんですが 日本語の部分が文字化けして書き込まれてしまいます なぜなんでしょうか? ちなみにこんなかんじで書いているのですが「さんのページ」ってとこが 文字化けしてしまいます $text=12; $test = '<P>id'.$text.'さんのページ</P>'; fwrite($fp,$test);
文字コードが違ってるから
エンコードの問題としか思えないけど・・・・
859 :
856 :2006/12/18(月) 17:12:32 ID:dkU1jlj9
プログラムは文字コードEUCなんですが 書き込まれるときのコードが違うってことですよね どうすれば直すことができるんでしょうか?
860 :
nobodyさん :2006/12/18(月) 17:12:33 ID:HkDghXE6
8スレ先から登場した未来人
>>859 metaタグで文字コード指定してる?
また、表示⇒エンコードでEUC指定してる?
>>859 とりあえず切り分けしてみれ。
htmlはどのコードで表示された時にどの文字列が化けているか。
どの文字列はEUCでどの文字列がどんな文字コードになってるのか
863 :
856 :2006/12/18(月) 17:34:56 ID:dkU1jlj9
metaタグでEUCに指定したらできました! みなさんありがとうございました
(゚д゚)
META・・・タグ・・・で・・・
866 :
nobodyさん :2006/12/18(月) 19:30:54 ID:2g+3BvDA
大規模なサイトでは会員登録などあると思いますが、 ログインを簡単に行うために、URLにログインIDを埋め込みたいのですが、 携帯ユーザーに限定して行ったほうがよろしいでしょうか?
>>854 だよね。
>>848 PEAR:DBは、DBの違いを吸収して統一的に扱えるようにすることを
目指す(※)ライブラリ。DB:::connectでPostgreSQLのDSNを指定すると、
ソースを変更することなくDBをスイッチできる。
※PEAR::DBで用意されてるメソッドだけを使っていれば、MySQL特有の方言(SQL)を
使用してると当然駄目。
似たようなクラスにはMDBとかMDB2とかあり、DBは歴史が古い分パフォーマンスは
いまいちといわれる。でもMDBにしたってオーバヘッドはあるから、DBを変える予定が
なく、パフォーマンス優先ならMySQL関数使えばいいのでは。
あともうひとつPDOのようにDBアクセス部分をCで書いたやつので、これならPHPの
MySQL関数より早いということもあるかと。
簡潔に書くため一部不正確なところもあり。できることは同じでも目的は異なるので、
良く考えてチョイスすればよろし。
URLがログインIDになってるくらいなら別にいいんじゃないか? パスワード認証後のログイン状態のフラグが別途セッションに記録されてれば。
871 :
nobodyさん :2006/12/18(月) 20:38:07 ID:S0EIOHKJ
>>869 ほとんどの携帯がクッキー対応してるってどっかでみたような気がするんだぜ
DoCoMoは最新でも対応してない
DoCoMo糞
874 :
nobodyさん :2006/12/18(月) 20:55:05 ID:HkDghXE6
ドコモはutn送信させればオケー。
875 :
nobodyさん :2006/12/18(月) 21:12:23 ID:2g+3BvDA
携帯ユーザーのみに限定して、utnはユニークなものなのでしょうか? たとえば、全国のp902ユーザーが同じ識別情報になることはありませんよね?
「 ̄i 「 ̄ ̄ ̄ ̄`!: : :! ̄ ̄ ̄ ̄.| | ^~^ | | .ノ _,_ 土 | | ヽ 米 し .| | 十_゙ ナ 、 - | | l ‐ ょ ⌒) .| |. + i 、 | | ⊂ ` .| | { ) て`` | | | | | |__________|
880 :
nobodyさん :2006/12/18(月) 22:39:42 ID:HkDghXE6
utn後のUSER AGENTの serXXX…; serXXX… XXX…の部分取得でおけー。
WindowsXpSP2でApache2.0/59、PHP5.2で mb_send_mailの行で以下のエラーが返されたのですが、 マイネットワーク→プロパティの「ブリッジ接続」を削除したら問題なく実行できるのですが、 ブリッジ接続を有効にすると以下のエラーが返されます。 ブリッジ接続を使いながら以下のエラーをださないようにするにはどうしたらよろしいのでしょうか? Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "myhomes" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in
882 :
nobodyさん :2006/12/18(月) 22:52:35 ID:MrE6rWZc
<input name="file" type="file" size="40" /> というタグでメールに添付ファイルを付けられるフォームを作っています。 php側で2Mの容量制限をかけたのですが、phpinfo()で表示される容量の制限が2Mとなっており、2M以上のファイルだとphpのチェックを受けず、 実際に送信する際にエラーが出てしまいます。 こういう場合は、phpの制限を無制限にしたりするものなのでしょうか?
>>882 無制限なんてしたらOSのイメージ送りつけられたらどうするyo。
885 :
882 :2006/12/18(月) 23:13:28 ID:MrE6rWZc
ありがとうございます。 upload_max_filesize以外に設定する箇所があるのでしょうか? 現在upload_max_filesizeが2Mになっており、php側で2Mのチェックを 記載しているにも関わらず、2Mを超えると、その制限が効いてくれないようなんです。
pache2.2以降つかったほうがいいよ。ファイルサイズの制限が見直されてるから
887 :
nobodyさん :2006/12/18(月) 23:45:06 ID:lM2dvpvb
>>880 foma番号と端末製造番号、どっちがええの?
PDOStatementで実際に実行したSQLの取得ってできねーのかな
指定したディレクトリ以下(サブディレクトリ含む)にあるファイル全てのリストを作成するにはどうしたらいいでしょうか。
dir
ロジック的な質問させて下さい! コミュニティーサイトなどで、相手の会員番号の隠蔽はどうやってやっているんでしょうか? 一覧表示からmember.php?user=****の様に 詳細を見れる様にしてたんだけど、これだと会員番号が丸出しだから member.php?list=0&area=1&etc=n... member.php?list=1&area=1&etc=n... って連番と検索条件をパラメーターで渡して、 Mysqlで limit 0,1 limit 1,1 参考サイトが連番を振っていたので、そうなのかなと思ってやってみたけど ロジック的にどうなのか自信なくなってきました・・・orz こんなまどろっこしい事しないで、相手の会員番号をセッションに登録すればいいだけでしょうか?
892 :
891 :2006/12/19(火) 09:12:11 ID:???
あ、一覧表示の場合はセッションに登録してもダメですね; 一覧表示→詳細表示→何かしらのアクション(使うとしたらここですね)
>>891 何をしたいのか今一つ判らんのだが
会員番号をログインIDとかに使っていなければ
まんま引数指定で良いんじゃない?
セッションとか言ってるのが引っかかるが…
>>891 つまり、会員番号=IDってこと?
番号/ID
0001/test
0002/guest
0003/hogehoge
0004/php
0005/cgi
こんな感じにIDごとに番号振り分けたらいいんじゃまいか?
895 :
891 :2006/12/19(火) 09:32:33 ID:???
>893 要は会員サイト内で相手の会員IDを分からなくしたいんですよ。 検索かけて会員リストがずらっと出て、その会員の詳細をみる時に パラメーターで会員番号渡したら簡単なんですが、隠蔽するにはどうしたらいいのかなと・・・。 >894 そういう風にはしてるんですが、詳細見るときに会員番号をパラメーターで渡したくないんです。
897 :
891 :2006/12/19(火) 10:06:00 ID:???
>896 うーむ。それは分かるんですが・・・。 <a href="member.php?list=0">亀田</a> <a href="member.php?list=1">やくみつる</a> <a href="member.php?list=2">ガッツ</a> と、ページに会員の詳細表示のリンクをアクセス順に ソートして並べるとします。 上の様にリンクには連番を振ってパラメータで渡す様にしておきます。 それで、 $listNum = $_GET['list']; SELECT * user ORDER BY access_time DESC LIMIT $listNum,1 (エスケープは今は無視) とすれば、会員番号をパラメーターで渡さなくても リストから詳細表示できます。 ここまではいいとして・・・ 上の例で言えばアクセスでソートしてるんで会員リストをみている間に、 誰かがアクセスをしたらソート順が変わってしまい 正しく表示されない事が発生するかと途方にくれてまして・・・orz
そのlist=0ってのは、アクセス順で 0がアクセス多い、10がアクセス少ないってこと? で、アクセス数で順位が入れ替わるから、参照ページが変わるってことでおkなのかな? 元々登録順にでも番号割り当てといて 0/abc 1/hogehoge 2/papa 3/awawa で、順位に並べてみるのは? 高↑ <a href="member.php?list=2">亀田</a> <a href="member.php?list=0">やくみつる</a> <a href="member.php?list=1">ガッツ</a> 低↓ <a href="member.php?list=3">アントニオ</a>
899 :
nobodyさん :2006/12/19(火) 10:32:47 ID:n9T52ppY
ある配列を空文字ではさんでひとつの文字列にしたいと考えています。 implode("",$hoge)でも実現可能なのですが マニュアルには「好ましい使用法ではありません。」と書かれています。 implodeを使わずにこれを実現するためにはどうすればいいでしょうか?
900 :
891 :2006/12/19(火) 10:35:32 ID:???
>898 アクセスっていうのは、最終アクセス時間を降順でソートしてます。 まぁ、アクセス回数でもロジック的には同じ様なもんですね。 だもんで、 <a href="member.php?list=0">亀田</a> <a href="member.php?list=1">やくみつる</a> <a href="member.php?list=2">ガッツ</a> を見てる間にやくみつるがアクセスしたとしたら、 <a href="member.php?list=0">やくみつる</a> <a href="member.php?list=1">亀田</a> <a href="member.php?list=2">ガッツ</a> こうなってしまう可能性があります・・・。 今はおっしゃる様に、登録降順でソートしてるんですが 見てる間に誰かが登録したらこれも変わりますよね。 まーそんな激しく登録はないはずなんで大丈夫かと思うのですが・・・。 たまにそーなった時はご愛嬌ってことでいいのかなw
>>899 好ましくないだけで使用に問題なければ使っていいよ。
それがいやならforeachで.使って連結しろ
902 :
891 :2006/12/19(火) 10:41:13 ID:???
>899 $str = $hoge['0'].$hoge['1']; 普通に文字連結だとダメなのかな?
903 :
891 :2006/12/19(火) 10:44:33 ID:???
あ、'' いらんしw 寝不足でバグ連発中・・・orz
>>899 $array = ("文字A","文字B","文字C","文字D","文字E");
foreach ($array as $value){
$str .= $value;
}
echo $str;
こういうこと?
905 :
nobodyさん :2006/12/19(火) 12:41:15 ID:n9T52ppY
($array as $value)を ($array as $key => $value)で
多重配列ならそういえやゴルァ
>>905 答えはでてんだから自分でやれよ。甘えるな
そもそも、なんで会員番号を隠匿したいのかが判らん…
909 :
nobodyさん :2006/12/19(火) 14:06:07 ID:0YQ9Kyi3
Aページのformのinputへ入力した文字列を、 Bページへpostして表示するコードを書いたのですが これをセッションで管理しようと思っています。 セッションに関する記述はbページに session_start();$_session['aaa]=$_post['aaa'];echo $_session['aaa']; と入力したのですが、もともとpostで送信しているのでセキュリティが甘いと思っています。 Aページ→Bページの間をセッションで受け渡すにはどうしたらよろしいのでしょうか?
それは無理じゃね? SSLにでもするかとかしか・・
>>909 何を意味不明なこと言ってんだお前は。
ユーザーからのinputをセッションで管理するにしても、
必ず一度はPOSTしてもらわなきゃ受け取れないだろうが。
>>910 >>909 の問題(POSTじゃなくsessionで値を渡したい)については
SSLとか一切関係ないし。
>>911 いやいやそれはわかってはいるんだが
セキュリティが甘いとか言ってたからせめて通信でもセキュリティ高めたほうがと思っただけだ。
なんかおかしいこと言ってるなら謝るが・・。
一度はPOSTせなあかんセッションなんざtelnetつかえば穴になっちまうぞ
もうGETにしとけカス
915 :
nobodyさん :2006/12/19(火) 17:00:40 ID:jG1wL3dB
関数内で、変数の初期化をしたいのですが、 どのように書けばいいのでしょうか? $a = ""; $a;
917 :
nobodyさん :2006/12/19(火) 17:07:44 ID:jG1wL3dB
>>916 こんな関数があったのですね。
どうもありがとうございます。
918 :
nobodyさん :2006/12/19(火) 17:51:13 ID:Bk1c9Up1
function sort($a, $b){ global $sort_tgt; if($a[$sort_tgt] < $b[$sort_tgt]){ return -1; } else if($a[$sort_tgt] > $b[$sort_tgt]){ return 1; } else{ return 0;} } usort($dispdata, "sort"); id,val,str ----------------- 0,5,あ 1,2,い 2,4,あ 3,3,あ 4,1,い という感じのシンプルな二次元配列用のソート関数をサンプルを参考に使っているのですが ソート対象の値が同一のものであった場合(今回の場合はstr)、さらにid順でソートをかけたいのですが どなたか、良い解決法をご教示願えないでしょうか・・・。 よろしくお願いいたします。
920 :
nobodyさん :2006/12/19(火) 18:23:26 ID:EZ7cfRuw
phpからmysqlにアクセスして、DBの情報を更新したいんですけど データ型がtextの「introduction」というフィールドの値が変更されません。 日本語や半角英語を入力したものをPOSTで受け取ったものでは変更されませんでしたが 半角数字のみを入力してPOSTで受け取ったものだと変更されました。 また、sql文のintroduction = $textの部分をintroduction = 'よろしく'などとすると変更することが出来ました。 原因がよく分かりません。よろしくお願いします。 <?php $dbHandle = mysql_connect("localhost","root","tengonran"); if($dbHandle == False){ print("can not connect db\n"); exit; } $db = "sns"; $text = $HTTP_POST_VARS["introduction"]; $uid = $myAuth->getAuthData("uid"); $sql = "UPDATE usr SET introduction = $text WHERE uid = $uid"; $rs = mysql_db_query($db,$sql); mysql_close($dbHandle); print("登録情報を変更しました"); ?>
$sql = "UPDATE usr SET introduction = '$text' WHERE uid = $uid";
922 :
920 :2006/12/19(火) 18:45:41 ID:???
>>921 ありがとうございます。
変更することが出来ました。
文字列の入った変数を'で括るとおかしいのかと
思ってましたがそれでよかったんですね。
>>922 変数はクリーニングしてからクエリーに埋め込んだ方が良いよ
924 :
nobodyさん :2006/12/19(火) 20:04:47 ID:4CUCrx49
>>924 そのサイトの書き間違いでしょ。
公式のマニュアルによると
ttp://www.php.net/manual/ja/function.ereg.php > int ereg ( string pattern, string string [, array ®s] )
> string の中で pattern がマッチした場合にはマッチした文字列の長さを返し、
> マッチしなかった場合 またはエラーとなった場合は FALSE を返します。
> オプションのパラメータ regs が渡されなかったり マッチした文字列の長さが
> 0 だったりした場合は、この関数は 1 を返します。
と、1もしくは、第3引数を渡した場合に限りマッチした文字列の長さを返すことになっている。
PHPの説明って市販の書籍も含めて「誤り」または「情報が古い」ことが多いので
疑問に思ったら公式マニュアルを参照した方がいい。
あと基本的にはereg()に同じパターンがいくつ含まれているかという検索機能は無いので、
数をカウントすると必ず1個にしかならない。
「httpがいくつ含まれているか」を調べたいならpreg_match_all()を使う。
ttp://www.php.net/manual/ja/function.preg-match-all.php
926 :
nobodyさん :2006/12/19(火) 20:34:31 ID:4CUCrx49
>>925 書き間違えかよ!!!!('A`)
メチャメチャサンクス。
preg_match_all やってみます。
公式見た方がいいのな・・・
>>923 クリーニング屋に出すってことか?
例のキャンペーンのせいで、変な用語が飛び出てきたな。
>>927 サ●タ●ズとか言うと、
またアフォの自己主張が始まるから、
洗濯でいいんじゃねぇの?
ちゃんと乾燥機に入れてくれな
>>930 1.PHPスクリプトとして評価される→ファイル読み込みも可能だが普通は他の方法で読み込む
2.そのまま出力したい時
3.一度に全て変数に読み込む必要がない時
4.1行ずつ配列に読み込みたい時
5.変数に読み込みたい時
6.ソケットを開いて(略)
7.6とやってる事は同じ。fsockopen使うのが面倒で楽したい時
>>930 「取得する方法」でなくて「表示する方法」?
無加工で単に表示するだけならそのサイトに直接飛ばすのが早いんじゃ…
という突っ込みはとりあえず置いとくとして、
とにかく表示(出力)がしたいだけならreadfile()。そのための関数だし。
無加工で取得したいならfile_get_contents()。
行単位に何かしら加工したいならfile()。
加工するけど行単位でないならやっぱりfile_get_contents()。
POST処理とかタイムアウト処理とかが必要ならHTTP_Request。
PEARを使えないケース(って滅多に無いが)ならfsockopen()。
ってとこ。
includeやrequireはPHPとして文法パース&実行を行うんで
そういうのが必要な特殊な用途じゃない限り使わない。
また、そんなのが必要なケースに自分はお目にかかったことがない。
fopenは対象ページがよっぽどでかいとかいうわけじゃなきゃ必要を感じない。
WEBページでなくアーカイブファイルとか動画ファイルとかのダウンロードなら
メモリ確保がシビアになるケースがあるのでこれを使う。
>相手の会員番号をセッションに登録すればいいだけでしょうか? うん。
934 :
nobodyさん :2006/12/20(水) 03:13:58 ID:Cie7izus
try catchをPHPマニュアルでひいてるんですがHITしません。 なんとなく重要な関数(?)っぽいので、 どういう時に使うのかを知りたいのですが、 マニュアルに書いてあるなら誘導していただけませんでしょうか? ちなみにどういうものなのかも教えていただければ嬉しいです。
936 :
nobodyさん :2006/12/20(水) 03:27:32 ID:s+1rE1pc
PHPのド素人です クライアントアプリケーションがCGI(PHP)に対して octet-streamのデータをPOSTした場合、 PHPではどうやって値を取得すればよいのでしょうか? URLエンコードされているデータの場合だと_POSTで nameを指定すれば取得できることは知っているのですが バイナリだとどうすればよいのでしょうか。 よろしくおながいします
php-v 4.4.4 mysql-v 4.0.27 nullを許可しているlongtextスペースに UPDATEを使って70000バイトほどの文字列を 入力したいのですがエラーになります。 10000以下位では入力出来ました。 何が原因でしょう? ヒントください。
>>936 $data = '';
$fp = fopen('php://input', 'rb');
while (!feof($fp)) {
$data .= fread($fp, 1024);
}
fclose($fp);
940 :
930 :2006/12/20(水) 10:30:25 ID:???
>>931 ,932
ありがとうございました、勉強になりました。
941 :
936 :2006/12/20(水) 11:04:10 ID:s+1rE1pc
>>939 まさにそれです!!
つたない説明文を理解していただき
最大級に感謝します
そろそろPHP5.2+MySQL5+Apache2.2あたりに移行しようかと思いました。 2年程ブランクがあるので、全てのアプリがメジャーバージョンUPされてて(泣 昔はPear::DB使っていたのですが、 PDO_MYSQLが使えるものかと思い、 マニュアルを確認すると、MySQL4.Xと書いてあります。 PDO_MYSQLはMySQL5でも使えますでしょうか?
ためしてみればいいじゃん
全機能全パターンを試せるわけじゃないんだし それは質問に対する回答になってないよ
945 :
942 :2006/12/20(水) 15:44:32 ID:???
今、インストール中です… PHP5.2の場合、PDO_MYSQLをインストールするのは configureのオプションに以下を追加するだけでいいのかにも躓いてます…。 --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql
入力に応じてfunctionの引数の数を増やしたいのですが、 そんなことってできますでしょうか? どういう風にかけばいいのかわからなくて・・・ function A($a, $b){ echo $a+$b; } function B($a, $b, $c){ echo $a+$b+$c; } こんな感じのを1つにできたらなぁと。
948 :
942 :2006/12/20(水) 15:54:52 ID:???
>>946 func_get_args() func_num_args() func_get_arg()
俺だったら、連想配列で渡しちゃいます。
949 :
946 :2006/12/20(水) 15:55:52 ID:???
950 :
nobodyさん :2006/12/20(水) 16:01:23 ID:ar7H9Wcq
C++ で処理した結果をPHPで書いたページで表示させたいのですが、 ネイティブなライブラリを呼び出す仕組みってあるんでしょうか? Javaのネイティブメソッド呼び出しのような規約が 決められているのでしょうか?
1.<input type="text" name="hoge[]"> 〜〜 20.<input type="text" name="hoge[]"> このクエリを1個ずつデータベースに入れる際、空白(何もかかれていない)の場合、その変数を消したいのですがどのような方法が良いでしょうか? こんなのしか思いつきません… foreach($hoge as $h_arr) { if(empty$h_arr)) { unset($h_arr); }
よくわからんけど空白じゃなければ挿入処理を行うってしたらだめなのか?
>>952 さん
…石頭な漏れですた…
ありがとう…(;ω;)
変数ごと消そうとしてたのかw
955 :
nobodyさん :2006/12/20(水) 17:37:39 ID:Vi7URSua
$date = YYYY-MM-DD の形から 1ヵ月後は 「YYYY-MM-DDである」 5ヵ月後は 「YYYY-MM-DDである」 1年後は 「YYYY-MM-DDである」… と出したいのですが何か良い方法はありますか? 分解して精製するしかないのでしょうか?
>>955 $d = getdate(strtotime($date));
mktime($d["hours"],$d["minutes"],$d["seconds"],$d["mon"] + 1,$d["mday"],$d["year"]);
mktime($d["hours"],$d["minutes"],$d["seconds"],$d["mon"] + 5,$d["mday"],$d["year"]);
mktime($d["hours"],$d["minutes"],$d["seconds"],$d["mon"] + 1,$d["mday"],$d["year"] + 1);
958 :
nobodyさん :2006/12/20(水) 18:29:56 ID:0HPzhBAY
つecho
959 :
nobodyさん :2006/12/20(水) 18:37:29 ID:Vi7URSua
>>956 ,
>>957 両氏
ありがとうございます。
[strtotime],[getdate]初めてしりました。勉強になります。
date('Y-m-d'strtotime('+1 month', strttime($date)));
date('Y-m-d'strtotime('+1 year', strttime($date)));
でできました!
ただ、来週とかができないのです…
date('Y-m-d'strtotime('next week', strttime($date)));
今一度、お力お貸しくださいませ。
960 :
959 :2006/12/20(水) 18:38:32 ID:Vi7URSua
訂正です。 来週末、今月末等ができません。 宜しくお願い致します。
そんな面白い関数があったのか、初めて知った
ってか日時関数あまり使わなかったから知る機会なかっただけかな?
>>960 <?php
echo date('Y-m-d',strtotime("now")), "<br />\n";
echo date('Y-m-d',strtotime("10 September 2000")), "<br />\n";
echo date('Y-m-d',strtotime("+1 day")), "<br />\n";
echo date('Y-m-d',strtotime("+1 week")), "<br />\n";
echo date('Y-m-d',strtotime("+1 week 2 days 4 hours 2 seconds")), "<br />\n";
echo date('Y-m-d',strtotime("next Thursday")), "<br />\n";
echo date('Y-m-d',strtotime("last Monday")), "<br />\n";
?>
DB接続抽象オブジェクトのPDOを使っているのですが、 $dbh->prepare($sql); このprepareメソッドでフリーズしてるぽいとこまでは分かったのですが (前後でvar_dump("hoge")を試したところ、前は成功、後は失敗(ずっと応答待ち)) 対処の仕方がわかりません・・・せめてどういうエラーか分かればいいのですが方法あるんでしょうか? よろしくお願いします
966 :
963 :2006/12/20(水) 19:08:08 ID:XG/2ezlL
ありがとうございます。 >>例外処理 try~catchで囲んでみたんですが拾えませんでした。 原因が違うところにあるとしても、その前後では動いてるの確認(var_dump)してるので エラーだとしたら何かしら拾えると考えたのですが・・・ 応答待ちになってると考えて探った方がいいのでしょうか
967 :
959 :2006/12/20(水) 19:18:57 ID:Vi7URSua
>>968 来週末=来週の土曜日でいいのか?
だったら
echo date('Y-m-d-H:i:s',strtotime("+1 week Saturday")), "<br />\n";
関係ないが
>>967 の明らかな適当な御礼か何かわからないのがウザい
971 :
nobodyさん :2006/12/20(水) 20:30:59 ID:t+vbPSXB
imagettftextを使って入力文字を画像にさせたのですが 機種依存文字である@ABCなどを画像にすることができません いろいろなフォントで試してもだめでした。 imagettftextで機種依存文字を画像にするのは無理なのでしょうか phpのバージョンは5.1です
今月末 $d = getdate(strtotime($date)); mktime(0,0,0,$d["mon"] + 1,0,$d["year"]);
外部コマンドのオプションって配列で渡せばいいだけ?
975 :
超初心者 :2006/12/20(水) 22:15:46 ID:???
phpをyumでインストールしてみたのですが、 何処にインストールされたのか分からなくなってしまいました。orz (/usr/local/lib/php.iniも見当たらない) ファイルを検索する方法を教えてもらえないでしょうか。 レベル低すぎる質問でもうしわけないです。
976 :
超初心者 :2006/12/20(水) 22:28:01 ID:???
ごめ、今のなし。 phpinfoで確認できることを思い出しました。 スレ汚してスンマソン。
php云々ではなくて、わからないならunix系を無理に使うなって話ですね。
windowsの起動の仕方とシャットダウンを勉強してこい。話はそれからだ。
よくURL抽出のプログラムとかを見かけるのですが、 指定したURLから<object>〜</object>や<title>〜</title>などのタグを指定して抽出するものはありませんか?。 参考になるサイトだけでもいいので知っている方教えてください。
DBから取得したデータで「\n」を表示させると、 「\n」と直接表示されてしまいます。 ソース内で改行させたいのですが、どのように記述すれば良いのでしょうか? str_replace("\n","\r\n",$str); で置き換えようと思ったのですが、置き換えることができませんでした。
982 :
981 :2006/12/21(木) 06:03:58 ID:???
書き込んだ瞬間ひらめき str_replace("\\n","\r\n",$str); で解決することができました。
983 :
942 :2006/12/21(木) 11:18:27 ID:???
>>966 try-catchなら、下の設定は必要かも。
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
984 :
nobodyさん :2006/12/21(木) 12:17:01 ID:QeRiyNxN
アクセスしてきた人がPCか携帯か判別して、それぞれのサイトに 割り振るCGIやスクリプトってあるんでしょうか? サーバが対応してくれないので困ってます…。
検索って知ってる?
普通にアクセス元解析して振り分けたらだめなのかい?
987 :
nobodyさん :2006/12/21(木) 12:41:12 ID:KBdj5Zxx
メールアドレスの入力欄で、全角入力の場合にエラーを 表示したいと考えております。 以下の条件文の*******をどう表記すればよいでしょうか? お願い致します。 if(ereg("*******", $var)){ $errm .= "<span class=mj>E-mail入力値が不正です。</span><BR>\n"; }
988様ありがとう御座います。 上記サイトで気になったのが、メールアドレスチェックの際 半角英数字と.と-のみのチェックしかしていませんでした。 もしメールアドレスに!や#などが使用されていた場合このスクリプト だと誤ったメールアドレスとして認識されてしまいます。 メールアドレスのチェックは一般的に半角英数字と.と-のみで 良いのでしょうか?
>>989 if(!preg_match('/^[a-zA-Z0-9_\-]+$/', $_var)){
}
メールアドレスに使えるのは
A〜Zと-_.と数値だけ
一般的に!や#が入ったメアドを見たことないのだが・・ もしそれらの文字がでてくるならその時にスクリプトも変更すればよいと思う
厳密なE-mailアドレスチェックを書こうと思うと酷いことになる。 preg_match('/^(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:" .\\\\\[\]\000-\037\x80-\xff])|"[^\\\\\x80-\xff\n\015"]*(?:\\\\[^\x80-\xff] [^\\\\\x80-\xff\n\015"]*)*")(?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff] +(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff])|"[^\\\\\x80-\xff\n\015"]* (?:\\\\[^\x80-\xff][^\\\\\x80-\xff\n\015"]*)*"))*@(?:[^(\040)<>@,;:".\\\\\[\] \000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff])| \[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[^\x80-\xff])*\])(?:\.(?:[^(\040)<>@,;:" .\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff])| \[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[^\x80-\xff])*\]))*$/', $email);
>>992 どこから拾ってきたんだよwww
そういえば、携帯用IPでアクセス制限できるプログラム載ってるサイト無かったっけ?
994 :
軟式PHP :2006/12/21(木) 13:29:18 ID:???
997 :
nobodyさん :2006/12/21(木) 13:49:18 ID:1NDthtg1
スレも残り少なくなってきたので下らない(と思われる)質問。 以前から気になってしようがなかったんだけど.... $int = 5; if($int > 0) echo "0より大きいらしい"; $int = "string"; if($int > 0) echo "これなんでエラーにならないの?";
>>997 string > 0 じゃないから『これなんでエラーにならないの?』が表示されない
999?
;;;;;ヾ);;;) (;:;ヾ;;;ヾ ;;;;;ヾ);;;) ゆったりと ((;::ヾ;;;ヾ ;;;;;ヾ);;;) 1000げと (;::ヾ;;;;ヾ !l ;||}、 ._,,..,,,,_ ;{ll;;;l ;::ll;.| ~ヽxx./ ,' 3 `ヽーっ.xxノ~.|!!;;: ;;;!l } ミ三三三三三三彡' };!;;l| |l !| `^`゛゛''"""~~゛゛"´~ ノ;;:;:;l ヘハヘゞ "^ハブヘ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。