【PHP】下らねぇ質問はID出して書き込みやがれ 98
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/09/18(土) 19:20:37ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 97
http://hibari.2ch.net/test/read.cgi/php/1279833891/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0463nobodyさん
2010/09/27(月) 03:56:36ID:???<?php
$key = pack('H*', "8C35192D964DC3182C6F84F3252239EB4A320D2500000000");
$iv = pack('H*', 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF');
$iv = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $iv, MCRYPT_MODE_ECB);
$dh = opendir('./');
while (($file = readdir($dh)) !== FALSE) {
if (preg_match('/^(.+)\.rsdf$/', $file, $m)) {
$f = $m[1];
$data = file_get_contents($file);
$data = pack('H*', $data);
$data = base64_decode($data);
$data = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CFB, $iv);
$lines = explode('CCF: ', $data);
array_shift($lines);
$fh = fopen($f. '.txt', 'wb');
foreach ($lines as $line) {
fwrite($fh, $line."\n");
}
fclose($fh);
}
}
closedir($dh)
0464nobodyさん
2010/09/27(月) 10:35:31ID:???いつもの人ですか?
0465nobodyさん
2010/09/27(月) 11:37:08ID:???ttps://web-tan.forum.impressrd.jp/q/201010offmeeting
0467nobodyさん
2010/09/27(月) 14:51:58ID:???アクセスされた側に何か違いが分かるのかという質問だろ
分からないからって変なとこに噛み付いてるヤツがいるな
知恵袋かここは
0468nobodyさん
2010/09/27(月) 16:31:45ID:5rzeHvzlexec()を使って、コマンドを実行し、実行結果が取得したいのですが
「at」コマンドだけなぜか結果が取得できず困っています。
exec('echo "hoge"',$result);
# $result -> hoge
exec('at -f at.sh now + 1minute',$result);
# $result -> NULL
コマンドの実行自体は成功しているのですが、
system()と同じく強制的に標準出力されてしまいます。
いったい、どうすればいいのでしょうか?
0469nobodyさん
2010/09/27(月) 16:50:08ID:???おまえも回答せず住人に噛みついてるだけじゃないか
つか答えてやりたいが何度読んでもなにを言ってるかわからないんだよ
むしろ読めば読むほどわからなくなる
ランキングサイトの運営やってるのか参加者なのか
どうなっててそれをどうしたいのか
0470nobodyさん
2010/09/27(月) 16:58:14ID:???手元に環境なくて試せないが、atコマンドの結果が標準出力では無いのでは?
↓これでどうだろう?
exec('at -f at.sh now + 1minute 2>&1',$result);
0471nobodyさん
2010/09/27(月) 17:51:11ID:???そこらのランキングサイトはもうそんなの通用しないようになってるでしょ
0472nobodyさん
2010/09/27(月) 18:04:07ID:???そういうことしてるサイトはどんどん晒し者にしてくれ
0473nobodyさん
2010/09/27(月) 18:36:17ID:???atの結果が欲しいのか、atで指定した at.sh の結果なのか?
質問の結果はatの結果ではないかと思うが。
0476nobodyさん
2010/09/28(火) 08:55:29ID:QwKdPwv2【PHPのバージョン】5.26
【連携ソフトウェア】Actionscript3.0(FlashDevelop)
echoの仕方についてです。
$fp = fopen("./data.txt", "rb")
$contents = stream_get_contents($fp);
↑で読み込んだテキストデータなのですが(動作は確認済み)、
actionscript側に、うまく渡すことができません……。
○echo "comp="."完了"."0";
×echo "comp="."完了".$contents;
×echo "comp=".$contents;
↑のような描き方なのですが、
正常に表示されたのは○のついたものだけでした……。
なぜでしょうか?
よろしくお願いします。
0477477
2010/09/28(火) 09:10:26ID:QwKdPwv2○echo "comp="."完了".$num; //$num = 0
また、>>47の×のついた2パターンを実行すると
何も表示されませんでした。
更にいうと、actionscript側の話になりますが、
どうやらloaderのCOMPLETEイベントを達成していないみたいなのです……。
0479nobodyさん
2010/09/28(火) 12:48:01ID:???echo $contents だけだとどうなる?
print $contents の場合は?
0480nobodyさん
2010/09/28(火) 13:07:16ID:???0481nobodyさん
2010/09/28(火) 13:09:43ID:???0482nobodyさん
2010/09/28(火) 13:46:12ID:???printでも一緒じゃん
0483nobodyさん
2010/09/28(火) 13:48:56ID:p2mX25rgテーブルAからSELECTで受け取ったデータをテーブルBに入れたいと思っているのですが
$result = $dbh->query($sql);
$row = $result->fetchAll(PDO::FETCH_ASSOC);
で受け取った配列が
Array ( [0] => Array ( [id] => 0000 [pass] => 0000 [mail] => xxxx_xxxx@xxxx.co.jp [birth] => 2000/6/15 [sex] => 1 [hash] => 2e910fer4bd1e1caafg61781 )
という感じで、これを
$insql = "insert into `user` value(\"{$row[id]}\",\"{$row[pass]}\",\"{$row[mail]}\",\"{$row[birth]}\",\"{$row[sex]}\")";
$stml = $dbh->query($insql);
としてクエリ発行しているのですが
print_r()でリクエストの中身を表示させると
PDOStatement Object ( [queryString] => insert into `user` value("","","","","") )
となってしまい、INSERTできません。
どうすればデータを入れられるのでしょうか?
0484nobodyさん
2010/09/28(火) 13:49:03ID:???echoは文字列を評価しない
0485nobodyさん
2010/09/28(火) 14:00:21ID:???最近のはどれでもSELECT結果をINSERTできるからそっちでやればいい
INSERT INTO `user`
SELECT `id`, `pass`, `mail`, `birth`, `sex` FROM unko;
0487nobodyさん
2010/09/28(火) 17:28:42ID:???とりあえず、
>$insql = "insert into `user` value(\"{$row[id]}\",\"{$row[pass]}\",\"{$row[mail]}\",\"{$row[birth]}\",\"{$row[sex]}\")";
valueじゃなくて、values じゃないの?
でも、
http://hibari.2ch.net/test/read.cgi/db/1276247839/405
からするとMySQLみたいだね。
>>485が正解。
0488483
2010/09/28(火) 17:42:09ID:???SUGEEEEEEEEEEEEEEE!!!!!!
マジパネェっす先輩!
かっけぇっス!
0490nobodyさん
2010/09/28(火) 20:51:41ID:???制御構造だろ
0492nobodyさん
2010/09/28(火) 21:09:57ID:???構文は構文だ
日本語マニュアルじゃ制御構造とまるで名詞扱いだが言語の構造という意味合い
>>491
言うに事欠いて無知、ねぇ
echoは構文だから右辺に持って来ればシンタックスエラーになって当然
printは関数だから式として評価できる
0493nobodyさん
2010/09/28(火) 21:15:33ID:???0495ちんぴら
2010/09/28(火) 21:27:19ID:???そうっスね。だが文字列を評価については間違い
引数はどちらも評価されるし、
展開の事を言ってるのならそれは文字列リテラルをシングルクォートかダブルクォートで書くかで決まる
0496ちんぴら
2010/09/28(火) 21:42:27ID:???サーセンwww
0497nobodyさん
2010/09/28(火) 22:17:11ID:???0499468
2010/09/28(火) 22:55:57ID:YVGjdndOありがとうございます!
無事、取得できました。
0500nobodyさん
2010/09/28(火) 23:47:15ID:???>>479でprint $contents と書いたのは、色々試したのか聞きたかっただけ。
printとechoの違いで盛り上がることになるとは思わなかった。
ちなみに制御構造じゃなくて言語構造な。
0501476
2010/09/29(水) 07:11:26ID:VYhAt3Fb>>479
$contentsの中身はテキストファイルに書き出して正常を確認しました。
改行コードの問題かとも思ったのですが……。
>>500
phpとactionscriptの連携で見たサイトの全てが、
echo "comp=".変数
となっていたのと、一部にprintはやめろと書かれていたので
printは試していませんでした。
一応試してみたら、やっぱり駄目でした。
0502nobodyさん
2010/09/29(水) 10:50:33ID:???分からないのに無理に答える必要なんてないのにね
0503nobodyさん
2010/09/29(水) 11:16:59ID:???0504nobodyさん
2010/09/29(水) 11:41:05ID:AW7qXGB4【連携ソフトウェア】Apache、MySQL
PHPの設定がもともと magic_quotes_gpc=on; となっています。
自分でoffに変えることができますが、
前の担当者がonのままにしてstripslashesを多用しています。
今回offにする必要が出てきたのですが、影響はありますか?
onでもoffでも使えるように、よく下のような方法がとられるようですが、
そのような方法は組み込まれていないようです。
offにしてstripslashesを使うと問題が出るのでしょうか?
if (get_magic_quotes_gpc()){
$text = stripslashes($text);
}
どうぞよろしくお願いします。
0505nobodyさん
2010/09/29(水) 12:05:39ID:???テスト環境を作っておかないといろいろ困るぞ
0506nobodyさん
2010/09/29(水) 15:30:30ID:lyrqwiNJhttp://jp2.php.net/manual/ja/function.stripslashes.php
バックスラッシュが取り除かれた文字列を返します(\' が ' になるなど)。 2 つ並んだバックスラッシュ (\\) は 1 つのバックスラッシュ (\) になります。
期待している文字列が変化する可能性があるので影響あろう
にしても質問範囲が広すぎて答えられないのが正解
0507nobodyさん
2010/09/29(水) 17:25:48ID:???あんたはバカげてると思うだろうけど、このレベルのことでつまづく人は
大抵何か些細なケアレスミスが原因だったりする。
バカげてると思うようなことでも一応やってみると原因がわかることもある。
0508nobodyさん
2010/09/29(水) 17:30:54ID:???まぁ、stripslashesを検索して全部削除するのが無難だろうな。
もしくは>>504のif文を含んだ関数を作ってstripslashesを置換するとか。
0509nobodyさん
2010/09/29(水) 17:37:55ID:AW7qXGB4アドバイスありがとうございます。
stripslashesが使われている箇所の数が多いですが、
地道に消そうと思います。
テスト環境も時間のあるときに作ろうと思います。
ありがとうございました!
0510nobodyさん
2010/09/29(水) 18:51:24ID:ohuXeJ7TのようにパラメータにURLが入るとref.phpが403 Forbiddenになります。
ref=ttp://www.google.co.jp/ですと表示されます。
多分セキュリティ的な設定のせいと思うのですが
設定の名称教えていただけませんでしょうか。
0511nobodyさん
2010/09/29(水) 18:55:41ID:???0512nobodyさん
2010/09/29(水) 19:34:13ID:???0513nobodyさん
2010/09/29(水) 19:36:07ID:???&はURLの中では変数を切り分ける意味合いがある。
log.php?a=1&b=2
ってするとa=1,b=2を渡せるわけ。
で、URLに&が入ってると、こっちの意味とわけわかんなくなる。
ref = http://www.google.co.jp/&ua=ie
と渡したいんだったら、渡す値をURLエンコードして
渡した先のプログラムでデコードして使うのがセオリー。
0514nobodyさん
2010/09/29(水) 19:52:06ID:ohuXeJ7Thttp://image.3-a.net/?re=http%3a%2f%2fwww.google.co.jp%2f
http://image.3-a.net/?re=ttp%3a%2f%2fwww.google.co.jp%2f
この様になります。
サーバのライブチャットで担当に言えば何とかなると思うのですが
何せ英語が全然でして。
cpanelのphp.ini QuickConfigなどで設定できないかと思い質問してみました。
0515nobodyさん
2010/09/29(水) 20:17:49ID:ohuXeJ7Tもうhttp抜きでやろうと思います。
ありがとうございました。
0516nobodyさん
2010/09/29(水) 20:28:16ID:???クリックしたらサーバ側で処理をするようなものなら
エンコードデコードができてhttpが含まれない方法ででやればいいんじゃない?
base64_encode() base64_decode()あたり使うとか
0517nobodyさん
2010/09/29(水) 20:45:31ID:ohuXeJ7Tbase64でいけそうな感じです!
Google Analytics携帯版での作業だったのですが
うまくga.phpでデコードされてanalyticsに表示される事を祈ります。
ありがとございました!
0518nobodyさん
2010/09/29(水) 21:10:34ID:NnO/2D7Z【OS名】WinXP SP3
【PHPのバージョン】5.3.3
【連携ソフトウェア】Apache2.2
【質問内容】
上記環境に「ふたば(改)動画板」を導入したところ、
画像のアップロードや動画の投稿は問題ないのですが
サムネイルが生成されません。特にエラー等も表示されません。
以下の点は確認したのですが、他に解決に向けての
ヒントがあれば教えていただきたいです。
・スクリプト側で、サムネイルを生成する設定になっていること
(生成しない設定も試してみたが同じ)
・スクリプト側で、サムネイルを保存するパスが間違っていないこと
・サムネイルを保存するフォルダ名が間違っていないこと
・サムネイルを保存するフォルダが読み取り専用になっていないこと
・php.iniにてphp_gd2.dllのコメントアウトが外されていること
・extension_dirが想定通りであること
0519nobodyさん
2010/09/29(水) 21:40:17ID:???ttp://gch.uni.cc/
0520nobodyさん
2010/09/30(木) 00:13:37ID:???0521nobodyさん
2010/09/30(木) 05:45:06ID:I9MDDWo92010-09-01
2010-09-02
2010-09-03
というデータと
2010-07-00
2010-08-00
のようなデータ(年月のみ)が混在している場合、
前者をxxxx年yy月zz日、
後者をxxxx年yy月
というようにフォーマットしたいのですが、
効率の良いやり方はありますでしょうか?
よろしくお願いします。
0522nobodyさん
2010/09/30(木) 05:57:07ID:???http://jp2.php.net/manual/ja/ref.datetime.php
0523518
2010/09/30(木) 07:18:09ID:YkwDopQPすみません、その本家で質問掲示板みたいなのが
見つからなかったのでここに書いたのですが…
0524nobodyさん
2010/09/30(木) 08:10:07ID:???それとも君は僕たちにソースを読んで解決方法見つけろとおっしゃるわけ?
0525nobodyさん
2010/09/30(木) 08:24:37ID:???'-'で年月日を分けて、日がゼロだったら(以下略
だろうけど、きっと何でもあるPHPならもっと便利な関数があるに違いない。
俺は知らんけど。
0527518
2010/09/30(木) 12:44:25ID:Jf2uMKoj>>524
すみません。
スクリプトの名前を出したのは話を分かり易くする為のつもりでした。
勘ですがPHPの導入段階でミスを起こしている気がしていたのでここに書きました。
で、その勘は当たってたみたいでC:\Windowsにphp.iniを入れ忘れていたので
GD他ライブラリが読み込まれておらず、結果サムネイルが生成されてないっぽいです。
しかし、C:\Windowsにphp.iniを放り込むとスクリプトが上手く動作しなくなります。
スクリプトの拡張子をhtmlに変えたような、ソースが見える状態になってしまいます。
php.iniをC:\Windowsに入れなければ一応スクリプトは動きますので、
Apache側の設定は大丈夫だと思うのですがphp.iniの何処をチェックしたら良いでしょうか?
0528518
2010/09/30(木) 12:48:05ID:Jf2uMKoj使用しているphp.iniは同梱のphp.ini-developmentをベースに
ネット上の情報を参考にして書き換えたものですが、
php.ini-developmentをphp.iniにリネームして編集せずに
C:\Windowsに放り込んでも同じ現象が起きます。
0530nobodyさん
2010/09/30(木) 16:22:13ID:xlyY++2I今日作った料理は美味しくなかった
料理はイタリアンです。おいしくなるヒントを下さいレベル
エスパーしか答えられない
0531518
2010/09/30(木) 17:41:42ID:bBmLZhr9すみません。他にどんな情報があれば良いのか分からないんです。
初心者用の質問スレは無いんでしょうか?
0532nobodyさん
2010/09/30(木) 17:52:35ID:???残念ながら、>>518の質問は、「下らねぇ質問」じゃないんだよ。
同じ状況を現場で解決する能力のある人はこのスレにいっぱいいるけど、
それを2chのスレでのやりとりで解決するにはたいへんな手間がかかる。
>>530の例えじゃないけど、絵の描き方を電話で聞いてるようなものだ。
0533nobodyさん
2010/09/30(木) 17:58:19ID:???0534nobodyさん
2010/09/30(木) 18:01:54ID:???自分でつくったスクリプトじゃないと答える方も難しいかな
まずエラーがでないというのは、本当にエラーが無いからなのか
php.iniでエラーを抑制しているのか、スクリプトで@つけてるせいなのかわからない
gdについては、phpinfo()でGD Support が enabledになっているか確認して。
0536nobodyさん
2010/09/30(木) 18:26:15ID:???0537527
2010/09/30(木) 19:26:25ID:YkwDopQPありがとうございます。質問を変えます。
php.iniを指定するとスクリプトがHTML扱いされて中身が見えます。
ttp://imepita.jp/20100930/694720
スクリーンショットをうpしてみましたがこんな感じになります。
php.iniがないと普通に動作しますが、GDが読み込まれてない(phpinfoで表示されてない)ので
使いたいスクリプトでサムネイルが生成されません。
pathで指定されてるところにphp.iniが無い場合、どこから設定を読んでるんでしょうか?
それをベースに設定を変えていけば動かせそうな気がするんですが…
>>529さんの貼ってくれたサイトに従ってphp.ini、httpd.confを設定してみましたが状況は同じです。
0538527
2010/09/30(木) 19:27:27ID:YkwDopQPあと
×スクリプトがHTML扱いされて中身が見えます。
○スクリプトがHTML扱いされたように中身が見えます。
です。
0540nobodyさん
2010/09/30(木) 19:39:32ID:???0541527
2010/09/30(木) 20:04:52ID:YkwDopQP落としてきたスクリプトの一行目が「<?」だけだったので
「<?php」にしたら動きました…
ググってみたらPHP5はデフォルトでショートタグがオフなんですね。
ていうかショートタグなんて今初めて知りました(´;ω;`)
散々スレ汚して本当にすみませんでした。
こんなアホに付き合ってくれた方に本当に感謝です。
ありがとうございました。
0542nobodyさん
2010/09/30(木) 20:16:32ID:???0543nobodyさん
2010/09/30(木) 20:30:29ID:???捨ててしまえ
0544nobodyさん
2010/09/30(木) 20:31:59ID:???0545nobodyさん
2010/09/30(木) 21:16:21ID:xlyY++2Iあぁ おいらのコードは見られると穴だらけだなw
0547nobodyさん
2010/10/01(金) 00:55:26ID:???0548nobodyさん
2010/10/01(金) 01:22:52ID:???0549nobodyさん
2010/10/01(金) 01:23:42ID:???・ショートタグ
・文字コードがShift-JIS
・extract
・タグを閉じたり開いたり忙しい
・echo "{$var}";
・ファイルの先頭・要所にコメントがない、
あってもコード見たら分かる事しか書いてない(仕様を書かないと意味がない)
・1行がやたらと長い
・$_GETとか$_POST配列扱う時にisset使わず分岐したりしてる(警告出るちゅーねん!)
…書き出したらきりがないのでこのあたりにしておく
0551nobodyさん
2010/10/01(金) 01:44:11ID:???0552nobodyさん
2010/10/01(金) 01:48:55ID:???基本的に、関数(もしくは言語構造)の本来の意味を考えて使い分けてる、
”あるかどうか”を調べたいのならisset
”無いかどうか”を調べたいのならempty
$_GETとかで使うのはほぼ前者
0553nobodyさん
2010/10/01(金) 01:53:57ID:???isset($_GET['name'], $_GET['email'], $_GET['body']);のように複数渡せるからというのもある
0554nobodyさん
2010/10/01(金) 01:54:18ID:JW8iU96Hこれって
$hoge = $_GET['hoge'];
がだめっていってるんだよね?
$hoge = null;
if (isset($_GET['hoge'])) {
$hoge = $_GET['hoge'];
}
にしろってことだよね?
もしいっぱいあった場合ってすべての$_GET $_POSTに対してこの処理をするの?
10個ぐらいあるとだいぶ間抜けに見えそうなんだけど
なんかいい記述方法あるかな?
0555nobodyさん
2010/10/01(金) 01:56:53ID:???判断基準が全然違うので目的にあったものを使う
どちらも未定儀の変数に対する挙動は null の場合と同じ
is_null()
> var が null の場合に TRUE、 それ以外の場合に FALSE を返します。
empty()
> varが空でないか、0でない値であれば FALSE を返します。
>
> 次のような値は空であると考えられます。:
>
> * "" (空文字列)
> * 0 (0 は整数)
> * "0" (0は文字列)
> * NULL
> * FALSE
> * array() (空の配列)
> * var $var;(変数が宣言されているが、クラスの中で値が設定されていない)
0557nobodyさん
2010/10/01(金) 02:06:44ID:JW8iU96Hあとでよくマヌアルみてみる
ありがとう
0558nobodyさん
2010/10/01(金) 07:01:53ID:???0559nobodyさん
2010/10/01(金) 10:06:47ID:Jbi45SFJ$bar = preg_replace("/あ/","い",$bar);
}
$a = "あいうえお";
foo($a);
echo $a;
と書いたんですが、
あいうえお
と出力されてしまいます。
いいうえおに変換されるようにするにはどこが間違ってますでしょうか
0562nobodyさん
2010/10/01(金) 10:19:36ID:???+ function foo(&$bar){
■ このスレッドは過去ログ倉庫に格納されています