【PHP】下らねぇ質問はID出して書き込みやがれ 81
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/02/18(水) 21:09:16ID:xNLzAD7T過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 80
http://pc11.2ch.net/test/read.cgi/php/1233479457/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0359nobodyさん
2009/02/23(月) 16:12:39ID:???0360nobodyさん
2009/02/23(月) 16:31:29ID:???eval(mb_convert_encoding(file_get_contents('test.txt'), 'Shift-JIS', 'UTF-8'));
>>357
構文に間違いはないから
スクリプトのエンコーディングが mbstring.script_encoding と合ってないんでしょう
0361nobodyさん
2009/02/23(月) 16:37:17ID:yJ3BEx4Zなんなのだろう
0362nobodyさん
2009/02/23(月) 16:46:30ID:???原因は、Shift Jisの5C問題だね。
能のShift Jisのコードが94 5C
5Cはバックスラッシュ(Shift Jisだと¥)なので、
PHPのパーサが、終わりのダブルクォーテーションを文字列と認識してしまう。
結果、文字列が閉じられていないと判断されて、エラーになる。
0363nobodyさん
2009/02/23(月) 17:31:12ID:???話は変わるが
echo '<table 〜'.
'〜〜〜〜〜〜〜〜〜'.
'〜〜〜〜〜〜〜〜〜'.
'〜〜〜〜〜〜〜〜〜'.
'〜〜〜〜〜〜〜〜〜';
引継ぎでプログラムのソースコード見たらこうなってた
まじ簡便してくれ・・・orz
あと、同じ要領でechoでJavaScriptとか吐き出してるのもやめてくれ
クエリはまだ許せる
仕事でプログラムするときはほかの人にわかりやすいコードにしてください
これまじでお願い
0364nobodyさん
2009/02/23(月) 17:59:46ID:???Shift-JISだろうが何で書こうがそいつの自由だ
雑談スレに行けクズ
0365nobodyさん
2009/02/23(月) 21:03:10ID:cBNbBaFX$aa = "AA";
$bb = "bb";
$sql = "SELECT * FROM v001upfile WHERE :AA = :BB";
$result = executeQuery($sql);
$result->bindParam(":AA",$aa,PDO::PARAM_STR);
$result->bindParam(":BB",$bb,PDO::PARAM_STR);
$result->execute();
$row = $result->fetchAll();
$rows = count($row);
のようにすると、whereに該当するデータがなく、$rowsも0になってしまいます。いろいろしていると、
$sql = "SELECT * FROM v001upfile WHERE AA = :BB";
とするとデータが得られました。
どうやらwhere :AAのbindのパラメータ、PDO::PARAM_STR
で、'AA'とされてしまっているから?、だめのような気がするのですが、
解決策ありましたらよろしくおねがいします
0366nobodyさん
2009/02/23(月) 21:21:42ID:???それ駄目だ、俺も悩んだ
WHERE $AA = ?か、 ? = ?にしたよ
SELECTでbindValueとbindParamは使わない方がいいって
グーグル先生が言ってた
0367nobodyさん
2009/02/23(月) 21:33:37ID:???0368nobodyさん
2009/02/23(月) 21:36:22ID:???アホかw
0369nobodyさん
2009/02/23(月) 22:03:46ID:ikSisMyc【PHPのバージョン】php5.2
【連携ソフトウェア】JavaScript Smarty
【質問内容】
ユーザがログインに成功したときにセッションに値をセットして
次にページにアクセスしてきた時にSmartyで値があるか確認して初期化処理
例:
{{if $smarty.session.foo == 'bar'}}
init(); //これはJScriptの関数
{{/if}}
をしたいんですけど、ブラウザを終了するとセッションまで破棄されてしまいます。
ご教授お願いいたします。
0370nobodyさん
2009/02/23(月) 22:06:30ID:cBNbBaFXsql文に直接変数入れる方法でしました。できました。
ありがとうございました
>>367,368
やってみたのですが、反応としては356とほぼ同じでした
マニュアルのパラメータ一覧のものをいろいろ代えてやってみたのですが
どうもうまくいきませんでした。
0372nobodyさん
2009/02/23(月) 22:28:00ID:???そのいろいろかえてやってみた、の中に正解が入ってないわけだな。
ビット和はとったのか。まぁ、いいや。メンドクセ
0373nobodyさん
2009/02/23(月) 22:55:40ID:DYtiHKsNジャーナルファイルを作成しないのか?
0374nobodyさん
2009/02/23(月) 22:59:36ID:???0376nobodyさん
2009/02/24(火) 00:24:39ID:r/vu3Jnx〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <ココまでアホばかり
彡、 |∪| /
/ __ ヽノ /
(___) /
0377nobodyさん
2009/02/24(火) 07:08:35ID:???エラーなしで何事もなく終わってるのに肝心のinsertだけできていない・・
0378nobodyさん
2009/02/24(火) 07:37:15ID:???何もいじってないのに意味不明
0379377
2009/02/24(火) 07:41:12ID:???そっちでやったらカラムの数と値の数が合ってないよってエラーが出てきた!
凡ミスだった。�dクス
0380nobodyさん
2009/02/24(火) 10:11:31ID:MqsJKVm4$_['FILE']に入っているtypeはブラウザが送信するもので、
信用できないと聞きました。
そこで、アップロードされたファイルがJPEG、BMP、PNGであることを確認する方法を教えてください。
自分なりに考えてみたのは、
imagecreatefrom〜で、作成できるか確認するというものなのですが、これでもいいのでしょうか?
0381nobodyさん
2009/02/24(火) 10:38:47ID:???ttp://docs.sun.com/app/docs/doc/817-6000/6mldto822?l=ja&a=view
こういう記事を参考にして
phpでmimeタイプのチェッカーを作成するか
面倒なら外部アプリケーション(コマンド)を使用して
取得できる環境なら(おそらく色々制限がある)そうしたほうが確実で手っ取り早い
0382nobodyさん
2009/02/24(火) 10:42:58ID:???0383nobodyさん
2009/02/24(火) 10:46:06ID:???Powered by 俺 って書けたらいいな><
0384nobodyさん
2009/02/24(火) 10:52:41ID:???0385380
2009/02/24(火) 11:16:50ID:MqsJKVm4>>381
恥ずかしながら、私には難しすぎて理解できません;
MIMEタイプについて学ぶ必要がありそうですね;;
>>382
>>384
なるほど、画像ファイルの場合はこういう専用の関数を使うといいのですね。
はじめの質問からちょっとずれてしまうのですが、画像以外の場合ではどんな方法があるのでしょうか?
たとえば、MP3ファイルの場合など。
PECLのFileinfo関数なんかは使えるのでしょうか?
後学のために教えてください。
0386nobodyさん
2009/02/24(火) 11:24:58ID:???0387nobodyさん
2009/02/24(火) 11:29:20ID:???0388nobodyさん
2009/02/24(火) 12:52:56ID:???$str = file_get_contents("example.mp3");
if (substr($str, 0, 3) == "ID3") { ... }
0389nobodyさん
2009/02/24(火) 13:06:52ID:???$mimetype = `file -bi $file`;
0390380
2009/02/24(火) 14:25:53ID:MqsJKVm4それはそうなのですが、
たとえば、finfo_file()で得られる値は信用してよいのか、などがわからなくて;
>>388
なるほど、MP3の場合は、先頭にID3 タグの情報があるかどうかで判断できるわけですね。
しかし、MP3以外にも対応できる、もっと汎用的な方法はないのでしょうか?
>>389
linuxコマンドで取得するということでしょうか?
こんな方法もあるんですね!勉強になります。
続けて質問になってしまうのですが、ファイルサイズやファイル名などに関しても、
$_FILEの値は信用してはいけないのでしょうか?
その場合、安全な方法を教えてください。
0391nobodyさん
2009/02/24(火) 14:56:33ID:???画像だけならfreadして、どんな文字列から始まるかで判別する方法でいいんじゃないかな
JPG→\xff\xd8
PNG→\x89PNG\x0d
GIF→GIF87a or GIF89a
ビットマップは…しらねぇ('A`)
0392nobodyさん
2009/02/24(火) 17:27:52ID:???0393nobodyさん
2009/02/24(火) 18:57:41ID:TovVFkKx照合(決済できるクレジットカードかどうか)するというASPってありますか?
普通にZEROとかの決済会社とかでは、決済せずに照合のみってできるんでしょうか?
0395nobodyさん
2009/02/24(火) 19:03:02ID:TovVFkKx早速ありがとうございます
調べてみます
0396nobodyさん
2009/02/24(火) 20:13:38ID:???各データをくっつけるときについでに ' ' でくくりたい。
foreach( $data1 as $d )$data2[]="'$d'";
$str = implode( ',', $data2 );
とかやってるんだけど、これダサくね? 字の数も多いし。
もっとかっこよくやりたい。
0397nobodyさん
2009/02/24(火) 20:16:29ID:???0398nobodyさん
2009/02/24(火) 20:17:21ID:???> 配列の各データをimplodeでくっつけたいんだけど
> 各データをくっつけるときについでに ' ' でくくりたい。
>
> foreach( $data1 as $d )$data2[]="'$d'";
> $str = implode( ',', $data2 );
> とかやってるんだけど、これダサくね? 字の数も多いし。
> もっとかっこよくやりたい。
0401nobodyさん
2009/02/24(火) 20:56:11ID:9Iv6lmqOこれらはPHP5ではバイナリセーフの関数ということであってますか?
色々調べたのですがバイナリセーフではないという記事が多くて困惑してます
マニュアルにはfileはPHP4.3でバイナリセーフになり
file_get_contentsはバイナリセーフとは書いてませんが
バイナリデータに対応してると書いてます(バイナリデータ対応=バイナリセーフ?)
実際にテストもしてみましたがヌル文字もちゃんと表示されているようでした
バイナリセーフではないというのは過去のこと(記事が古い)ということでしょうか?
0402nobodyさん
2009/02/24(火) 22:07:03ID:???PHP5.xxまでならバイナリに対応してる
PHP6以降、バイナリを突っ込めなくなるモードに設定できるようになる
0403nobodyさん
2009/02/24(火) 22:33:58ID:gE9pwkM6pngの場合に透過部分が透過されずに塗りつぶしになってしまいます。
png-8でもpng-24でも透過できるようにしたいのですがどうすればいいのでしょう?
環境はphp5です。できればImageMagickは使わずにやりたいのですが…
現在のソースはこんな感じです。
$size = getimagesize('./front.png');
$back = imagecreatefromjpeg('../back.jpg');
$front = imagecreatefrompng('./front.png'); //fromjpgだったりgifだったり
imagetruecolortopalette($front, false, 256);
imagecopymerge($back, $front, 0, 0, 0, 0, $size[0], $size[1], 100);
header('Content-Type: image/png');
imagepng($back);
0404nobodyさん
2009/02/25(水) 01:09:50ID:Ndqi56nAみたいに.php無いのにそのページ開いてしまいます
sample.phpの場合だけ開くようにしたいのですがよろしくおねがいします
0405nobodyさん
2009/02/25(水) 01:23:53ID:Ndqi56nA0406nobodyさん
2009/02/25(水) 01:43:31ID:aIiX70rdその3つのロックを開放するときの順番で、ロックをした順番ですか?
それともロックをした順番の逆順にロック開放するべきですか?
0407>>406
2009/02/25(水) 01:44:45ID:aIiX70rdflockで、3つのファイルを、排他ロックしたときに、
その3つのロックを開放するべき順番は、ロックをした順番ですか?
それともロックをした順番の逆順にロック開放するべきですか?
以上です
0408nobodyさん
2009/02/25(水) 03:48:51ID:lXxF9gdp$b,
$c;
という書き方と、
private $a;
private $b;
private $c;
という書き方、どっちが適切ですか?
0409nobodyさん
2009/02/25(水) 03:58:40ID:???0410nobodyさん
2009/02/25(水) 04:00:27ID:???順番は関係ない
>>408
目的もなしに手段だけ見せて適切か不適切かなんて下せる訳ない
あえて言えばコーディングスタイルの問題
宗教論争になるから好きにしろ
0411nobodyさん
2009/02/25(水) 12:11:48ID:???答えられないんじゃないの^^;
0412nobodyさん
2009/02/25(水) 12:54:52ID:Bh8pwxYs商品名をクリックするとクッキーに商品名と金額を記録するようにしたのですが
クッキーに配列で記録することはできるのでしょうか?
$_COOKIE['sinamono']にカートの中身が全部入ってるとして解説1のような構造で取れるようにしたいですが
現在方法が分からず解説2のようにやってます
解説1のようにクッキーに記録するにはどのようにしたらよろしいかアドバイスお願いしまsう
「解説1」
$_COOKIE['sinamono'][0]['name'] これは商品Aの名前
$_COOKIE['sinamono'][0]{'okane'] これは商品Aの金額
$_COOKIE['sinamono'][1]['name'] これは商品Bの名前
$_COOKIE['sinamono'][1]{'okane'] これは商品Bの金額
以下続く・・・
「解説2」
$_COOKIE['sinamono_0_name'] これは商品Aの名前
$_COOKIE['sinamon_0_okane'] これは商品Aの金額
$_COOKIE['sinamon_1_name'] これは商品Bの名前
$_COOKIE['sinamono_1_okane'] これは商品Bの金額
0413nobodyさん
2009/02/25(水) 13:30:48ID:???商品データベースは持っていないのかな?
データベースがあるなら、記録するのは商品コードだけでよいと思う。
記録方法は、COOKIEにそのままなら配列は無理だから、CSV形式とかにする。
だが、一番手っ取り早くて、効率的なのはセッションを使うことだと思う。
0414nobodyさん
2009/02/25(水) 13:33:30ID:???0415nobodyさん
2009/02/25(水) 13:42:15ID:???データベース(テーブル1)
abcdefg 商品ID
abcdefg 商品ID
abcdefg 商品ID
abcdefg 商品ID
データベース(テーブル2)
商品ID 商品名 値段 更新日
商品ID 商品名 値段 更新日
商品ID 商品名 値段 更新日
商品ID 商品名 値段 更新日
0416nobodyさん
2009/02/25(水) 13:44:07ID:???マニュアルの例3に配列での保存方法がある
http://www.php.net/manual/ja/function.setcookie.php#function.setcookie.examples
0417nobodyさん
2009/02/25(水) 13:50:34ID:???おまえかわいいなw
0418nobodyさん
2009/02/25(水) 14:11:49ID:ZVMHOF39pppp.phpファイルが実行され、pppp.phpファイルに書かれた仕様でdata.txtの内容をIEに表示させる。
という、pppp.phpファイルを書く事は可能でしょうか?
可能だとすれば、どんな関数を使えばいいのか教えて下さい。
0419nobodyさん
2009/02/25(水) 14:31:57ID:???0420418
2009/02/25(水) 14:38:39ID:ZVMHOF39phpでは不可能ですか?
0422nobodyさん
2009/02/25(水) 14:45:58ID:???PHPはサーバーサイドってことを理解したうえでの質問と見ておk?
0423nobodyさん
2009/02/25(水) 14:48:21ID:???処理するわけだから関数以前にやることありありだな
0424nobodyさん
2009/02/25(水) 14:52:22ID:???デスクトップにPHPファイルを置いておいて、ドラッグ&ドロップでデータを受け入れて処理して、ブラウザを起動する。
0425418
2009/02/25(水) 14:55:02ID:ZVMHOF39> Windowsでいいんだよな?
はい。
>>422
> ごめん、何がしたいのか理解できない
2ちゃんのスレッド情報の"mail""name""time""id""res"の情報がdata.txtにcvs形式で書かれています。
それを、pppp.phpファイルを使い、自分の好みの表示方法でIEに表示させたいのです。
0426418
2009/02/25(水) 14:56:48ID:ZVMHOF39>テキストファイルをドラッグ&ドロップしてphpファイルを起動させて引数情報を得て処理する
そうです。 これがやりたいのです。
0427nobodyさん
2009/02/25(水) 14:58:55ID:???できなくもないが
色々しないといけない
基本的にPHPはサーバーサイド向けに作られてるから
そういうのしたいならCなりJavaなり使おうな
0428nobodyさん
2009/02/25(水) 15:05:02ID:???はぁ?
デスクトップ環境でPHPが動かないとでも?
レンサバユースしてないアフィリエーターらしい考え方だな。
できなくもないってなら、できる方法を教えてやれよ。知ってるならだが。
0429418
2009/02/25(水) 15:05:11ID:ZVMHOF39了解しました、あきらめます。
0431nobodyさん
2009/02/25(水) 15:27:40ID:???php pppp.php %1
とか書いておけばいいんじゃないの?
0432418
2009/02/25(水) 15:28:03ID:ZVMHOF39じゃあ、ここにあるような、『参照』のボタンでdata.txtを読み込み、↑に書いた作業をさせるのは可能でしょうか?
0434nobodyさん
2009/02/25(水) 15:37:03ID:???0435418
2009/02/25(水) 15:42:27ID:ZVMHOF39こういう風に、data.txtの選択&読み込みが出来たら嬉しいんだけど、htmlにはそういう機能はないのでしょうか?
0439nobodyさん
2009/02/25(水) 16:42:17ID:???成功例はロールバックって書いてあるところかな?
0440nobodyさん
2009/02/25(水) 17:03:04ID:???0441nobodyさん
2009/02/25(水) 23:16:51ID:???オンクリックの中にさらにクオーテーション入ったときとか、functionしても、引数使うから
結局''で囲うからどうにもならね
0442nobodyさん
2009/02/25(水) 23:23:13ID:???0443nobodyさん
2009/02/25(水) 23:28:33ID:+kmtnISzツールなどで未定義の関数や引数の間違いを静的に検出する方法はないですか?
0444nobodyさん
2009/02/25(水) 23:33:06ID:???0445nobodyさん
2009/02/25(水) 23:36:40ID:???function hoge(){
echo 'hoge';
}
hage();
?>
とかあったときに、実行前に関数hageが無い事を検出したいって事だろ。
静的解析とかダセェ事せずに自動テスト使おうぜ。
0446nobodyさん
2009/02/25(水) 23:41:51ID:LSqAU6YZ$dbh->exec("UPDATE tb1 SET value = value + 1 WHERE id = '1'");
以外の書き方って、ある?
------------------------
【環境】
PHP5 + PDO + SQLite3
ようはexec以外のやり方で、って意味。
0447nobodyさん
2009/02/25(水) 23:43:15ID:???クオーテーションがネストしてしまうときに、
どう対処したらいいですか、って意味だろ?
行間読もうぜ
さもないと、30才でホームレスだにょ
0450nobodyさん
2009/02/26(木) 00:27:28ID:tryMdVBhphp.iniのphp_mysql.dllをコメントをはずせばつかえるのでしょうか?
0451nobodyさん
2009/02/26(木) 01:06:52ID:???0452nobodyさん
2009/02/26(木) 01:23:01ID:???自宅でのテスト環境だったら、たぶんそれでいける。
確認はphp.infoを見る。
無料のレンタルサーバーではほとんど
ドライバが入っていない(ので無理)
0453nobodyさん
2009/02/26(木) 01:55:08ID:???スクリプト中でechoとかprint()使ってるのかなぁ。。
なら、heredocにすれば少しは気を使う部分が減るかもしれない。
$text = 'ちんこ' ;
echo <<<__E_O_T__
<button name="tinko" onclick="alert( '{$text}' ) ;" />
__E_O_T__
HTMLとかJavaScriptは完全に別ファイルにして
<button name="tinko" onclick="alert( '<php echo $text ?> ' ) ;" />
のほうがいいと思うけど。
0454nobodyさん
2009/02/26(木) 02:05:21ID:91pUGaxV<input type="text" name="test" value="">←に、test'sと入力して送信すると、
PHP4だと、
$_GET["test"]の値は、test'sとなりますが、
PHP5だと、
$_GET["test"]の値は、test\'sとなります。
送信された時点でエスケープされているのですが、これはphp.iniで変更可能でしょうか?
0455nobodyさん
2009/02/26(木) 02:08:20ID:???マジックなんちゃらやね
0456nobodyさん
2009/02/26(木) 02:20:57ID:???SQLインジェクションの対策で
そういう変なオプションがある。
自動的に'とかを勝手にエスケープしてくれるっていう。
0457nobodyさん
2009/02/26(木) 03:45:51ID:91pUGaxV0458418
2009/02/26(木) 04:00:48ID:GtV/r+inhttp://www.stackasterisk.jp/tech/php/php02_06.jsp
【form.html】
<html><body>
<form action="display.php3" method="POST">
<input type="text" name="fName" size="30"><br>
<input type="submit" value="submit">
</form>
</body></html>
【display.php3】
<html><body>
<?
print $fName;
?>
</body></html>
今日はこれにチャレンジしてみたのですが、うまく動きません。
どこが悪いのかご指摘下さい。
■ このスレッドは過去ログ倉庫に格納されています