【PHP】下らねぇ質問はID出して書き込みやがれ 85
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/06/15(月) 22:53:52ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 84
http://pc11.2ch.net/test/read.cgi/php/1240835951/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0199nobodyさん
2009/06/25(木) 20:55:26ID:utUUg4I/// <![CDATA[
function test(n) {
document.getElementById("out").innerHTML = n;
}
// ]]>
</script>
<div id="out"></div>
<input type="submit" value="1" onClick="test(1)">
0200nobodyさん
2009/06/25(木) 21:19:33ID:???やっぱり行数で見るしかないのか…
イメージ的に、boolで返してくれそうな関数があっても良さそうなんだけど。
0201nobodyさん
2009/06/26(金) 01:13:39ID:???0202nobodyさん
2009/06/26(金) 01:32:36ID:???<?php
if($_POST["pass"]=="成功の場合の数字")
echo "成功";
else
echo "エラー";
?>
0203nobodyさん
2009/06/26(金) 01:44:34ID:m+lfcOij○○の部分にphpの変数を入れたいのですがどうしたらいいでしょうか?
0204nobodyさん
2009/06/26(金) 01:50:13ID:???0205nobodyさん
2009/06/26(金) 01:57:52ID:m+lfcOijphpの外のhtmlのタグの中に入れたいのです
0206nobodyさん
2009/06/26(金) 02:05:28ID:???省略表示が使えるなら
<form action="write.php?data=<?=$hoge?>" method="post">
って感じ。使えないなら
<form action="write.php?data=<?php echo $hoge;?>" method="post">
って感じ。あんまり美しくないけど。
0207nobodyさん
2009/06/26(金) 02:08:36ID:m+lfcOijありがとうございました
0208nobodyさん
2009/06/26(金) 02:21:51ID:???0209nobodyさん
2009/06/26(金) 03:56:41ID:eh6qHIVYコントローラのメソッドで
function add($id) {
と
function add($id = null) {
の違いがわかりません。
後者でもURLのパラメータ値がidに入ってくるのに、
nullで初期化する意味はあるのでしょうか?
0210nobodyさん
2009/06/26(金) 06:23:17ID:???0211nobodyさん
2009/06/26(金) 07:35:12ID:???でシステムエラーのようなものが表示されます。
0212nobodyさん
2009/06/26(金) 07:50:16ID:vbul8rC5名前違うかも
0213nobodyさん
2009/06/26(金) 07:51:56ID:vbul8rC5http://www.apachefriends.org/jp/xampp-windows.html#2671
0214nobodyさん
2009/06/26(金) 10:23:56ID:TMhnu1Tdif($_POST['A0']=="A0"){
$b=str_rplace=("B0","1",$a);
$b=str_rplace=("B1","2",$a);
print("パスワードは".$b);
}else{
print("操作が間違っています");
}
0215nobodyさん
2009/06/26(金) 10:30:30ID:???0216nobodyさん
2009/06/26(金) 11:22:27ID:Ht+rgjYH平田 信(44歳)
http://www.keishicho.metro.tokyo.jp/jiken/tehai/image/hirata001.jpg
高橋克也(51歳)
http://www.keishicho.metro.tokyo.jp/jiken/tehai/image/takahashi001.jpg
菊地直子(37歳)
http://www.keishicho.metro.tokyo.jp/jiken/tehai/image/kikuchi001.jpg
0217nobodyさん
2009/06/26(金) 13:56:50ID:???function a() {}
}
$t = new Test();
のように new Test() した後に
Test クラスに b メソッドを追加することってできますか?
0218nobodyさん
2009/06/26(金) 14:02:25ID:???0219nobodyさん
2009/06/26(金) 14:03:22ID:???0221nobodyさん
2009/06/26(金) 16:20:28ID:???pg_query($db, 'begin;');
try {
pg_query($db, $sql); // ★エラーが発生
}
catch (Exception $e) {
pg_query($db, 'rollback;');
}
pg_query($db, 'commit;');
0222nobodyさん
2009/06/26(金) 16:21:28ID:???0223nobodyさん
2009/06/26(金) 16:24:13ID:???0224nobodyさん
2009/06/26(金) 16:42:12ID:???0225nobodyさん
2009/06/26(金) 16:45:45ID:???0227nobodyさん
2009/06/26(金) 17:25:24ID:???0228nobodyさん
2009/06/26(金) 17:25:48ID:???0229nobodyさん
2009/06/26(金) 17:44:17ID:???既存プログラムである >>221 に
一部 try を入れて、>>226 のように
function error_handler($no, $message, $file, $line) {
throw new Exception("[$no] $message at $file:$line");
}
というのを用意しました。
try 外のエラーが error_handler のために
おかしなエラーになっているので、
function error_handler($no, $message, $file, $line) {
$message = "[$no] $message at $file:$line";
if (try 内部か) {
throw new Exception($message);
}
else {
die($message);
}
}
にしたいなと。
0230nobodyさん
2009/06/27(土) 03:46:30ID:???まとめるもんじゃね?
そこで例外投げればいいわけだし。
素直にPDO使えばいいのに。
0231nobodyさん
2009/06/27(土) 04:15:49ID:+RIsncnI0232231
2009/06/27(土) 05:06:52ID:+RIsncnI$session_file = "/tmp/sess_5f660455a0c309d48c04b0597144a9fa";
$data = preg_split('/([A-Za-z_][A-Za-z0-9_]*)\|/',file_get_contents($session_file),
-1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
for($i=0;$i<count($data);$i+=2)
$_SESSION[ $data[$i] ] = unserialize($data[$i+1]);
0233nobodyさん
2009/06/27(土) 09:21:00ID:???システムファイルを修正する前はapacheがちゃんと起動できたのに、誰か助けて〜〜〜〜〜〜!
0234nobodyさん
2009/06/27(土) 11:46:01ID:???GoogleのHTMLを取得して、別に用意したlog.htmlに上書き
という処理をしたいです。
<?php
$lines = file("http://www.google.co.jp/index.html");
foreach ($lines as $l) {
$html .= $l;
}
$inc = fopen("log.html","w");
fwrite($inc,$html);
fclose($inc);
?>
上記コマンドで文法ミスがありますでしょうか?
別問題としてcronを使っているので、cron側の問題でしょうか?
0235nobodyさん
2009/06/27(土) 12:25:28ID:???0236nobodyさん
2009/06/27(土) 12:33:20ID:+txMHXQ40237nobodyさん
2009/06/27(土) 12:59:40ID:???0238nobodyさん
2009/06/27(土) 16:34:23ID:nkgcVTu2データベースから取り出した文字列を、textやtextAreaの形でブラウザに表示をさせ、
もし変更があれば、変更を入力してもらい、変更があった場合と変更がない場合で
処理をかえるプログラムを作っています。
ここでphpの文字列比較がうまく行かなくって悩んでいます。
データベースから取り出した文字列をセッションで保存(この文字列を以下「A」とします。)
それをブラウザで表示させ、再度入力をしてもらった文字列(以下「a」とします。)
「a」はもちろん入力された後、すぐにhtmlspecialcharsを通しています。
if(strcmp(A,a)==0){
//処理1
} else {
//処理2
}
とすると、何の変更もないのに処理2を行ってしまいます。
なにかうまい方法はないでしょうか?
「A」をhtmlspecialcharsで変換してみてもだめでした。
どなたかご存知でしたらお教えください。
よろしくお願いいたします。
0239nobodyさん
2009/06/27(土) 17:33:06ID:???表示しないでしょ?
0240nobodyさん
2009/06/27(土) 19:26:15ID:???脊髄反射してみる
0241nobodyさん
2009/06/27(土) 20:56:19ID:nkgcVTu2一応確認のために、入力してくれた値を再表示するので、通してます。
>>240
見比べても、全く違いがないんだけど・・・・
0242nobodyさん
2009/06/27(土) 21:27:39ID:???0243nobodyさん
2009/06/27(土) 21:39:09ID:nkgcVTu2とりあえず、試しにhtmlspecialcharsをかけないで試してみた。
でも、変わらず・・・。
ただ、htmlspecialcharsをかけてもかけなくても、文章によっては正常に「同じ」と評価する場合もある。
なんか、だめな文字とかあるのかな?
0244nobodyさん
2009/06/27(土) 21:57:17ID:nkgcVTu2評価している両方の文章の見分けは、やっぱりつかない。
でも文字列にmd5をかけてみたら、違う数字になった。
やっぱりどこかが違っているみたい。
0245nobodyさん
2009/06/27(土) 22:15:58ID:???0246nobodyさん
2009/06/27(土) 22:35:53ID:nkgcVTu2macの改行文字「\r」を評価するもの同士から削除すると、再現されなくなる。
どうやら昔macで入力したデータは、文字列評価で誤作動を起こすらしい。
0247nobodyさん
2009/06/27(土) 22:45:01ID:???0248nobodyさん
2009/06/28(日) 00:03:18ID:???0249nobodyさん
2009/06/28(日) 08:31:21ID:???前にこんな風に使ってる方が居ました。
mysql_real_escape_stringを使ってさらにhtmlspecialcharsも使ってました
0250nobodyさん
2009/06/28(日) 10:06:21ID:???htmlspecialchars()は表示するときに無用なゴミを取るもの。
0251nobodyさん
2009/06/28(日) 11:38:42ID:???0252nobodyさん
2009/06/28(日) 11:44:31ID:???0253nobodyさん
2009/06/28(日) 13:20:28ID:???0254nobodyさん
2009/06/28(日) 16:04:22ID:04jk16zQ他の人から丸見えなんで、隠す方法ってありますか?
0255nobodyさん
2009/06/28(日) 16:07:45ID:???basic認証が使えないってことは.htaccessも使えないのかな?
使えるならそれで隠せるし
てかパーミッションいじればいいのでは?
0256nobodyさん
2009/06/28(日) 16:35:43ID:04jk16zQbasic認証で隠せました!
ありがとです
0257nobodyさん
2009/06/28(日) 18:07:47ID:P1lH7m+sテーブル1
a b c d e
1 0 -10 -2 1
とある場合、abcdeの値全部に
値が0より上の場合だけ
-1を足してやりたいのですが、
今まで、phpで値を参照して、0以上なら〜
という風に最低でも5回調べていました。
何かもっと効率的な方法はありますでしょうか
よろしくおねがいします
0258nobodyさん
2009/06/28(日) 18:25:56ID:???0259nobodyさん
2009/06/28(日) 18:31:00ID:P1lH7m+s全てINT型のデータです
0260nobodyさん
2009/06/28(日) 18:33:07ID:???0261nobodyさん
2009/06/28(日) 19:14:05ID:P1lH7m+s特に今のところ詳しく考えていませんが、
例えば、eの全ての値の0より上に-1を足す
ならwhere e > 0 で参照して簡単にできていたのですが(縦の値?)、
ふとこれが257の例のように、横の値(1 0 -10 -2 1)が0より上の場合だけ-1を足して
とした場合どうやればいいんだろう、と気になったのです。
で、今まで通り縦の方法をわけてやる方法しかないのかな、と質問してみました。
0262nobodyさん
2009/06/28(日) 20:24:17ID:???0263nobodyさん
2009/06/28(日) 21:55:28ID:???a = IF(a >= 0, a - 1, a),
b = IF(b >= 0, b - 1, b),
.....
つーかPHP関係ないな
0264nobodyさん
2009/06/29(月) 10:14:56ID:fNGZfwgvテストをブラウザでするにはどうすればいいでしょうか?
コマンドラインだと文字化けした時にコンソールが死んでしまうので
ブラウザでテスト結果を見たいのですが。
ネットで検索しても古いドキュメントばっかりで
3.3でやり方知っていたらお願いします。
0265nobodyさん
2009/06/29(月) 11:21:55ID:Q/RyyZ0F【PHPのバージョン】
【連携ソフトウェア】
【質問内容】
すいません、プログラムの事はよく分からないのですがエラーの内容にPHPと記述されていたのでここにきました、質問させてください
「萌えた体験談コピペ」という2chまとめ系のサイトの記事を開くと
Warning: require_once(Net/Socket.php) [function.require-once]: failed to open stream: No such file or directory in /home/www/moe/HTTP_Request-1.2.4/Request.php on line 47
Fatal error: require_once() [function.require]: Failed opening required 'Net/Socket.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/www/moe/HTTP_Request-1.2.4/Request.php on line 47
このような文が出てサイトが開けません、時間を空けたり再起動したりしましたがまったく変わりませんでした
最近ネット関係でいじった事といえばFireFoxをインストールした位です、ちなみにFireFoxでもIEでも同じ症状がでます
どうすればようでしょう、よろしくお願いします
0266nobodyさん
2009/06/29(月) 11:24:22ID:???| htmlspecialcharsはDBに入れる前でなく表示する直前にかけれ
というサニタイズするな意見がよくあるけど、
表示する前の htmlspecialchars を忘れるセキュリティホールを本当によく見る。
人間だから 100% は無理だからね。
なのでサニタイズしたほうがバグになっても
セキュリティホールにはならないと思うのだけどどう?
0268nobodyさん
2009/06/29(月) 13:36:35ID:fNGZfwgv出力の時、全てサニタイズするようにして、HTML出力したいところだけ
明示的にOFFにするようにすればOKだと思います。
それでも100%じゃないというなら、DBに入れる前にサニタイズだって100%とは言い切れないと反論させてもらいます。
0269266
2009/06/29(月) 13:56:17ID:???そういうことです。>出力の時、全てサニタイズ
「表示する直前」の定義によるのですが、
まさに表示する直前に
print htmlspecialchars($var, ENT_QUOTES);
は危険だなと。
0270nobodyさん
2009/06/29(月) 14:12:35ID:???ハッシュ ( 連想配列? ) 用の関数はないでしょうか。
0272nobodyさん
2009/06/29(月) 14:36:11ID:lu8+BB9Zハッシュ ( 連想配列? ) 用の関数はないでしょうか。
( >>271 指定ありがと )
0274272
2009/06/29(月) 14:45:07ID:lu8+BB9Z$hash = array(
'a' => 'x',
'b' => 'y',
'c' => array(
'm' => 'o',
'n' => 'p',
),
);
$hash = array_map('foo', $hash);
function foo($argv) {
print_r($argv);
}
a や b, c が取得できなくて。
0275nobodyさん
2009/06/29(月) 14:53:52ID:???0277nobodyさん
2009/06/29(月) 15:06:21ID:???array_map も array_walk も変わらなくないか?
array_walk_recursive を求めてるんだと思ったんだが。
0278nobodyさん
2009/06/30(火) 03:41:24ID:DIe+JQtVどういう仕組か説明お願いします
function clean ($str){
$str = strip_tags ($str);
$str = htmlspecialchars ($str, ENT_NOQUOTES);
$str = stripslashes ($str);
$str = mysql_real_escape_string($str);
return $str;
}
if(isset($_POST['submit'])){
$username = clean($_POST['username']);
$password = md5(clean($_POST['password']));
0279nobodyさん
2009/06/30(火) 08:53:18ID:???strip_tagsかけてhtmlspecialcharsかけてstripslashesかけてmysql_real_escape_stringかけて
返しているということ
0280nobodyさん
2009/06/30(火) 11:57:57ID:91azNsAMエラーメッセージを出すようにしています。
(例えば「登録できませんでした。管理者にお問い合わせ下さい」的な)
しかし、記述ミスは設計者の問題ですから、そういうメッセージを見せられても
ユーザはわからなですし、他に良い方法が無いのかと思い質問しました。
0281nobodyさん
2009/06/30(火) 12:32:00ID:???0282nobodyさん
2009/06/30(火) 14:53:51ID:Y8wbyR8h「システムの記述ミスです。申し訳ありません。」
0283nobodyさん
2009/06/30(火) 16:35:46ID:???クエリやエラーの内容にもよるけど「エラーが発生しました。もう一度お試しください。」とか書くしかないじゃん
なるべく客が納得いく表現にケースバイケースで書き換えてさ。
あとはそのエラー画面に管理者宛にエラー内容書いたメール飛ばすプログラムでも組み込んで。
ユーザに「問い合わせてね♪」なんて今時みたことない
0284nobodyさん
2009/06/30(火) 22:27:17ID:???英語だけど
0285nobodyさん
2009/07/01(水) 05:29:44ID:gkTQFvwH0286nobodyさん
2009/07/01(水) 11:26:09ID:fkYaARDwチェックボックスで選択された商品の情報をDBからPHPで取得して
その情報を商品ごとに配列にしてそのままダウンロードする処理を作成したのですが
複数選択された場合のダウンロードはできませんでした。
Javascriptを使わなければならないというところまでは
調べたのですが、どういう記述をしたらいいか分からなくて
困っています。
よろしくお願いします。
JSのスレかPHPか迷ったのですがここに書かせて頂きました。
0287nobodyさん
2009/07/01(水) 11:42:24ID:???0288nobodyさん
2009/07/01(水) 11:52:55ID:4mfkCgDjつまり、1商品データを1ファイルとして扱い、
複数選択の場合は複数のファイルをダウンロードさせたいわけ?
0290nobodyさん
2009/07/01(水) 12:23:50ID:4mfkCgDj俺もやったことがないから正確なことは言えないが、ちょっと難しい
商品それぞれにダウンロードボタンを付けるのが妥当だと思う
お役に立てなくてごめんなさい
0291nobodyさん
2009/07/01(水) 12:27:59ID:???ZIP圧縮してそれを、適当なHTTPヘッダつけて送ればいいんじゃね?
0293nobodyさん
2009/07/01(水) 16:59:02ID:/Z34wosifailed to open stream: 許可がありません
というエラーが出ます。
おそらくアクセス権限のエラーと思い、ディレクトリのパーミッションを0755にしましたが、
まだこのエラーが出てしまいます。
他に何か原因があるのでしょうか
0294nobodyさん
2009/07/01(水) 17:16:31ID:???0755ってことはウニックス系鯖だな
で、パーミッション変更はFTPで行ったと・・
つまりFTPユーザとPHP実行(ウェブ)ユーザが別であると
したがって書き込むためには、0777にすればいいんじゃないかと
0295nobodyさん
2009/07/01(水) 21:11:34ID:???あるいは、アパッチ権限で動いている?
どっち?
0296nobodyさん
2009/07/01(水) 21:24:28ID:???パーミッションを0755にしたのだから、(ftpユーザと同じ)ユーザ権限で動いていれば
0755の「7」に該当するわけで問題無い。
それで問題あるという事は、PHPはapacheの権限で動いていると思われる。
0297nobodyさん
2009/07/01(水) 21:28:57ID:???0298nobodyさん
2009/07/02(木) 10:11:16ID:???■ このスレッドは過去ログ倉庫に格納されています