【PHP】下らねぇ質問はID出して書き込みやがれ 95
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/04/19(月) 09:15:05ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 94
http://pc11.2ch.net/test/read.cgi/php/1268835461/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0222nobodyさん
2010/04/29(木) 14:27:57ID:???自分で責任とれるんなら、何しようと貴方が決めればいい。
0223sage
2010/04/29(木) 14:28:28ID:???0224nobodyさん
2010/04/29(木) 14:35:04ID:???例えばあなたは、DBパスワードが分らないサーバの情報を引き抜けますか?
>>223
https で暗号化された通信を行っているので
パケットをキャプチャしても意味を成さない気がするのですが。
0225nobodyさん
2010/04/29(木) 14:38:26ID:???いろいろなサービースでパスワードを使い回してるユーザーはかなり多いから
漏れたら損害賠償ものだ
0226sage
2010/04/29(木) 14:45:11ID:???とりあえずお前の管理してるサーバーのお世話にはなりたくないわ。
ちょっとした手間を惜しんで暗号化しないとか・・・。
httpsだから安心?そんな糞みたいな考えなら管理者なんてやめちまえ。
パスワードかけてるからHDDを泥棒されても大丈夫とかマジで言い張りそうで怖いわ。
0227nobodyさん
2010/04/29(木) 14:47:29ID:k/DZBqhjいくらなんでも釣られすぎだろ
0229nobodyさん
2010/04/29(木) 16:45:08ID:???個人用ならそれで良いけど他人に開示したいデータだと無理だね。
0230nobodyさん
2010/04/29(木) 19:09:39ID:???最近readfileなる関数があることを知って驚いたのだけど
返り値の末尾に必ずバイト数がついてきやがる・・・
なんなのこの仕様
0231nobodyさん
2010/04/29(木) 19:13:35ID:???0232nobodyさん
2010/04/29(木) 19:21:18ID:???返り値はstringのはずだが
0235nobodyさん
2010/04/29(木) 19:34:23ID:???関数説明するときはjp.php.net/manual/*を使おうな
0236nobodyさん
2010/04/29(木) 19:46:22ID:???0241nobodyさん
2010/04/29(木) 22:01:22ID:???ttp://dspt.blog59.fc2.com/blog-entry-40.html
↑のをやりたいと思ってますが、
htmlの
<img src="../images/xxxx.jpg" alt="トップ" width="640" height="240" />
という画像をサイズ変更後の画像にしたいのですが、、
<!--#include virtual="/data/imagetrans/trans.php?file=xxxx.jpg"-->
と置き換えてもうまく表示されません。
どのようにすべきでなのでしょうか?
0244nobodyさん
2010/04/29(木) 23:23:03ID:???どうしても文字化けが発生してしまいます。
テーブルはsjisなのですがPDOではsjisは使えないのでしょうか?
0245nobodyさん
2010/04/29(木) 23:58:22ID:???0246nobodyさん
2010/04/30(金) 00:21:15ID:???頼みます。
PDO使うとなぜか 日本語 を登録すると文字化けしてしまいます。
この場合の文字化けは表示するときに文字化けするのでは無く、
テーブル内のデータをphpMyAdminで見た段階で既に文字化けしている状態です。
0247nobodyさん
2010/04/30(金) 00:24:12ID:???すみません
0249241
2010/04/30(金) 00:47:11ID:???PHP5だったからかなぁ
0251nobodyさん
2010/04/30(金) 06:55:14ID:???0252251
2010/04/30(金) 06:56:05ID:9AXZ66R60253251
2010/04/30(金) 06:58:03ID:9AXZ66R6〆
0254nobodyさん
2010/04/30(金) 10:10:05ID:4hLCVpzvtest.php と言うファイルにアクセスする場合、通常は
ttp://hoge/test.php
こんな感じになりますよね。
これを
ttp://hoge/test
でアクセスできるようにした(条件1)上で、.phpがついている場合はNotFoundになるようにしたい(条件2)のです。
条件1だけならば、ファイルの拡張子を消した上で、Apacheの設定で
<FilesMatch "^test$">
ForceType application/x-httpd-php
</FilesMatch>
としてやればよいと思います。
ただ、これだと編集の際の管理が面倒なのです。(拡張子が消えるため、編集ツールでPHPファイルだと認識させるのが面倒)
次に、Apacheのmod_rewiteで .phpなしへのアクセスをありへのアクセスに書き換える方法。
逆に.phpへのアクセスをなしへのアクセスに書き換えるようにもすれば、条件は達成できそうです。
一応双方解決方法ではあるのですが、もう少し手軽に設定する方法があったりしないでしょうか?
上記の「FilesMatch」の手法すら先日初めて知ったくらいなので、まだ色々機能があるような気がしまして…。
よろしくお願いします。
0255sage
2010/04/30(金) 10:13:09ID:???0257nobodyさん
2010/04/30(金) 10:32:36ID:???大人しくmod_rewite使ったほうが良いと思う。
0258nobodyさん
2010/04/30(金) 10:41:05ID:???print_r($_SERVER);
をして
ttp://hoge/test
にアクセスしたときと
ttp://hoge/test/index.php
にアクセスしたときの違いを見極める
違いがわかったら後者のアクセスの場合NOT FOUNDにheaderで飛ばす条件をindex.phpに書く
0259nobodyさん
2010/04/30(金) 12:30:06ID:tWWSerSVhttp://www19.atpages.jp/imagelinkget/get.php?t=v&u=www.experts-exchange.com/images/t10149/Eclipse-PHP-Encoding.JPG
http://www.ibm.com/developerworks/ibm/library/i-osource13/01_eclipse_php_perspective.jpg
0261254
2010/04/30(金) 16:22:29ID:4hLCVpzvRewriteRule ^([^\.]*)$ $1.php [QSA]
こんな感じで対応してみました。
とりあえずは望み通りに動くのですが
(hoge.phpへユーザーがアクセスしたのか、それともrewriteされてアクセスされたの見分け方は現在研究中です)
やはり
レンタルサーバーにmod_rewriteが入っているか不定なことと、そもそも高機能な代わりにあまり処理が速くないなんて記事も見られます。
もうちょっと単純に「拡張子を足す」機能はないものでしょうか?
0262nobodyさん
2010/04/30(金) 16:29:53ID:???と書いておけば常々phpとして認識してくれるエディタも。
0263nobodyさん
2010/04/30(金) 16:38:43ID:ni2JZS+f「%」も危ないんだっけ?
0264nobodyさん
2010/04/30(金) 17:11:54ID:???>(hoge.phpへユーザーがアクセスしたのか、それともrewriteされてアクセスされたの見分け方は現在研究中です)
if (strpos($_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME']) !== false) die();
とか?
0265nobodyさん
2010/04/30(金) 17:25:53ID:???リクエストしてきたURLをきちんととるのは、本当にめんどくさい
0266nobodyさん
2010/04/30(金) 17:47:43ID:???【PHPのバージョン】5.2.13
【連携ソフトウェア】PHP
【質問内容】
レンタルサーバ(さくらインターネット)を借りてPHPを練習しているのですが、
構文エラーが起こった時、エラー内容が出ず、(真っ白)何行目で何を間違
ったか分からないので、エラーを探すのに毎回困っています。
どうやったら、構文エラーを出力してくれるか、教えてもらえないでしょうか?
0267nobodyさん
2010/04/30(金) 17:57:23ID:???開発はローカルとかテスト鯖とかVMとかでやろうな
0269nobodyさん
2010/04/30(金) 21:32:08ID:nYN/kH3+すごい基本的なことかもしれないけれど、質問です・・・
ユーザーがsubmitボタンを押してPHP側が処理をしている途中で、ユーザーが別のsubmitボタンだとか<a href>リンクをクリックしてしまった際の処理ってどうすればいいんでしょうか・・・
ユーザーがcsvを出力するボタンを押した後、処理途中で他の画面へのリンクボタンなど押すと、
「Internet Explorer ではこのページは表示できません」
と、処理落ちしてしまうことがあります。。。
長い間いろいろなページを行ったりきたりしていると、
何の変哲もないメインページから、レコード一覧を表示するphpファイルのページへ遷移するボタン押下→別のページへのリンク文字クリック、
なんていうような単純な操作でも、時々起こってしまいます。
ユーザーがそういった操作をした時の対策、また、落ちてしまう具体的な原因ってなんなんでしょうか・・・誰か助けて・・・
0270nobodyさん
2010/04/30(金) 21:51:40ID:???IEの問題です。
0271nobodyさん
2010/04/30(金) 21:59:11ID:???0272nobodyさん
2010/04/30(金) 22:00:40ID:LfT4I+OF0273nobodyさん
2010/04/30(金) 22:57:35ID:XvYDXLsA0274nobodyさん
2010/04/30(金) 23:06:47ID:???0275nobodyさん
2010/05/01(土) 00:12:38ID:???0276nobodyさん
2010/05/01(土) 02:18:15ID:???docroot の外に置くのが基本だけど
0277nobodyさん
2010/05/01(土) 10:21:56ID:QZflVwbA使っても大丈夫でしょうか?
0278nobodyさん
2010/05/01(土) 10:37:48ID:???0279nobodyさん
2010/05/01(土) 19:20:36ID:t+/1WxStmkdir("./log/2010/05/01", 0777, true);
で作成したディレクトリが消せなくて困ってます。
どうすれば削除できるでしょうか?
パーミッションは次のようになってます。
ディレクトリ log は ftp で mkdir log; chmod 777 log して作成してます。
drwxrwxrwx 11347 10000 May 1 18:54 log
drwxr-xr-x 80 10000 May 1 01:51 2010
drwxr-xr-x 80 10000 May 1 01:51 05
drwxr-xr-x 80 10000 May 1 01:51 01
php で rmdir("./log/2010/05/01") すると次の警告が出て削除できません。
> Warning: rmdir() [function.rmdir]: SAFE MODE Restriction in effect. The script
> whose uid is 11347 is not allowed to access log/2010/05/01 owned by uid 80
> in /usr/local/www/htdocs/user/public_html/test.php on line 12
php で chmod("./log/2010", 0777) は通りますが、
chmod("./log/2010/05", 0777) は次の警告がでて変更できません。
> Warning: chmod() [function.chmod]: SAFE MODE Restriction in effect. The
> script whose uid is 11347 is not allowed to access log/2010/05 owned by uid
> 80 in /usr/local/www/htdocs/user/public_html/test.php on line 21
php で chown("./log/2010", 11347) はできません。
> Warning: chown() [function.chown]: Operation not permitted in
> /usr/local/www/htdocs/user/public_html/test.php on line 18
0280nobodyさん
2010/05/01(土) 21:30:49ID:???<html>
<body>
<form action="./test.php" method="POST">
input type="text" name="ID"
<?php
if( isset( $_POST[ 'ID' ] ) ){
$sql = "SELECT pass FROM file WHERE id={$_POST[ 'ID' ]}";
$res = sqlite_query($link, $sql, SQLITE_BOTH, $sqliteerror);
-----------------
IDに12等の数値を打ち込むと$resが通りますが、
IDにqq等のアルファベットを打ち込むと,クエリーが失敗してno such column: qq
になります。
sqlite_openしたdbのidはnvarchar(5)ですでに作っています。
idにqqがあっても失敗するのは、
”WHERE id={$_POST[ 'ID' ]”の所で 型変換みたいなのが必要だからでしょうか?
0281nobodyさん
2010/05/01(土) 21:41:14ID:???エラーの原因はクエリー中のddがクオートされてないから文字列として扱われていない
"SELECT pass FROM file WHERE id='dd'"
だけど、それ以前にそのコードは危険すぎる
SQLインジェクションについて勉強してくれ
0282nobodyさん
2010/05/01(土) 21:54:07ID:???' 付けたら行けました、ありがとうございます。
インジェクション対策もやってみます、ハッカーって怖いですね ><
0283nobodyさん
2010/05/01(土) 22:08:43ID:???0284nobodyさん
2010/05/01(土) 22:59:00ID:???0285nobodyさん
2010/05/01(土) 23:28:07ID:nDRKPSdy絵文字を避けるかたちでhtmlspecialcharsが出来るような回避策か関数というのはありますでしょうか?
0286sage
2010/05/02(日) 00:31:44ID:???$i = strtr($i, $test);
こんなんでいいんじゃね
0287sage
2010/05/02(日) 00:32:50ID:???0289nobodyさん
2010/05/02(日) 01:23:19ID:???ひっかかりそうなのはソフトバンクの x1Bx24ではじまる形式のやつかな。
http://labs.unoh.net/2007/01/softbank_1.html こんなのあるけど、
掲示板で絵文字の処理(機種別の処理とか)しないの?
0290sage
2010/05/02(日) 01:34:21ID:???docomoの絵文字は&から始まるからhtmlspecialを通すと&になるからってことかと思う
自信ないけど・・・。
試しにstrtrでsoftbankの太陽の絵文字をドコモの太陽の絵文字に変えようとしてみたらうまくいかんかった。
やっぱ携帯って面倒だな。
$test = strtr($test, array('$Gj'=>'?xE63E;'));
ってやってもひっかからなかったわ。
0291nobodyさん
2010/05/02(日) 01:41:13ID:???>>290
docomoのそれは、数値文字参照化された文字列を評価してるからってことではなくて?
&を&に変換したくないなら、第4引数をFALSEにすればいいと思うけど
0292nobodyさん
2010/05/02(日) 02:54:47ID:???自力ではどう検索しても見つけられませんでした。
もしよければ、直接教えていただくことはできないでしょうか。
0293292
2010/05/02(日) 02:56:16ID:???ジュンク堂池袋店で探しても見つからなかったんですが、
店頭で見つからないような本があるかもしれないので…
もしあったら教えてください。
0294nobodyさん
2010/05/02(日) 02:58:26ID:???0295290
2010/05/02(日) 09:45:03ID:???ありがと。
>>289に触発されてsoftbankの太陽の絵文字をdocomoの太陽の絵文字に変換しようとしたんだけど、どうやらstrtrで引っかからなかったみたい。
逆にdocomoからsoftbankはうまくいったんだけど、strtrでただsoftbank絵文字を指定しただけじゃ見つけられないっぽい。
文字コードかな。よくわからん。
0296nobodyさん
2010/05/02(日) 10:40:18ID:???0297nobodyさん
2010/05/02(日) 12:08:06ID:3suugozVphpで動作するメールフォームをレンタルしました。
拡張子phpのページにメールフォームがあります。
このメールフォームの部分だけ、任意のHTMLに表示させたいのですが、これは可能なのでしょうか?
もし可能であれば、方法をご教示いただけないでしょうか。
ほんまにくだらない質問でスミマセン
0298nobodyさん
2010/05/02(日) 12:19:21ID:???0299297
2010/05/02(日) 12:27:21ID:???ありがとうございます。
<?php include("アドレス"); ?>でいいんでしょうか?
やってみたのですが、入力した文字がそのまま表示されるだけでした。
0300nobodyさん
2010/05/02(日) 12:53:48ID:???0301nobodyさん
2010/05/02(日) 13:02:14ID:???0302297
2010/05/02(日) 13:14:14ID:???はい。サーバー違います。外部のphpを表示したいのです。
絶対パスを書いたのですが、そもそもそういう問題じゃないんでしょうか…
>>301
とりあえず色々ぐぐってみたのですが、外部のphpをHTML内に表示するには
何か下準備が必要なのでしょうか?
とんちんかんですみません。
0303295
2010/05/02(日) 13:32:46ID:???まだまだ始めたばかりだから解らないかも…
文字コードや正規表現とはまた違う形でマッチさせないといけないという理解でいいのかな…
0304nobodyさん
2010/05/02(日) 15:19:13ID:???自己解決しました。
safe modeだとphpスクリプトのUIDと対象ディレクトリのUIDが違っていると
rmdir できないので、削除用のphpスクリプトを copy してできた
UID=80のphpスクリプトを実行することで、rmdir に成功しました。
safe modeだとphpスクリプトのUIDが異なるディレクトリで mkdir できないので
mkdir("./log/2010"); で
drwxr-xr-x 80 10000 May 1 01:51 2010
を作成したあと
mkdir("./log/2010/05"); で
drwxr-xr-x 80 10000 May 1 01:51 05
を作成しようとすると失敗しますが、
mkdir("./log/2010/05/01", 0777, true);
だとサブディレクトリまで作成できてしまうのは変じゃないでしょうか?
safe modeでサブディレクトリを作成したい場合は
普通はどうやってるんでしょうか?
0305304
2010/05/02(日) 15:21:06ID:Y9Snh0clあと、>>279 でatwikiじゃなくてatpagesの間違いでした。
0306nobodyさん
2010/05/02(日) 18:50:41ID:???�@$_SESSION["Id"]に idを記録する方法では、Cookieに平文のままは不味いらしくsh1()で記録します。
Sh1()は複合できないらしいのでデータベースと照合してユーザーを区別できない事になります?
�Aサーバー側でセッションIDに対応したユーザーIDとクライアントIPをデータベースで記録。
接続を試みてきたクライアントのIPアドレスとセッションIDでなり済ましを防止する。
普通はどのように処理するものでしょうか?
0307nobodyさん
2010/05/02(日) 19:17:25ID:???$_SESSION["Id"]の値(ユーザID?)はクライアントには送信されない
cookieに含まれるのはセッション自体のID(キー)
あと質問はID出しでお願いします
0308306
2010/05/02(日) 19:44:40ID:GCloxDQGC:\WINDOWS\Temp のセッションファイルをCookieと勘違いしてました。
クライアントとはCookie(セッションID)だけのやり取りで、Cookieに情報を記入しなければ
暗号化の対策は取らなくて良い。
IPアドレスでの比較はCookieを取られた時の為に一般的に必要ですか?
TemporaryInternetFileにそれらしいCookieが見つからなかったんですが、名前がどう付くものかも解りません。
0309306
2010/05/02(日) 19:58:06ID:GCloxDQGif (isset($_COOKIE["PHPSESSID"])) {
setcookie("PHPSESSID","",time()-3600,"/");
}
session_destroy();
を やる前にInternetFileフォルダを セッションIDやlocalhost で見ましたがそれらしい物が見つかりませんでした。
0310nobodyさん
2010/05/02(日) 20:19:03ID:???> IPアドレスでの比較はCookieを取られた時の為に一般的に必要ですか?
しない。NATや携帯で困るよ
セッションハイジャックされた時に備えて
肝心な所でもう一度認証を求めるのが一般的かな
> TemporaryInternetFileにそれらしいCookieが見つからなかったんですが、名前がどう付くものかも解りません。
session_name()
あとマニュアルにいくつかヒントがある
http://jp.php.net/manual/ja/book.session.php
0311nobodyさん
2010/05/02(日) 20:23:36ID:???セッションで使用するクッキーは有効期限を指定してないから、
クライアント側でファイルには保存されない(ブラウザを閉じると消える)
これはブラウザの仕様だから絶対ではないけど、少なくてもIEでは残らない
0312306
2010/05/02(日) 21:04:06ID:GCloxDQGsession_name()はデフォルトのPHPSESSIDでした、Cookieはsetcookieやsession_set_cookie_params
を使って有効期限を決めないとTempでは見れないみたいです。
相談に乗って頂き、ありがとうございました。
0313nobodyさん
2010/05/03(月) 12:38:11ID:OYSXXh6t挙動がおかしいので質問させてください。
アプリ側から送られてくる値をmb_detect_encodingで調べて
UTF-8と確認しそのままINSERTすると値が空白となり入力される。
次にあえてUTF8に変換する処理をmb_convert_encodingにて行い
INSERTすると文字化けした値が入力されている。
これはどういった事象でしょうか?アドバイスをお願いします
各条件
PHP ver 5.2.5
PDOでDBへアクセス
Mysql ver 5.0.51a
DBの設定↓
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
PHP側の設定↓
mb_language("uni");
mb_internal_encoding("utf-8");
mb_http_input("auto");
mb_http_output("utf-8");
set names UTF8を実行済み
0314nobodyさん
2010/05/03(月) 13:22:40ID:QBtafV5U0315nobodyさん
2010/05/03(月) 14:28:18ID:???0316nobodyさん
2010/05/03(月) 14:52:23ID:0K3XmUj/【PHPのバージョン】4.4.8
【連携ソフトウェア】PEAR::HTTP_Request
【質問内容】PEARマニュアルにならって、下記な感じでWikipedia APIを利用したいんですけど、
拾得したはずの.xmlを吐いてくれません。
何か間違ってますか?
$url = "http://ja.wikipedia.org/wiki/Special:Export/PHP:_Hypertext_Preprocessor";
$ua = "Mozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1)";
$req =& new HTTP_Request($urll);
$req->addHeader("User-Agent", $ua);
$req->setMethod(HTTP_REQUEST_METHOD_GET);
$response = $req->sendRequest();
if (PEAR::isError($response)) {
echo $response->getMessage();
} else {
echo $req->getResponseBody();
}
count()や、var_dump()で確認してもいまいち中身がつかめません。
0319nobodyさん
2010/05/03(月) 15:20:01ID:0K3XmUj/すみません。それはコピペ時のTypoです。
ID出ていなかったので再投稿。
0320nobodyさん
2010/05/03(月) 15:40:55ID:???海外にそれらしいものが落ちていたからそれ使うか-;
0321nobodyさん
2010/05/04(火) 02:17:02ID:QL/SNWDx<?
$emo = $_POST['emo'];
$emoji_range = '[G|E|F|O|P|Q][\x21-\x7E]';
$pattern = '/[\x1B][\x24]'.$emoji_range.'+[\x0F]/';
if(preg_match($pattern, $emo)){
echo "<font color=\"#ff0000\">OK</font>";
}
?>
<form method="POST" action="emo.php">
<table border="0">
<tr>
<td>emoticon</td><td><input type=text name="emo"></td>
</tr>
<tr>
<td></td><td><input type=submit value="submit"></td>
</tr>
</table>
</form>
Softbankはエスケープシーケンスの制御コードではさまれた5バイトのコードで絵文字が構成されるようですが上記だとうまくマッチしません。
エスケープシーケンスの制御コードというのがよくわかってないのですが、どのようにすればマッチするようになるでしょうか?
■ このスレッドは過去ログ倉庫に格納されています