トップページphp
1001コメント286KB

【PHP】下らねぇ質問はID出して書き込みやがれ 80

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/02/01(日) 18:10:57ID:PdwQzQch
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 78
http://pc11.2ch.net/test/read.cgi/php/1230026935/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0739nobodyさん2009/02/14(土) 00:56:22ID:t4r/C+ZK
>>732
始めは、prepareとか使わずにqueryで、sql文の中にも直接変数を入れていたのですが
そのprepareを見よう見まねでbindしてみたところ、
今のところエラーもなく思い通りの結果がでてきました。
>>735
なるほど、prepare自体をしてなかったのがエラーの原因ということでしたか。
phpにもmysqlにもまだ慣れておらずpdoもよくわかってないのでもうちょい調べて
みることにします。

ありがとうございました。
0740nobodyさん2009/02/14(土) 04:34:09ID:???
こんな記事があった

Can Your Programming Language Do This?
http://www.joelonsoftware.com/items/2006/08/01.html
0741nobodyさん2009/02/14(土) 08:19:15ID:???
>>738
有賀と
0742nobodyさん2009/02/14(土) 11:12:36ID:???
Joel Spolskyは普通に有名人。
君のプログラミング言語で、これ、できる? - The Joel on Software Translation Project

ttp://local.joelonsoftware.com/wiki/%E5%90%9B%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%E3%81%A7%E3%80%81%E3%81%93%E3%82%8C%E3%80%81%E3%81%A7%E3%81%8D%E3%82%8B%3F

