【PHP】下らねぇ質問はID出して書き込みやがれ 105
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/03/17(木) 04:00:34.11ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 104
http://hibari.2ch.net/test/read.cgi/php/1297669559/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0352nobodyさん
2011/04/04(月) 22:57:25.16ID:???0354nobodyさん
2011/04/04(月) 23:20:27.24ID:???ど素人なので教本通りに進める以外に方法がないです・・・(´・ω・`)
jQueryを利用して以下のようなコードを実行してcakePHPから返答が返ってこないです
$.post(アドレス, { データ:データ }, function(data, status){
・・・省略・・・
}, 'json');
アドレスは、http://mobomoga.sakura.ne.jp/source/cakephp/app/accounts/save/です
実行されるfunctionは↓です
function save() {
$this->set("response", false);
}
とりあえず全ての要求に対して"response", falseを返すようにしてみたのですが
そもそもデータが戻ってきません。でも直接上記のアドレスにアクセスするとちゃんと"response",falseを返しているように見えます。
もう何が何やら、、、藁にも縋るような思いです。
どなたかデータが戻ってこない原因に心当たりがあれば教えていただけませんか。
0355nobodyさん
2011/04/04(月) 23:23:30.28ID:vvCt2F5b確認したところ、
サイトAではGETリクエスト時に
「Cookie: TestCookie・・・」を送信しているのに対し
サイトBではそのような表記はありませんでした。
>>354
おそらく、ページ見たらわかると思うけど
{"response":false}
じゃなく、
<html>
〜〜〜〜〜
{"response":false}
〜〜〜〜〜
</html>
まで返ってるからじゃない?
CakePHPわからんけど
0357nobodyさん
2011/04/04(月) 23:34:38.53ID:???0358nobodyさん
2011/04/04(月) 23:38:58.32ID:???0359nobodyさん
2011/04/04(月) 23:39:43.47ID:???なにならいいのー
0360nobodyさん
2011/04/04(月) 23:44:36.79ID:vvCt2F5b常に許可でも無理ぽいなー
ありがとう
ふと思ったんですが、これってドメイン関係あります?
DNSの設定で、本日ドメインに対してIP割り当てたので・・・。
なさそうかな・・・。
0361nobodyさん
2011/04/04(月) 23:46:52.23ID:???0362nobodyさん
2011/04/05(火) 00:19:19.98ID:???それだとPHPがHTMLを返してるのが原因。
試しにJavaScriptのコールバック部分に、alert(data);って入れて試してみな。HTMLタグが表示されるはず。
それをJSONデータのみを返すようにする必要がある。
CakePHPわからないから解決策は答えられないけど、Ajax用の設定があったはず。
「CakePHP Ajax」とかでググったらそれっぽいのたくさん出てくると思うよ。
0363nobodyさん
2011/04/05(火) 00:55:33.92ID:???ありがとうございます。
cakePHPではjson形式で返すように記述する部分が別にありまして、
そちらのファイルに<?php echo json_encode(array("response"=>$response)); ?>と記述しています。
前述したjQueryのpostのfunction内にalertを記述しても表示されないので、コールバック関数が呼ばれず
おそらくデータを取りに行ったまま文字通り何も返答しない状態になっているのかと思われます。
自分なりに考えたのですが、お二人の話から察するに、javaから送られたリクエストを受け取って「"response":false」というものを
セットすることはできているが、上記にある、JSON形式でjavaScriptに返答するファイルにセットされたものが渡されてないという感じっぽいですよね、、、。
となると、cakePHPの内部的な設定を間違えているのかなぁ・・・・。
ここで質問するのはお門違いだったかもしれませんね(´・ω・`)
0364nobodyさん
2011/04/05(火) 01:05:45.94ID:???そう、JSON返す処理自体は正しいんだけど、JSONデータの表示がHTMLテンプレートの中に組み込まれてる状態だから
JSON返すページのみHTMLテンプレートを使用しないように設定すればいいんだと思う
0365nobodyさん
2011/04/05(火) 01:20:59.01ID:O9iT5e/sまさかサブドメインにアンダーバー(_)が入っているとIEで使えないとか・・・。
いい勉強になりました
0366nobodyさん
2011/04/05(火) 01:51:18.82ID:???0367nobodyさん
2011/04/05(火) 02:37:35.04ID:???質問するときにID出さない奴には要注意
0368nobodyさん
2011/04/05(火) 05:11:36.20ID:/Jg2TDSU↓
momo.php?mode=age2 > momokeitai.php?mode=age2
momo.php?mode=age255 > momokeitai.php?mode=age255
のようにしたいです。
この辺の処理はどうしたらいいでしょうか?
$UA = $_SERVER['HTTP_USER_AGENT'];
if(preg_match("/DoCoMo/",$UA)||
preg_match("/KDDI/",$UA)||
preg_match("/SoftBank/",$UA)||
preg_match("/Vodafone/",$UA)||
preg_match("/J-PHONE/",$UA)
){
}
よろしくお願いします<m(__)m>
0369nobodyさん
2011/04/05(火) 05:32:57.12ID:???header("Location: momokeitai.php?mode=".$_GET['mode']);
0370nobodyさん
2011/04/05(火) 05:40:44.30ID:???0371nobodyさん
2011/04/05(火) 06:36:47.85ID:/Jg2TDSUif(preg_match("/DoCoMo/",$UA)||
preg_match("/KDDI/",$UA)||
preg_match("/SoftBank/",$UA)||
preg_match("/Vodafone/",$UA)||
preg_match("/J-PHONE/",$UA)
){
header("Location: momokeitai.php?mode=".$_GET['mode']);
}
これでやってみましたが
momokeitai.php?mode=
でIDの部分が空のまま転送されます。・゚・(ノД`)・゚・。
なんででしょう
>>370
.htaccessは負担が重いので使えません(´;ω;`)
0372nobodyさん
2011/04/05(火) 06:42:35.99ID:/Jg2TDSUif(preg_match("/DoCoMo/",$UA)||
preg_match("/KDDI/",$UA)||
preg_match("/SoftBank/",$UA)||
preg_match("/Vodafone/",$UA)||
preg_match("/J-PHONE/",$UA)
){
if(isset($_GET['id'])) {
$id = $_GET['id'];
}
header("Location: momokeitai.php?mode=".$id);
}
これでできましたありがとうございます!
0374nobodyさん
2011/04/05(火) 10:13:47.60ID:???getenv('HTTP_USER_AGENT')と書きましょう
0375nobodyさん
2011/04/05(火) 10:18:51.89ID:vfRDyz1bapplication/ … 非公開ディレクトリ
のようにディレクトリ階層が別れており、
上記のポジションを崩さず、下記のように設定は可能でしょうか。
http://hoge.example.com/hoge1/
http://hoge.example.com/hoge2/
0376nobodyさん
2011/04/05(火) 10:23:47.55ID:???http://hibari.2ch.net/test/read.cgi/php/1297364669/10
0378nobodyさん
2011/04/05(火) 10:26:45.43ID:O9iT5e/sごめんなさい、ZF使ってないです
http://hoge.example.com/hoge1/ → /home/www/hoge/hoge1/public_html
http://hoge.example.com/hoge2/ → /home/www/hoge/hoge2/public_html
のように、ドキュメントルートの設定は可能でしょうか
0380nobodyさん
2011/04/05(火) 10:29:21.42ID:O9iT5e/sドキュメントルートにapplicationを設置した場合、
public_htmlとapplicationの階層崩れますよね
0381nobodyさん
2011/04/05(火) 10:34:08.53ID:???>>375では
http://hoge.example.com/hoge1/
http://hoge.example.com/hoge2/
のように設定したいと言いながら>>377に回答貰った後に
>>378で
http://hoge.example.com/hoge1/ → /home/www/hoge/hoge1/public_html
http://hoge.example.com/hoge2/ → /home/www/hoge/hoge2/public_html
にしたいって・・・
どこにpublic_htmlとapplicationが入ってんの?
0382nobodyさん
2011/04/05(火) 10:39:10.40ID:???だからそうしたいならpublic_htmlにhtaccessでアクセス拒否して
/home/www/hoge/hoge1/public_htmlやらにhtaccessでアクセス許可すりゃいいだろ?
0384nobodyさん
2011/04/05(火) 11:09:02.49ID:O9iT5e/sディレクトリ階層
hoge1/public_html/index.php etc
hoge1/application/config.php etc
hoge2/public_html/index.php etc
hoge2/application/config.php etc
URL
http://hoge.example.com/hoge1/ → /home/www/hoge/hoge1/public_html
http://hoge.example.com/hoge2/ → /home/www/hoge/hoge2/public_html
0385。 ◆oDupeixhZv52
2011/04/05(火) 11:18:42.07ID:???みたいな設定の話?
0387nobodyさん
2011/04/05(火) 12:06:53.84ID:uZc7Aq85if (isset($var) && $var == 1)
みたいな書き方をしているのですが、これって正しいですよね?
一応、エラーは出ませんが・・。
0388nobodyさん
2011/04/05(火) 12:08:52.13ID:???0389nobodyさん
2011/04/05(火) 12:15:43.61ID:???if (unset($var) & $var = 1)
みたいな書き方をしているのですが、これって正しいですよね?
一応、エラーは出ませんが・・。
0390nobodyさん
2011/04/05(火) 12:16:23.67ID:???0391nobodyさん
2011/04/05(火) 14:20:25.76ID:0O+W0/s0$main はCSVより読み込んだテキスト(HTMLタグ付き)が配列で収納されています。
同様に $link にもcsvより読み込んだファイル名を収納しており、このファイル名でファイルを生成します。
・やりたいこと。
ファイルを複数生成し、テンプレートを読み込み、そのメイン記事となる部分にcsvで記載したテキストを表示させたい。
テンプレートファイル内の#include# にmein[] の中身を順に書き出したい
・やったこと
下記プログラム。
csv を配列に収納→ for で配列の数だけ回しながらファイル生成と記事の作成をしようとした。
・問題点
for の中にある $n が有効になっていない?
生成されるファイル名は 配列$linkの[0]から[7]の名前で生成されますが
記事の内容は全て $main[1] が書き出されています。
$main["$n"] の$n が変化していない印象がある。
ファイル一式をUPしました
http://www1.axfc.net/uploader/Sc/so/221739
0392391
2011/04/05(火) 14:21:03.81ID:0O+W0/s0for($n = 0; $n < 8; $n++) {
$filename = $link[$n].".html";//ファイル名の指定
$main_txt = $main["$n"];
if ( !file_exists ( $filename ) ) {//もしファイル名がなかったら
touch($filename); // 新しくファイルを作成
chmod($filename,0666);
//テンプレートファイルにある文字列を置換する
$keys['#include#'] = $main_txt;
$buff = strtr($buff, $keys);
$fp = fopen( $filename,"r+"); // 読み書きモードでオープン
flock($fp, LOCK_EX); // 書き込みロック
fseek($fp, 0); // ポインタを先頭に戻す
fputs($fp, $buff); // 書き込み
fclose($fp); // ファイルを閉じる
}//ファイルがある場合は処理しない
}
改行制限のため分割
プログラム一部抜粋しました。
0393。 ◆oDupeixhZv52
2011/04/05(火) 14:50:58.68ID:???0394nobodyさん
2011/04/05(火) 15:04:26.86ID:???テンプレートファイルの中身は最初の中身のままです。
置換したものを別ファイル名で保存しているので問題ないと思うのですが。
別の指摘でしたらすいません、詳しく教えてください
0395nobodyさん
2011/04/05(火) 15:06:41.63ID:???0396nobodyさん
2011/04/05(火) 15:14:25.71ID:???+ $buff2 = strtr($buff, $keys);
- fputs($fp, $buff);
+ fputs($fp, $buff2);
∧∧
ヽ(・ω・)/
\(.\ ノ
、ハ,,、  ̄
0397391
2011/04/05(火) 15:54:56.13ID:???0398nobodyさん
2011/04/05(火) 16:23:39.15ID:9JKVBGzMfile_existsでは絶対パスが使用できないので困っています。
何かいい方法ありませんか?
0399nobodyさん
2011/04/05(火) 16:48:14.83ID:RXGsg7Xb$key = "test";
// A
echo $array["$teset"];
// B
echo $array[$test];
Bなんですけど変数に"や'で囲まなくてもいいのでしょうか?
echo $array["'". $test. "'"];な感じに囲むものでしょうか?
0401nobodyさん
2011/04/05(火) 16:56:00.18ID:9JKVBGzMうおぉぉ、なぜ思いつかなかったんだ…
ありがとうございます
0402nobodyさん
2011/04/05(火) 16:56:07.86ID:???$key = "test" なんだから、
$array["test"] = $array[$key] でしょ
> echo $array[$test];
$test は定義されていない
"$key" は文字列の中で$keyが展開されて "test" と同じ
'$key' は展開されないのでそのまま「$key」という文字列になる
"'".$key."'" は "'"."test"."'" = "'test'"
0403。 ◆oDupeixhZv52
2011/04/05(火) 17:01:41.36ID:???http://www.php.net/manual/ja/function.file-exists.phpの下にある
url_exists みたいなのもある。
>>399
ふつうは囲まない。
"$key" みたいなのは NULLのとき "" になるのを使うこともある。
0404nobodyさん
2011/04/05(火) 17:02:19.98ID:???file_get_contentsでファイル転送リストを取得、foreachでそれぞれ
file_get_contentsでファイルを取得していますが、一定サイズ以上になるとうまくいきません。
ファイルすべてをメモリ上にプールすることなく、取得する方法はないでしょうか。
0405404
2011/04/05(火) 17:02:46.43ID:WgbWuRE+0406nobodyさん
2011/04/05(火) 17:07:32.98ID:???0408404
2011/04/05(火) 17:14:06.76ID:WgbWuRE+WANでしか接続できないサーバーなので、
allow_url_fopenオプションを入れて、fopenで取得しローカルのファイルにfputする、っていう
ことでしょうか。メモリ上にプールされる気がします
memory_limit < file_sizeにすれば正常に取得されます
0409nobodyさん
2011/04/05(火) 17:17:22.74ID:???fread ですこしずつ読み込んでファイルに保存していけばいい
$handle = fopen("http://www.example.com/", "rb");
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
$contents をファイルに書き出し
}
fclose($handle);
0410nobodyさん
2011/04/05(火) 17:18:00.67ID:???○ $contents = fread($handle, 8192);
0411nobodyさん
2011/04/05(火) 17:19:32.00ID:???0412404
2011/04/05(火) 17:33:17.39ID:WgbWuRE+ありがとうございます。
保存先をファイルポインタ終わりにおいて開き、whileの中でfputしていくようにすると
保存先ファイルのファイルサイズが順調に増え、memory_limit=256Mとしたときでも
980MBytesのファイルを保存できたことを確認しました。
リモートでも逐次読み込み、保存できたとは...ありがとうございました。
0413nobodyさん
2011/04/05(火) 17:53:14.48ID:RXGsg7Xbファイルサイズが500MB超えると急激に書き込み速度が落ちるのは何故なんですか?
500MB - 1byteまではベンチ取ったけど速度は一定です
PHPで規制されてるのですか?何故ですか?
0414nobodyさん
2011/04/05(火) 18:09:39.27ID:???memory_limitはどうなってる?
場合によってはOSレベルでメモリスワップが発生しているのかも知れない。
0415nobodyさん
2011/04/06(水) 01:21:13.22ID:tGjaXiheサイトに使いたいCGIを見つけたのですがライブラリが必要だと書いてあったので…
htmlとcssの知識なら少しはあるのですが、PHPは殆どわかりません。
0417nobodyさん
2011/04/06(水) 03:03:27.99ID:???調べてわからなかったから質問しているのですが…
答える気が無いなら黙っててくれませんか?
正直そういう出し惜しみってかなりウザいんで。
0418nobodyさん
2011/04/06(水) 03:24:23.49ID:???本人の能力の問題であって、知る術の問題ではない。
単に能力がないだけ。
素質がない。
いいか、みんな
(゜д゜ )
(| y |)
才能がある奴が努力すると
才能 ( ゜д゜) 努力
\/| y |\/
二つ合わさって天才となる
( ゜д゜) 天才
(\/\/
そして、いいか、みんな
(゜д゜ )
(| y |)
無能な奴が努力すると
無能 ( ゜д゜) 努力
\/| y |\/
二つ合わさって無力となる
( ゜д゜) 無力
(\/\/
0419nobodyさん
2011/04/06(水) 03:29:13.38ID:???0420nobodyさん
2011/04/06(水) 03:32:54.85ID:???0421nobodyさん
2011/04/06(水) 03:40:35.14ID:Zyk6jd4Etwitter APIを利用した投稿後のレスポンスxmlに関してです
$response = $consumer->sendRequest('http://api.twitter.com/1/statuses/update.xml', array('status' => $tweet), 'POST');
($consumerはHTTP_OAuth_Consumerのインスタンス)
@ echo mb_convert_encoding($response->getBody(), 'EUC-JP', 'UTF-8');
$xml = new SimpleXMLElement($response->getBody());
A echo mb_convert_encoding($xml, 'EUC-JP', 'UTF-8');
B echo mb_convert_encoding($xml->status->text, 'EUC-JP', 'UTF-8');
@は表示されるのですが、AやBが表示されなくて困っています
0422421
2011/04/06(水) 03:46:57.73ID:Zyk6jd4E0424nobodyさん
2011/04/06(水) 03:55:17.15ID:???「表示されない」の意味が不明
0425421
2011/04/06(水) 04:06:01.54ID:Zyk6jd4E0426nobodyさん
2011/04/06(水) 04:21:10.08ID:???print_rで確認してみな。
0427nobodyさん
2011/04/06(水) 04:41:31.23ID:???@がechoで表示されるってことは$response->getBody()の戻り値は文字列ってことで
それを次の行でSimpleXMLElementオブジェクトにしているので、
AとBはSimpleXMLElementオブジェクトになっているため、パースしないと文字列として出力することはできない
ところで、$response->getBody()の結果は何が表示されてるの?文字列?XML?
それがXMLならば、Aの前の行に以下を入れれば、Bが表示できる可能性がある。
$xml = simplexml_load_string($xml);
0428nobodyさん
2011/04/06(水) 04:42:55.70ID:???抽出はできているのかな? どうやって抽出できているかを確認しているのかな?
0429426, 427
2011/04/06(水) 04:48:35.53ID:???それならそのXMLをパースすればいいんだよ。パースっていうのは解析って意味ね。
たぶん、new SimpleXMLElement()を使うのはまだ難しいと思うから、
simplexml_load_string();とかsimplexml_load_file();を使ったほうがいいと思う。
ググって使い方を覚えとくといいよ。これは万能で覚えとけば何でもできるようになるから。
0430421
2011/04/06(水) 04:49:16.84ID:Zyk6jd4E>>426の方のprint_rの出力結果を参考に、
echo mb_convert_encoding($xml->text, 'EUC-JP', 'UTF-8');
に変えたらとりあえず表示されるようにはなりました。出力結果を見たらなぜか親要素のstatusがなくなってました
0432nobodyさん
2011/04/06(水) 05:11:10.78ID:???作る人向けのスレだし門前払い食らうのは当たり前よ
0433421
2011/04/06(水) 05:25:03.63ID:Zyk6jd4Eまさにそのとおりです。ありがとうございます。自分では
echo mb_convert_encoding($xml->status->text, 'EUC-JP', 'UTF-8');
でパースしているつもりだったのですが、違ったようでした
このページ ttp://phpspot.net/php/man/php/function.simplexml-load-string.html の例1を例とすると
整形式XML文字列をオブジェクト化しても親要素documentは存在し、$xml->document->titleとなると勘違いしていました
精進します
0434nobodyさん
2011/04/06(水) 09:28:13.87ID:???おまいら質問者に冷たすぎだろ
別に既存のスクリプトについて質問してるわけじゃなくPEARとは何かっていう一般的な質問に過ぎないんだから
せめてこれくらいは
>>3読め
■PEARマニュアル http://pear.php.net/manual/ja/
0435nobodyさん
2011/04/06(水) 09:36:06.40ID:jXnilcjzPEARのライブラリって何ですか?→ http://tinyurl.com/3rbty5m
どうやったら使えますか?→ http://tinyurl.com/3d2nnld
0436nobodyさん
2011/04/06(水) 11:40:02.77ID:???ググれとか言うんだろうな。ググってわかったら質問してないわ
0437nobodyさん
2011/04/06(水) 11:51:22.59ID:???普通の人ならググればわかることだから
0438nobodyさん
2011/04/06(水) 12:02:00.05ID:???0440nobodyさん
2011/04/06(水) 12:26:43.68ID:???ちょろっと覗いただけで「なんで質問スレの奴らって云々」とか言ってまとめられるとか心外すぎ
0441nobodyさん
2011/04/06(水) 12:42:35.31ID:???0442nobodyさん
2011/04/06(水) 12:55:52.13ID:???>>1や>>3を読んでから質問しろというルールも無い
てか>>1とか読まないからルールなんて知らない
0443nobodyさん
2011/04/06(水) 12:56:49.43ID:???0445nobodyさん
2011/04/06(水) 13:52:30.20ID:???http://www.redout.net/data/osietekun.html
0446nobodyさん
2011/04/06(水) 13:57:34.44ID:???0447nobodyさん
2011/04/06(水) 14:17:57.46ID:???ここまでひどいバカ滅多にいないぞ
0448nobodyさん
2011/04/06(水) 14:35:32.90ID:???ついさっき家の前でムホォォォ ウホォォォとか叫びながら歩いてる基地外いたし、ほんとコワイわ
0449nobodyさん
2011/04/06(水) 14:40:13.03ID:???0450nobodyさん
2011/04/06(水) 16:12:08.20ID:???echoってどうやって使うか教えてください
回答者を>>442に指名します
使い方がさっぱり分からないのでサンプル付きでよろしくおねがいします
0451450
2011/04/06(水) 18:09:56.74ID:???0452nobodyさん
2011/04/06(水) 19:20:05.62ID:CfTvqrTNこちらの関数を使ってページを圧縮してみたところ、
IE8では圧縮されずFxでは圧縮されました。
前者では右クリ→プロパティ、後者では右クリ→ページの情報を表示で確認しました。
ChromeやOpera等他のブラウザも調べたかったのですが、
確認方法がわかりませんでしたが、IE以外は対応してると考えていいでしょうか?
2chのページも同じ感じでブラウザから表示して確認したところ、同様の結果になったので、
IEでは対応してないから無理ということなのかもしれませんが、
IEでもページ圧縮を有効にする方法がありませんでしょうか?
■ このスレッドは過去ログ倉庫に格納されています