【PHP】下らねぇ質問はID出して書き込みやがれ 130
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2013/09/19(木) 13:47:19.93ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 129
http://kohada.2ch.net/test/read.cgi/php/1375636484/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0271nobodyさん
2013/10/11(金) 06:25:51.85ID:jgQ61xJwなるほど、そういうことでしたか
ありがとうございました。
0273nobodyさん
2013/10/11(金) 07:11:51.37ID:???ありがとうございます。
なるほど、Configuration File (php.ini) Path には
C:\Windows しか記載されていませんが、
実際はデフォルトで特定のパスを読み込んでるんですね。
0274nobodyさん
2013/10/11(金) 09:02:12.68ID:jgQ61xJwindex.phpは存在します。
<?php
echo apache_get_version();
http_post_data('index.php');
?>
エラーコードです。
Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
Fatal error: Call to undefined function http_post_data() in xxx\test.php on line 3
0275nobodyさん
2013/10/11(金) 09:32:38.16ID:???http://www.php.net/manual/ja/function.http-post-data.php
> (PECL pecl_http >= 0.1.0)
pecl_http が入ってないんでしょう
0276nobodyさん
2013/10/11(金) 10:02:19.30ID:jgQ61xJwありがとうございます!
0277nobodyさん
2013/10/11(金) 10:55:00.59ID:/Nhu1Y1V商品が見つからなかった場合、HTTPステータスで404を返すべきでしょうか?
0278nobodyさん
2013/10/11(金) 10:58:22.22ID:6ra1/Oru0279nobodyさん
2013/10/11(金) 11:03:15.51ID:???ドキュメントがないわけじゃないし
受理はされてJSON返してんだから200じゃない
0280nobodyさん
2013/10/11(金) 11:21:03.37ID:???0281nobodyさん
2013/10/11(金) 11:27:00.76ID:/Nhu1Y1Vありがとうこざいます
200を返してJSON内に結果を記述するようにします
02821/2
2013/10/11(金) 12:31:27.07ID:SK3emKdrヘッダ、POSTが同じでステータスは200OKなんですがajaxのPOSTではレスポンスが返ってこないのです。
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>
<script src="js/jquery-ui-1.10.3.custom.min.js"></script>
<script src="js/jquery.socialbutton-1.9.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#search2").bind("change", function(){
alert( encodeURI($("#search2").val()));
$.ajax({
beforeSend: function(req) {
req.setRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
},
contentType :'application/x-www-form-urlencoded',
type : "POST",
02832/2
2013/10/11(金) 12:33:43.03ID:SK3emKdrdata : "appid="+encodeURI('dj0zaiZpPWFDOTJPS2FCeUwwRiZzPWNvbnN1bWVyc2VjcmV0Jng9MGU-')+'&'+
"sentence="+encodeURI($("#search2").val())+'&'+
"filter="+encodeURI('9'),
success: function(msg,xml){
alert( msg);
},
error:function(XMLHttpRequest, textStatus, errorThrown){
alert( 'error'+textStatus );
} }) }); });
</script></head>
<body><form action="http://jlp.yahooapis.jp/MAService/V1/parse" method="post">
<input type="text" name="appid" value="dj0zaiZpPWFDOTJPS2FCeUwwRiZzPWNvbnN1bWVyc2VjcmV0Jng9MGU-">
<input type="text" name="sentence" id="search2" value="12345">
<input type="text" name="filter" value="9">
<input type="submit" value="送信する"></form></body></html>
デベロッパーコード+ヤフーIDは実験用に取ったものなので、どうなっても大丈夫です。
0284nobodyさん
2013/10/11(金) 13:24:12.87ID:???0285nobodyさん
2013/10/11(金) 13:26:22.80ID:6ra1/Orupostの返り値とかって、chromeで見れなかったっけ
0286nobodyさん
2013/10/11(金) 13:31:43.43ID:???parseappid=〜→parse?appid=〜
0287286
2013/10/11(金) 13:35:21.27ID:???0288nobodyさん
2013/10/11(金) 13:44:01.53ID:???0289nobodyさん
2013/10/11(金) 15:04:16.89ID:HtFFGZ+p自分は500返してるけど何かちがうっぽい
0290nobodyさん
2013/10/11(金) 15:52:21.83ID:???0291nobodyさん
2013/10/11(金) 15:52:57.36ID:???HTTPステータスは200(OK)で戻して、エラー内容はcontentsで戻すよ派と、
HTTPのエラーコードを戻すよ派(特にRESTのとき)に分かれると思う。
500はinternal server errorなので使わない方が良い。じゃないと、バグなどで本当に内部エラーが
起こったときにわからなくなるから。
エラーコードを戻すことにするなら、4xxが良い。
0292nobodyさん
2013/10/11(金) 15:55:47.28ID:???HTTPステータス5xxはServer Error
という意味がある。
0293nobodyさん
2013/10/11(金) 15:57:10.13ID:???返す結果がなんかあるならxmlとかjson使ってerrorのコードや内容なんかを追加して入れときゃいいだけ
HTTPステータスコードでどうにかするってのはクレイジー
0294nobodyさん
2013/10/11(金) 16:19:24.66ID:???GoogleのとあるAPIでは、200,201,304,400,401,403,404,409,410,500を戻すが。
https://developers.google.com/gdata/docs/2.0/reference
0296nobodyさん
2013/10/11(金) 16:33:03.89ID:???例えばクライアントがjQueryだったとき、$.ajaxのcallbackでsuccess(), error()というのがある。
これはそれぞれajaxが成功したとき、失敗したときなんだが、どうやって振り分けているかというと、
HTTPステータスコードで判断している。
具体的には、2xxか304ならsuccess()、それ以外はerror()が呼ばれる。
それを踏まえると、(クライアント側が原因の)エラーの場合は、4xxを戻すのが良いと思う。
0297nobodyさん
2013/10/11(金) 16:33:27.66ID:???出来るっちゃ出来るけどサーバに頼るのが普通でしょ
>>294はまた別のプロトコルの話では?
0298nobodyさん
2013/10/11(金) 16:38:21.16ID:???4xxを返して(errorにして)、付随情報がなくてもエラーとして処理できるか。
の違い。
0299nobodyさん
2013/10/11(金) 16:39:30.14ID:???マジかよ。
http://php.net/manual/ja/function.header.php
http://php.net/manual/ja/function.http-response-code.php
0300nobodyさん
2013/10/11(金) 16:42:03.28ID:???>>293は単純に200で返す派なだけに見えるが。
ただ細かいエラー内容もらすほうが微妙なこと多いし、
HTTPステータスコードのレベルでエラー返して
error_logあたりで内部的にエラー管理したほうがいいことが多いような気がする。
もちろんそれが全ての場合での答えってわけじゃないが。
0301nobodyさん
2013/10/11(金) 16:42:38.63ID:???英語が読めないって悲しいね
> A client queries a Google service by issuing an HTTP GET request.
> The query URI consists of the resource's URI (called FeedURI in Atom) followed by query parameters.
0302nobodyさん
2013/10/11(金) 16:43:47.24ID:???xhrだと全部200で処理するのを前提としたサンプルコードで溢れてるからね。
0303nobodyさん
2013/10/11(金) 16:44:53.97ID:???認証エラーを
> 401 UNAUTHORIZED Authorization required.
じゃなくて200で返すのは違和感がある。
0306nobodyさん
2013/10/11(金) 16:51:35.33ID:???『Web API 設計のベストプラクティス集 "Web API Design - Crafting Interfaces that Developers Love"』
http://d.hatena.ne.jp/cou929_la/20130121/1358776754
0309nobodyさん
2013/10/11(金) 16:57:57.20ID:???0311nobodyさん
2013/10/11(金) 17:01:37.31ID:???HTTPでアクセスする場合の基本概念の話で一貫してる。
それがhttpdでもPHPでもmyappでも同じ。
0312nobodyさん
2013/10/11(金) 17:07:28.61ID:???> HTTPなんてエラーコード自分で生成するもんじゃないから
0313nobodyさん
2013/10/11(金) 17:08:58.68ID:???"OK";
} else {
"NG"
}
if (status==200 && response=="NG") {
ログインできません
}
///////////////
if (login) {
"OK";
} else {
http_status(401);
"NG";
}
if (status==401) {
ログインできません
}
どっちにしますか?って話?
0314nobodyさん
2013/10/11(金) 17:11:54.98ID:???0316nobodyさん
2013/10/11(金) 17:16:54.28ID:???0317nobodyさん
2013/10/11(金) 17:19:03.86ID:???いわゆるWeb APIならステータスコードの方がハンドリングしやすいし、error_page.htmlにリダイレクトした方が良い場合もあるし。
0318nobodyさん
2013/10/11(金) 17:24:57.58ID:???0319nobodyさん
2013/10/11(金) 17:35:40.25ID:???0320nobodyさん
2013/10/11(金) 17:41:24.12ID:???何に対して500返してるかもよくわからないのに相変わらず質問者置いてけぼり
0321nobodyさん
2013/10/11(金) 17:56:43.93ID:???0322nobodyさん
2013/10/11(金) 18:26:29.81ID:HtFFGZ+pありがとうございます
0323nobodyさん
2013/10/11(金) 18:31:12.58ID:???> 500はinternal server errorなので使わない方が良い。じゃないと、バグなどで本当に内部エラーが
> 起こったときにわからなくなるから。
デバッグ目的でステータスコードを変な風に使わないでくれ
サーバーサイドの問題だから素直に500番台を返して欲しいぜ
0325nobodyさん
2013/10/11(金) 18:47:09.82ID:???0326nobodyさん
2013/10/11(金) 20:23:51.08ID:???503をPHPで書き出すページにリダイレクトしてたけどな。
0327nobodyさん
2013/10/11(金) 20:30:28.72ID:???Apache
あぱっちぇ!
0328nobodyさん
2013/10/11(金) 20:35:35.83ID:???0329nobodyさん
2013/10/11(金) 21:07:07.93ID:21C5uPL0何らかの処理を差し込むことはできるでしょうか?
例えば一律に入力フィルターを通るようにする、といったことなんですが。
マニュアルのスーパーグローバル変数の項にPHP標準のフィルタのリンクがあったので
試してみたのですが、これはスクリプト内で任意に使用できるユーティリティのようでした
http://www.php.net/manual/ja/book.filter.php
0330nobodyさん
2013/10/11(金) 21:14:02.66ID:???収まる前にって送信するなってことじゃない?
となるとJavaScript側でやれとしか
0331282
2013/10/11(金) 21:47:41.01ID:SK3emKdr0332nobodyさん
2013/10/11(金) 22:05:25.91ID:21C5uPL0例えばGETリクエストをApacheが受け取る場合だと、
Apacheがパラメータを環境変数にセットし
PHPがこれを解析して$_GET(配列)をセットしていると思います。
で、文字コードのチェックや、一切受け付けない文字(制御文字など)を除去するなど
生データ(文字列)の段階で変換したりできると簡単かと思ったんです。
配列になってからでは、100のパラメータに対して100の処理が必要だけど
生データは1つの文字列なので1回で済むかなと考え、
実行プロセスの起動と変数をセットする間に
PHPコードでアクセスできるフックポイントがあればと思いました
0333nobodyさん
2013/10/11(金) 22:08:08.92ID:???0334nobodyさん
2013/10/11(金) 23:39:55.91ID:???<?php
header('Content-Type: application/xml');
ini_set('arg_separator.output', '&');
$url = 'http://jlp.yahooapis.jp/MAService/V1/parse';
$appid = isset($_POST['appid']) ? $_POST['appid'] : null;
$sentence = isset($_POST['sentence']) ? $_POST['sentence'] : null;
$filter = isset($_POST['filter']) ? $_POST['filter'] : null;
$data = http_build_query(
array(
'appid' => $appid,
'sentence' => $sentence,
'filter' => $filter
)
);
$xml = file_get_contents($url, false, stream_context_create(
array(
'http' => array(
'method' => 'POST',
'header' => "Content-Type: application/x-www-form-urlencoded;charset=UTF-8\r\nContent-Length: " . strlen($data) . "\r\n",
'content' => $data
)
)
));
echo $xml;
post先をこのスクリプトに変えてね
0335282
2013/10/11(金) 23:41:55.82ID:SK3emKdrありがとうございます!感動しました!
0336nobodyさん
2013/10/12(土) 01:37:02.46ID:RtoR0pty<javascript>
var data = {};
data.result = resultArray; // resultArrayには配列が入っています
$.ajax({
type: "POST",
url: "save.php",
data: data
});
<PHP>
<?php
$filename = data.txt;
$result = $_POST['result'];
$fp = fopen($filename, 'w');
frite($fp, $result);
fclose($fp);
?>
こんなかんじで書いてみたのですが
data.txt には何も書き込まれません。
エラーでwrite() expects parameter 2 to be string, array given in <phpのパス>
が出てしまいます。
何か解決方法はありませんか?
0337nobodyさん
2013/10/12(土) 05:26:34.97ID:???PHP使ったこともないPerl厨が荒らしにきたのが丸わかり
0338nobodyさん
2013/10/12(土) 06:18:16.36ID:???0339nobodyさん
2013/10/12(土) 07:55:50.69ID:RtoR0pty0340nobodyさん
2013/10/12(土) 08:28:13.04ID:???write() expects parameter 2 to be string, array given
配列じゃなくて文字列ちょうだいって言ってるんだから
$resultをimplode()とかで文字列にしないと
0341nobodyさん
2013/10/12(土) 09:03:56.48ID:???0342nobodyさん
2013/10/12(土) 11:06:02.06ID:???配列の内容確認だけなら
fwrite($fp, print_r($result, true));
とか
0343nobodyさん
2013/10/12(土) 11:38:40.17ID:???http://toro.2ch.net/test/read.cgi/hp/1381154429/594
0344nobodyさん
2013/10/12(土) 12:05:42.75ID:Su3ioHiIプログラムの全てをクラスに入れたいのですが
$inst = new MyClass();
exit;
$inst = new MyClass();
$inst->main();
exit;
この場合、constructだけのほうが良いですか?
0346nobodyさん
2013/10/12(土) 12:15:59.20ID:Su3ioHiIMVCのControllerです。
0347nobodyさん
2013/10/12(土) 12:40:40.80ID:???0348nobodyさん
2013/10/12(土) 12:45:22.80ID:???0349235
2013/10/12(土) 13:24:34.55ID:???0350nobodyさん
2013/10/12(土) 15:47:48.97ID:???python3みたいに互換性捨てて一新してほしい
0351nobodyさん
2013/10/12(土) 16:03:53.77ID:???0352nobodyさん
2013/10/12(土) 16:25:19.82ID:???0353nobodyさん
2013/10/12(土) 16:29:50.82ID:???ところでPHPも過去の関数廃止やらで完全に後方互換性があるかというとそうではない
最新の環境で古いスクリプト動かそうとしても十中八九そのままだと動かない
まぁそこまで大まかな修正が必要かというとたぶん必要ではないんだろうけど
0354nobodyさん
2013/10/12(土) 16:43:54.79ID:???文字列や配列あたりはPerl、C、Java、Ruby見境なくつまみ食いしてるから
マジカオスだわw
とは言えPythonはちょっと変えすぎたわ
3.0がリリースされてからもう5年が経とうとしてるのに
Djangoが対応したのは今年に入ってからという体たらく
有名どころのプロジェクトだとhgも2.7どまりだが、これはパフォーマンスを優先しているからだっけな?
まぁ良い所があまりないPHPで同じ事をやったら完全に見捨てられるだろうな
0355nobodyさん
2013/10/12(土) 23:03:08.04ID:???0356nobodyさん
2013/10/12(土) 23:50:30.29ID:???0357nobodyさん
2013/10/12(土) 23:54:24.41ID:???0358nobodyさん
2013/10/13(日) 06:24:20.87ID:???0359nobodyさん
2013/10/13(日) 08:01:01.31ID:???perlerたちは次のステージを求めたはずだ
phperの次なるステージはどこー?
やっぱjavascriptですかね
0360nobodyさん
2013/10/13(日) 08:27:50.81ID:???0361nobodyさん
2013/10/13(日) 08:30:19.72ID:???0362nobodyさん
2013/10/13(日) 08:34:14.87ID:???低級言語を目指さないのはなぜなのか?
そんなの資源の進化任せでいいじゃねーかwwwwwwwwww
ってことなのか
0364nobodyさん
2013/10/13(日) 10:45:39.83ID:???rubyはまだ流行ってないがpythonはgoogleなどでも使われている
0365nobodyさん
2013/10/13(日) 10:47:37.53ID:???これは日本では致命的
0366nobodyさん
2013/10/13(日) 13:44:25.97ID:???新しいとか冗談はやめてくれ
Python 1990
Ruby PHP JavaScript 1995
JavaScriptはここ数年で1歩進化したが
他はもう終わりかけ
0367nobodyさん
2013/10/13(日) 18:48:46.51ID:???スクリプト言語ですらないけど、個人的にはScalaが流行って欲しい。
0368nobodyさん
2013/10/13(日) 22:08:36.93ID:fAMMFKma0369nobodyさん
2013/10/13(日) 22:18:57.01ID:???( ゚∀゚)彡 おっ.py!おっ.py!
⊂彡
0370nobodyさん
2013/10/14(月) 02:38:34.41ID:4ChYFJyeIdeOneでPHPのタブを開くと ?> が書かれてないけど必要ないの?
■ このスレッドは過去ログ倉庫に格納されています