無名関数はPHP5.3で実装予定。
MapReduceは、PHPにはarray_mapとarray_reduceという捻りのない名前で実装されている。
配列型(あるいは他のコレクション型)を定義しなおさない限り、PHPでは使いづらいと言わざるを得ない。
ArrayObjectも割と腐ってるしな。なんでksort()とかの戻り値がvoidなんだよ、と。
まあそれでも、無いよりはマシだけどな。
0743nobodyさん2009/02/14(土) 11:22:10ID:???
下質スレで語る人って(ry
0744nobodyさん2009/02/14(土) 11:28:29ID:???
>>742
はいはい、どっかいけカス
スレ違い
0745nobodyさん2009/02/14(土) 11:52:36ID:???
>>738
たかが空行削除するだけで、
こんなにたくさん書かないといけないんだ?
0746nobodyさん2009/02/14(土) 12:09:55ID:???
確かに誰でも一度は
$data = sort($list);
なんてのをやったはず
0747nobodyさん2009/02/14(土) 12:17:46ID:???
>>745
おまえだれ
0748nobodyさん2009/02/14(土) 12:26:19ID:???
>>746
やったやったw
0749nobodyさん2009/02/14(土) 12:35:32ID:???
変数の頭に$付けるのウザ杉。
何の意味があるのかさっぱり分かんねえ。
誰だよこんな糞言語作ったの。
0750nobodyさん2009/02/14(土) 12:40:51ID:???
$じゃなくて、£ならよかったのか?
0751nobodyさん2009/02/14(土) 12:45:10ID:???
>>749
そうか?
見やすくていいと思うけど

それより関数名がださすぎる、一貫性がない、引数の順番で混乱する
それでも楽だからPHPで書いてるが
0752nobodyさん2009/02/14(土) 12:47:11ID:???
スレチだ
0753nobodyさん2009/02/14(土) 12:48:41ID:???
そうそうなんでもかんでも$とかアホかと、
もっと、配列は@、ハッシュは%とかわかりやすくしれ
0754nobodyさん2009/02/14(土) 12:56:07ID:???
>>753
pe

いや、やめとこw。
0755nobodyさん2009/02/14(土) 12:59:23ID:???
perl厨房はうせろ
0756nobodyさん2009/02/14(土) 13:02:58ID:???
どっかのpe言語みたいで嫌だ
0757nobodyさん2009/02/14(土) 13:30:59ID:???
>753
>749は尤もだが、お前の言い分はPHPの言語特性を理解してないの丸分かりで格好悪いぞ。
0758nobodyさん2009/02/14(土) 15:31:28ID:mQ2YcNed
session_regenerate_id(true)とするとセッションが切れることがおおいけど
何か対策はあるのかな?trueを入れない以外で。
ゆっくりページ移動するとかリロードを連打しなければ切れないけど。

0759nobodyさん2009/02/14(土) 15:41:51ID:???
Ajaxとか使いまくって重いページ表示にすればそういうこともある罠
0760nobodyさん2009/02/14(土) 15:42:50ID:???
>>758
なんか、思いこみで書いてない?
F5アタックで切れても問題がないところで、regenerateするだろ普通、
0761nobodyさん2009/02/14(土) 15:51:50ID:???
古いページを無効にするためのID更新なのに、古いIDのまま連打したらこけますって言われてもなぁ。
そうですかとしか。
0762nobodyさん2009/02/14(土) 16:26:31ID:???
ScanDirでディレクトリのファイル
一覧を取得するとファイル名
'.'と'..'というファイル名が混じっているのですが、
これは何でしょうか?
0763nobodyさん2009/02/14(土) 16:37:26ID:???
>>762
.. 親
. 子供
0764nobodyさん2009/02/14(土) 16:49:26ID:???
>>762
.ドット
.. ドットドット
でググレ
0765nobodyさん2009/02/14(土) 16:50:11ID:???
>>763
そりゃ違うだろ。
0766nobodyさん2009/02/14(土) 17:13:05ID:???
無名関数なんていらねー
難読になるだけだから実装しないでいいわ
0767nobodyさん2009/02/14(土) 17:41:51ID:CGIm9AbT
上でも出てきましたがf5アタックをphpで防ぐにはどのようにしたらよろしいでしょうか?
0768nobodyさん2009/02/14(土) 17:45:21ID:???
記録した以前のipと時間が、時間内に一致したらアクセスできないようにする
0769nobodyさん2009/02/14(土) 17:55:26ID:???
>>767
apacheで対策したほうがいいって話ではなくて?
0770nobodyさん2009/02/14(土) 18:06:39ID:???
ttp://blog.hobbystock.jp/report/images/tp0108/014.jpg
お美しい・・・
0771nobodyさん2009/02/14(土) 18:08:28ID:???
>>770
スクリプト仕込まれた画像だから閲覧禁止
おもちゃの画像だからどうしても見たけりゃ見ればいい
0772nobodyさん2009/02/14(土) 18:30:26ID:???
$

(^ω^;)
これでいいお
0773nobodyさん2009/02/14(土) 18:47:27ID:???
>>770
チグリスユーフラテスはおらぬか、チグリスユーフラテスは・・
0774nobodyさん2009/02/14(土) 19:23:11ID:brjzsDYF
セキュリティテストのために画像にPHPスクリプトを埋め込む方法を教えてください
0775nobodyさん2009/02/14(土) 19:24:50ID:???
,php → .jpg
0776nobodyさん2009/02/14(土) 19:44:41ID:brjzsDYF
できましたら正式な画像(バイナリ)への埋め込み方を教えてください
0777nobodyさん2009/02/14(土) 19:50:47ID:???
正式なって何?
0778nobodyさん2009/02/14(土) 19:52:46ID:???
画像にPHPスクリプトを埋め込んでもうれしくないだろ
普通はJavaScriptを埋め込むもんだ。そっちで調べてみ?
0779nobodyさん2009/02/14(土) 20:50:35ID:VuUyjgB9
どうもはじめまして

こんなのってありなんですか?
$name = htmlspecialchars(mysql_real_escape_string($_POST['name']));
0780nobodyさん2009/02/14(土) 20:52:30ID:???
ありって何が?
0781nobodyさん2009/02/14(土) 20:56:12ID:???
二重にエスケープされるんじゃないですか?
0782nobodyさん2009/02/14(土) 20:57:58ID:???
htmlspecialcharsがエスケープ...?
0783nobodyさん2009/02/14(土) 21:00:14ID:???
>>779
データーベースにつっこみたいなら、mysql_real_escape_stringだけをつかう。
画面に表示したいなら、htmlspecialcharsだけを使う。

これが基本
0784nobodyさん2009/02/14(土) 21:00:42ID:???
画面(笑)
07857062009/02/14(土) 21:34:45ID:sjJzqBh5
>>708
ありがとうございます。私の求めていたものはそれでした。

ただ試しにロリポでしてみたんですが、404 not foundに
なってしまいます。

http://hogehoge/mode/090214/
http://hogehoge/?mode=mode&id=090214にしたくて

.htaccessの中身を

RewriteEngine on
RewriteRule ^/([¥w]+)/([¥d]+)/$ /?mode=$1&id=$2

としました。何か誤りがあるのでしょうか?
0786nobodyさん2009/02/14(土) 21:36:40ID:???
>>785
おれが示したpath_infoは華麗にスルーですね
0787nobodyさん2009/02/14(土) 21:38:47ID:???
(1)苦手な事や興味の無い事にはとことん文句をつけ避けたがる
(2)思い通りにならないと泣き出す。
(3)自分がつまらない事はみんなもつまらないと思っていると勘違いするらしく
みんなの同意を得ているかのような発言。
(4)たしなめられると裏切られたと傷つく。
(5)自分の知っている事は世界認識だと勘違いしていて知らない人を見下す。
上司や取引先は自分の(偏った)知識以上の知識があって当然
無いなら無能。
(6)自分のやり方が一番合理的だと勘違いしているのでみんなに俺流を押し付けて引っ掻き回す。
(7)仲良くしてくれる人は自分を崇拝していると勘違いして無理を押し付けたり平気で傷つける。
(8)少し欠点を指摘されると消えたくなる。
(9)いつも主役の自分しか演じられない。
0788nobodyさん2009/02/14(土) 22:01:45ID:???
全部お前のことじゃないか
0789nobodyさん2009/02/14(土) 22:03:43ID:???
ばれたか
0790nobodyさん2009/02/14(土) 22:29:32ID:???
>>753
そう?
perlみたいだとどれが変数でどれが配列かを見分けやすいけど
使いわけるのめんどいし。
かといってjavascriptみたいに$さえないとどれが変数なのかさえ分からない。
自分で書いたソースでもjavascriptは久々に見ると分かりづらいよ。
0791nobodyさん2009/02/14(土) 22:39:17ID:???
txtName, intWidth, blnDelete とかがわかりやすい
0792nobodyさん2009/02/14(土) 22:48:14ID:???
>>790
> 自分で書いたソースでもjavascriptは久々に見ると分かりづらいよ。

そ、それ、$がついたら見やすくなるんですか。
07937062009/02/14(土) 23:00:51ID:sjJzqBh5
>>786
これから返信する予定でした(*‘ω‘ *)

とりあえず$_SERVER['PATH_INFO']よりmod_rewriteの方が
スマートな気がしますので、まずはそちらを試してみます。
ありがとうございます。
0794nobodyさん2009/02/14(土) 23:02:09ID:???
スマートw
0795nobodyさん2009/02/14(土) 23:06:26ID:???
俺はRubyのルールが好き。
 ・小文字、アンダースコアで始まる場合は一時変数
 ・大文字で始まる場合は定数(グローバル定数/クラス定数)
 ・@で始まる場合はインスタンス変数(PHPでいうクラスのプロパティ)
 ・@@で始まる場合はクラス変数(PHPでいうクラスのstatic変数)
 ・$で始まる場合はグローバル
Perlの命名規則もあれはあれでいいのだが、PHPとは相性が悪いしな。

>793
path_infoの方がオススメ。
mod_rewriteは、サーバーにmod_rewriteをインストールする必要がある。自分でいじれないサーバーだとお手上げ。
あと、書き方が結構難しいので初心者にはお勧めできない。
0796nobodyさん2009/02/14(土) 23:19:07ID:???
じゃあperl使えばよろし
07977062009/02/14(土) 23:32:34ID:sjJzqBh5
>>795
インストール?はされてるみたいです(ロリポップ)
難しいっていうのはどういうところがでしょうか?
0798nobodyさん2009/02/14(土) 23:37:47ID:???
アホには使えない。
実際お前は使えてないだろ。
0799nobodyさん2009/02/14(土) 23:39:19ID:???
アホでも使えるよ。
実際お前は使えてるんだろ。
0800nobodyさん2009/02/14(土) 23:42:54ID:???
>>798
必死w
0801nobodyさん2009/02/15(日) 00:00:40ID:???
「ワンワンどれ?」と聞かれてるのに「僕は車が好きなんだ」と返答するのは
コミニュケーションとしてなりたってないからね。
0802nobodyさん2009/02/15(日) 00:01:47ID:???
>>798
はXOOPS CUBE
こないだ警察に呼び出されて注意された
(女性に対するストーカー行為で)
08037952009/02/15(日) 00:03:46ID:???
>797
単純に、mod_rewriteのルールの書き方が難しい。
0804nobodyさん2009/02/15(日) 00:10:54ID:???
あなたのおつむが足りないだけという発想はないのでしょうか
0805nobodyさん2009/02/15(日) 00:27:40ID:???
仕方ないね
08067062009/02/15(日) 00:39:27ID:eLN8IqbH
>>803
単純な正規表現での置換ですよね。

う〜ん……
0807nobodyさん2009/02/15(日) 01:02:31ID:???
>>806
ほれ

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?id=$1 [QSA,L]
08087062009/02/15(日) 01:58:27ID:eLN8IqbH
>>807
出来ました。ありがとうございます。
^/の/が悪さをしていたみたいです。
あと、Baseも
0809nobodyさん2009/02/15(日) 02:28:42ID:???
>>808
omae majide sine
0810nobodyさん2009/02/15(日) 03:13:17ID:???
あの誰か居ますか?
0811nobodyさん2009/02/15(日) 03:15:37ID:???
いるよ
08128102009/02/15(日) 03:23:28ID:Y9ylJZck
呼び出してすいません 解決しました。
PHPとMYSQLで一言掲示板を作ってるんですよ、でっ 文字数を制限させたいと思ったんですけど
<input name="post" type="text" value="" size="40" maxlength="100" />
これで制限されました 

失礼しました
0813nobodyさん2009/02/15(日) 03:31:53ID:???
>>812
それだと偽装できちゃうから
サーバサイドでもmb_strlenとか使って、調べた方がいい
0814nobodyさん2009/02/15(日) 03:34:21ID:???
>>812
セキュリティ関係はちゃんと人に聞いたほうがいい。
あなたが思いついた方法は、画面の見た目を変えるだけ。
なんら制限になっていない。

詳しくは関連キーワードでググりまくるといい。
0815nobodyさん2009/02/15(日) 03:36:46ID:Y9ylJZck
>>813-814
お返事ありがとうございます

なるほど。
mb_strlenですね。調べてきます
0816nobodyさん2009/02/15(日) 06:55:48ID:???
mysqlならvarchar(100)とかにしとけば勝手に切れるでしょ
0817nobodyさん2009/02/15(日) 08:29:52ID:DOB4o/WN
メタデータ(microformat)のクローラーを作りたいんだが,検討がつかないので質問.
使える言語は,C/C++,php
phpでの(簡単な)スクレイピング処理ならやったことがある.

やっぱり
ttp://sourceforge.net/projects/phpcrawl/
みたいなの使って,コンテンツGETした後に解析をかけるんだろうかね.
(phpcawlはアクセス間隔の制御がないので叩かれていたが)
0818nobodyさん2009/02/15(日) 08:42:38ID:???
質問になってない
0819 ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄2009/02/15(日) 08:43:05ID:???
    _____
   /::::::::::::::::::::::::::\                  _
  /::::::::::::::::::::::::::::::::::::::\             /  ̄   ̄ \
  |:::::::::::::::::|_|_|_|_|           /、          ヽ はぁ?黙ってろデブw
  |;;;;;;;;;;ノ   \,, ,,/ ヽ          |・ |―-、       |
  |::( 6  ー─◎─◎ )          q -´ 二 ヽ      |
  |ノ  (∵∴ ( o o)∴)          ノ_ ー  |     |
/|   <  ∵   3 ∵>          \. ̄`  |      /
::::::\  ヽ        ノ\           O===== |
:::::::::::::\_____ノ:::::::::::\        /          |
0820nobodyさん2009/02/15(日) 08:44:43ID:DOB4o/WN
>>818
スマンコ

作るための指標やら知識へのポインタをいただければと存じます.
0821nobodyさん2009/02/15(日) 08:49:14ID:???
以下のコード、セキュリティ対策?で、
$file = htmlspecialchars($file); を使いたいのですが、
そうするとリンクが無効になってしまいます。
他に方法ありませんか?
また、$url は正規表現の判定だけでは不十分ですか?

$url = $_GET['url'];
if (preg_match('/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/', $url)) {
$file = file_get_contents($url);
$file = strip_tags($file, "<a><br>");
echo $file ;
}
0822nobodyさん2009/02/15(日) 10:04:31ID:???
$url = $_GET['url'];
if (preg_match('!^(?:https?|ftp)://[\-\.~\w/\?&=\+%]+$!', $url)) {
$file= file_get_contents($url);
$file= mb_convert_encoding($file, "SJIS", "UTF-8,JIS,EUC,SJIS");
$file= preg_replace("!<img\b[^>]*alt=\"?([^\"\s]+).*?>!is", "$1", $file);
$file= strip_tags($file, "<a>");
$file= preg_replace("!</a>\s*!i", "</a><br>\n", $file);
echo <<<HTML
<html><head>
<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">
</head><body>
{$file}
</body></html>
HTML;

こんな感じでどうよ
0823nobodyさん2009/02/15(日) 10:31:56ID:Ky9cwee/
デザインとロジックを分ける練習をしてます

【ロジック】
$bunshou = "ここは文章です";

【デザイン】
<div id="bunshou">
<p>{bunshou}</p>
</div>

上のようなテンプレートで{bunshou}を書き換えるには
file_get_contents使って正デザインを$dezainに読み込み規表現で{bunshou}を見つけて$bunshouに置換し
デザインをすべて置換し終わったら、$dezainを出力という処理でよろしいでしょうか?
0824nobodyさん2009/02/15(日) 10:42:16ID:???
>【ロジック】
> $bunshou = "ここは文章です";
それは、ロジックじゃなくてモデルな。
モデルは、モデルオブジェクトを作っておく。
読み込んだあと、DOMパーサーにかけて、DOM毎に適切なクラスを割り当て、
そのクラスにモデルを注入。
それぞれに適切なビューハンドラーも作成して注入したうえで、
次にビジネスロジックを適用。
最終的な結果を出力する
0825nobodyさん2009/02/15(日) 12:24:59ID:???
ロジックが記述してある部分をモデル層と呼ぶのだから、間違いとは言い切れない。

置換が入ると重くなるのであまりお勧めはしない。
Smartyなどのテンプレートエンジンは、テンプレートを実行可能なPHPコードに変換したものをファイルとして保存して変換を最初の一回だけにしている。
PHPだけで処理するなら、OOPが良く分からない初心者にも手の届く簡単な方法はこんな感じ。

●1.グローバル変数を使う
---model.php---
$bunsyou = 'ここは文章です';
require_once'view.php';;
---view.php---
<div id="bunshou">
<p><?php echo $bunsyou ?></p>
</div>

●2.特定の名前空間に変数をextractする
60行で作るPHP用テンプレートエンジン

ttp://anond.hatelabo.jp/20071030034313
0826nobodyさん2009/02/15(日) 14:21:42ID:X/0BOQfC
>>825-826様、ありがとうございます
テンプレートエンジンはpreg_replaceで置換する処理が入ってるのでしょうか?
08278232009/02/15(日) 14:22:29ID:X/0BOQfC
IDが変わってるのは電話回線を使用のためです
0828nobodyさん2009/02/15(日) 14:36:22ID:???
テンプレートエンジンっていっても、全部一緒じゃないからね。
ただ、単純にpreg_replaceを使ってるのは見たことない。
0829nobodyさん2009/02/15(日) 15:16:40ID:U3AeQpvt
質問よろしくお願いします。

PHPでuuidを生成したいのですが、
どうすればよいのでしょうか?
0830nobodyさん2009/02/15(日) 15:30:35ID:???
>>829
初期値を入れてインクリメントしていけばいい
08318292009/02/15(日) 15:32:54ID:U3AeQpvt
>>830
説明が足りずすみません;

http://ja.wikipedia.org/wiki/%E6%B1%8E%E7%94%A8%E4%B8%80%E6%84%8F%E8%AD%98%E5%88%A5%E5%AD%90
このuuidのことなのですが・・・
なにかライブラリなどあるのでしょうか?
0832nobodyさん2009/02/15(日) 15:35:44ID:???
>>831
マニュアルのuniqidを見て。
その中のコメント欄に書いてあるから
08338292009/02/15(日) 16:14:44ID:U3AeQpvt
>>832
エクステンションがあったんですね!
知りませんでした。

ありがとうございました!
0834nobodyさん2009/02/15(日) 19:10:07ID:???
>826
入ってるか入っていないかで言えば、入っている事が多い。実際Smartyの実装を見たが、preg系の関数を使っている。
だが、単純な正規表現置換処理以上の事を行なっている事が多い。
テンプレートエンジンを使った事があれば分かると思うが、ループとか変数代入とかマクロの機能を備えたテンプレートエンジンが多い。
最低でもforeach/while/for相当のループ処理と外部ファイル埋め込み辺りは使えないと使い勝手が悪すぎるからな。
これらは当然単純な置換だけでは実現できないわけで。

ただ、>823の仕様で作るなら正規表現による置換でいいと思う。
0835nobodyさん2009/02/15(日) 19:38:01ID:???
ってことはそこらのテンプレートエンジンより>>823のコードのほうが高速ってことだ
0836nobodyさん2009/02/15(日) 20:06:22ID:???
使い勝手は最悪だがな
0837nobodyさん2009/02/15(日) 21:44:11ID:???
マイクロフォームってすごーい
0838nobodyさん2009/02/16(月) 03:52:06ID:auGQVbhI
SQL文うたれたかログ取ることできますか?
■ このスレッドは過去ログ倉庫に格納されています