【PHP】下らねぇ質問はID出して書き込みやがれ 124
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/11/20(火) 18:02:45.99ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 123
http://kohada.2ch.net/test/read.cgi/php/1348583995/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
0488nobodyさん
2012/12/15(土) 19:18:58.43ID:???ディレクトリに全角が入ってるんじゃね ’○○’とか
0489nobodyさん
2012/12/15(土) 19:34:58.88ID:3wnazU1pちょくちょく更新するページの場合はどうやって対応してますか?
更新するたびにキャッシュを削除するような仕組みがあればいいんですけど
0491nobodyさん
2012/12/15(土) 19:58:30.88ID:3wnazU1pありがとうございます
smartyのキャッシュってブラウザに残ったキャッシュを使ってるんですか?
それともサーバ側に作成したキャッシュを表示してるんですか?
0492487
2012/12/15(土) 20:01:53.92ID:???0494487
2012/12/15(土) 20:41:25.25ID:???0496nobodyさん
2012/12/15(土) 20:53:29.60ID:???0497nobodyさん
2012/12/15(土) 23:44:02.58ID:???だからnoticeが出る。
display_errorsを0にするか、error_reportingでnoticeを非表示にする。
0499nobodyさん
2012/12/16(日) 04:07:56.16ID:Wv0oIgsD{
private $_var = null;
public static function factory()
{
$obj = new aaa();
$obj->_var = 'bbb';
return $obj;
}
public function __construct($str)
{
$this->_var = $str;
}
}
これのfactory()でbbbを代入できるんだけど、こういう書き方でいいの??
それともコンストラクタに渡して代入する方がいい??
0500nobodyさん
2012/12/16(日) 04:19:27.25ID:???そもそもこれで実装が終了するわけでもないだろうから、
その後の展開や見通し次第ってところでしょ。
0501nobodyさん
2012/12/16(日) 12:57:31.39ID:???0502nobodyさん
2012/12/16(日) 13:42:36.56ID:REzOWsIO0503nobodyさん
2012/12/16(日) 14:12:04.04ID:???0505nobodyさん
2012/12/17(月) 16:09:36.68ID:9egvz8Qq【PHPのバージョン】5.2.17
【連携ソフトウェア】WordPress MySQL
【テストページ】ttp://test.anekipedia.com/
【質問内容】
FormタグのGET変数の受け渡しでうまく動作しないので質問させていただきます。
テストページ(ttp://test.anekipedia.com/)にて
ドロップメニューで記事の順番を変更、各listボタンで記事の並び方を変更しています。
GET変数にて複数の値を受け渡しを行なっているのですが、ドロップメニューを変更すると各listボタンで渡していたGET変数が消されてしまいます。
どのようにやればうまくいくのでしょうか?
該当の部分の記述:
<form name="irekae" method="get" id="sort_form5" class="sort_form5">
<input type="submit" value="list1" name="retu">
<input type="submit" value="list2" name="retu">
<input type="submit" value="list3" name="retu">
<select name='narabi' onChange="document.forms['irekae'].submit()" >
<option value="sort1"<?php if(!isset($_REQUEST['narabi']) || $_REQUEST['narabi'] == 'sort1') echo ' selected="selected"';?>>投稿日時が新しい順</option>
<option value="sort2"<?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort2') echo ' selected="selected"';?>>投稿日時が古い順</option>
<option value="sort3"<?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort3') echo ' selected="selected"';?>>五十音順(あ〜わ)</option>
</select>
</form>
アドバイスいただければ幸いです。
0506nobodyさん
2012/12/17(月) 16:30:40.89ID:???javascriptからsubmitするまえにmethod変更すればできるよ
とりあえずすれ違いね。
0507nobodyさん
2012/12/17(月) 16:35:43.40ID:???1.送信前(表示時)のretuの値はどこにも保持されてません。
2."document.forms['irekae'].submit()"して送信されるデータは
narabiの値だけです。
不都合なければhiddenか何かでretuの値も送信すればよいです。
あの・・・だからといってhidden name='retu'とかして動きませんとか
言わないでね。
0508nobodyさん
2012/12/17(月) 17:10:00.36ID:9egvz8Qqご返事ありがとうございます。 >>507 様でのご指摘でも対応できましたので、
今回の修正は、こちらの手段で行なおうと思います。
javascriptでの修正法も後で調べてみたいと思います。
>>507
アドバイスありがとうございます。
記述:
<input type="hidden" name="retu" value=<?php if($_GET['retu'] != '') {
echo ($_GET['retu']);} else {
echo ("list1");} ?> >
を追加することで、望みどおりの動作をするようになりました。
0509nobodyさん
2012/12/17(月) 17:16:33.01ID:9egvz8Qq>>507 様のアドバイスで問題は解決したのですが、
ttp://test.anekipedia.com/?retu=list3&retu=list2&narabi=sort5
のように、GET変数で渡される「retu」部分が2重に記入されているのに気がついたのですが、
0510nobodyさん
2012/12/17(月) 17:17:55.99ID:9egvz8Qq上記の点は問題ないのでしょうか。
0511nobodyさん
2012/12/17(月) 17:18:17.13ID:???0512nobodyさん
2012/12/18(火) 02:45:53.56ID:???PHPのコード出したりちっとも整理出来てないな
0513nobodyさん
2012/12/18(火) 10:04:25.88ID:???0514nobodyさん
2012/12/18(火) 10:17:46.86ID:???0515nobodyさん
2012/12/18(火) 13:32:53.47ID:???0516nobodyさん
2012/12/18(火) 13:38:58.61ID:???0517nobodyさん
2012/12/18(火) 14:52:43.08ID:???0518nobodyさん
2012/12/18(火) 15:22:01.41ID:???「あの・・・だからといってhidden name='retu'とかして動きませんとか
言わないでね。」ってわざわざ書いたのになんでそうするのかな。
例えばボタンクリックから来た場合とリスト選択から来た場合とを判断するとかさ。
0519nobodyさん
2012/12/18(火) 15:22:09.67ID:???0520nobodyさん
2012/12/18(火) 15:48:07.25ID:s5ZiWdpn0521nobodyさん
2012/12/18(火) 15:51:27.09ID:???英語もロクにできない阿呆なのがよくわかりますね
0522nobodyさん
2012/12/18(火) 15:52:10.78ID:???0523nobodyさん
2012/12/18(火) 15:54:48.82ID:???numericっていう意味がある
is_numericでnumericであるか?という意味。
んで肝心のnumericが何かというとナメック星人という意味。
is_numeric('ベジータ') //false
is_numeric('ピッコロ') //true
0525nobodyさん
2012/12/18(火) 21:19:20.98ID:f4m9o410IPv6でアクセスしてきたらログはどのようになるんでしょうか?
IPv4のxxx.xxx.xxx.xxxという形式からだいぶかけ離れた表記になりますが、
ちゃんとPHPはそれを取れるのか(REMOTE_ADDR)
ホスト名にちゃんと変換できるのか(gethostbyaddr)が不思議です。
IPv6環境がないので実験できないので詳しい方教えてください。
0526nobodyさん
2012/12/18(火) 21:35:50.92ID:???0528nobodyさん
2012/12/19(水) 00:32:44.84ID:???ほんとphp酎って人格歪んでるわ
0529nobodyさん
2012/12/19(水) 06:55:05.59ID:???0530nobodyさん
2012/12/19(水) 07:42:14.20ID:XMsmfmT0受信側って受信しましたよってことを知らせるために何か出力しなきゃならないルールとかあるんでしょうか?
0531nobodyさん
2012/12/19(水) 08:49:26.18ID:???他を真似しろ
0532nobodyさん
2012/12/19(水) 08:55:46.91ID:XMsmfmT00533nobodyさん
2012/12/19(水) 10:44:25.18ID:y/s/8Rtw【OS】windowsXP
【ソフト】FFFTP
cgiに文章を一文だけ追加したくて、変更を行い上書きをした所、Internal Server Errorが出てしまいました。
何か失敗したかと思って、バックアップしていたcgiに再度置き換えを行ったのですが、またInternal Server Errorが出てしまいました。
元のファイルに戻してもエラーが起こってしまい困っています。
FFFTPで属性変更[755]にしてもダメでした。HTMLがちょっとわかるぐらいで触ってはいけない物ですね…
どなたかご教授お願い申しあげます。
0534nobodyさん
2012/12/19(水) 10:55:48.45ID:???どうせ改行コードあたりだろ
0535nobodyさん
2012/12/19(水) 10:56:56.18ID:???0536533
2012/12/19(水) 11:02:13.17ID:y/s/8Rtwエラーログの場所がわからないので調べてきます…
windowsで編集していない文書の改行が変わってしまうのでしょうか?
>>535
FFFTPの上部[A]を押してからアップロードしているので、その部分は大丈夫だと思います。
0537nobodyさん
2012/12/19(水) 11:19:41.86ID:???>windowsで編集していない文書の改行が変わってしまうのでしょうか?
バックアップはどこに置いてたんだよ。
情報の後出しして質問済んなよ。
0538nobodyさん
2012/12/19(水) 11:23:59.13ID:???大丈夫かどうか、バイナリモードで落として確かめてみるといいよ。
バイナリモードならFFFTPに変換されないから。
0539533
2012/12/19(水) 11:32:38.88ID:y/s/8Rtw申し訳ありません、バックアップは上書きの直前にwindowsXPのローカルに保存しました。
先ほど見つけたエラーログに以下のように記述がありました
(2)No such file or directory: exec of '/var/www/cgi-bin/cginame.cgi' failed, referer: https://~~/cgi-bin/menu.cgi
cgiの一行目にperlの場所が指定されていましたが、問題無さそうでした。
0540nobodyさん
2012/12/19(水) 11:37:17.94ID:???Windowsの改行コードがCRLFで、サーバが何だか分からんけど755って言ってるから
おそらくUNIXかLinux系だと仮定して、改行コードがLF
1行目の#!/usr/bin/perl が
#!/usr/bin/perlLF ならいいけど
#!/usr/bin/perlCRLF だと、
/usr/bin/perlCRなんてコマンドは無いって怒られる。
ということでやっぱり改行コードだと思うけど。
転送し直してもダメなら
1行目
#!/usr/bin/perl --
とかにしてみ?
0541nobodyさん
2012/12/19(水) 11:38:25.32ID:???0542533
2012/12/19(水) 11:40:48.88ID:y/s/8Rtwありがとうございます。
アスキーモードで上げたファイルをバイナリモードで落としてみました。
どのように確かめればよろしいのでしょうか?
37785byte>up>39180byte>down>39180byte とサイズが変わりました…
0543533
2012/12/19(水) 11:47:40.43ID:y/s/8Rtw1行目 #!/usr/bin/perl -- にしたら直りました!
本当にありがとうございました…
>>541
ファイルかディレクトリがないよ、というニュアンスは分かるのですが
どこを言っているのかわからず質問してしまいました。失礼致しました。
皆様こんな質問に答えてくださって本当にありがとうございました。
0544nobodyさん
2012/12/19(水) 11:50:32.44ID:???0545nobodyさん
2012/12/19(水) 11:54:38.38ID:XMsmfmT0pingの質問した俺は冷たくあしらわれたっていうのによ
0546nobodyさん
2012/12/19(水) 12:03:16.99ID:???0547nobodyさん
2012/12/19(水) 12:09:03.89ID:???0548nobodyさん
2012/12/19(水) 12:18:37.92ID:???XML_RPC.phpがあるのに自作したいくらいの勉強家なんだから、
公式の仕様書から実装するくらいの勢いがあって当たり前なんじゃないかな。
0549nobodyさん
2012/12/19(水) 12:21:38.40ID:XMsmfmT0そんなのあったのかよ!
まあいいやもうすぐできそうだから無理ならそれ調べてみる
ありゃと
0550nobodyさん
2012/12/19(水) 12:25:48.44ID:???0551nobodyさん
2012/12/19(水) 16:00:56.43ID:qAL3Ngf1【ファイル1】
$a="あああ".$b."";
【ファイル2】
require_once 'ファイル2';
$b="いいい";
$c=$a;
echo $c;
ファイル2で
あああいいい
と表示させたいのですが『いいい』は表示されません。
globalとかつけてみたのですがダメでした。
アドバイスよろしくお願いします。
0552nobodyさん
2012/12/19(水) 16:17:04.67ID:???$b="いいい";
require_once 'ファイル2';
$c=$a;
echo $c;
0554nobodyさん
2012/12/19(水) 17:06:59.07ID:???それを受信するサーバ側のphpで$_SERVERのHTTP_HOSTやSERVER_NAMEを取得すると
そのユーザが指定してきた適当な名前になってしまいます。
その受信側のPHPスクリプトが自分がサーバなのかローカルなのかを判定するにはどうしたらいいでしょうか?
0556nobodyさん
2012/12/19(水) 17:22:45.50ID:???0557nobodyさん
2012/12/19(水) 17:29:44.53ID:???0558nobodyさん
2012/12/19(水) 17:30:45.43ID:???httpd下で動作してるかどうか?
0559nobodyさん
2012/12/19(水) 17:35:14.83ID:???SERVER_NAMEはApacheであればその設定通りで
ユーザ側で偽装はできないだろ
0560nobodyさん
2012/12/19(水) 17:38:59.14ID:???$header = array(
"User-Agent: test",
"Host: testhost",
"Content-Type: text/xml",
"Content-Length: ".strlen($data),
);
$context = array(
"http" => array(
"method" => "POST",
"header" => implode("\r\n", $header),
"content" => urlencode($data)
)
);
echo file_get_contents('receive.php', false, stream_context_create($context));
receive.phpには
echo $_SERVER['HTTP_HOST']
とだけ書きます。
この状態で、ブラウザでsend.phpにアクセスすると、ブラウザには「testhost」と表示されてしまいます。
0561nobodyさん
2012/12/19(水) 17:41:06.15ID:???ローカルのテスト環境とレンタルサーバ側の環境ではMySQLのユーザとパスワードが違うので
どちら側で実行されているかを調べる必要があるんです。
>>559
それがSERVER_NAMEにしても「testhost」とひょうじされてしまうんですよ
0562nobodyさん
2012/12/19(水) 17:43:39.87ID:???0563nobodyさん
2012/12/19(水) 17:53:19.28ID:???SERVER_NAMEは、リクエストがない場合のみ、apatch設定の値を返します。
嫌な仕様ですね
0564nobodyさん
2012/12/19(水) 17:58:44.05ID:???マジですか・・・
じゃあ>>562さんの言うようにこういう原始的な方法で判定するしかないのかな・・
めんどくせえ
ありがとうございました
0565nobodyさん
2012/12/19(水) 21:38:49.21ID:???0566nobodyさん
2012/12/19(水) 21:56:19.59ID:???すいません、最近耳が遠くなったようで何言ってるのか分からなかった
0567nobodyさん
2012/12/19(水) 22:27:47.79ID:???0568nobodyさん
2012/12/19(水) 23:15:09.29ID:???0569nobodyさん
2012/12/19(水) 23:20:50.00ID:???0570nobodyさん
2012/12/20(木) 11:17:02.65ID:???本番サーバにSetEnv APP_ENV PRODUCTIONとかやっとけばいいじゃん
$_SERVER['APP_ENV']をみりゃ本番サーバかどうか分かる
0571nobodyさん
2012/12/20(木) 11:21:37.42ID:YTGC1BLf変な文字が入っている場合は除去できるんですが、閉じタグや文法的におかしくてパースがうまくいかないことがあります。
XMLとして正しいかどうかを判別する関数があればご教示いただけないでしょうか。
0572nobodyさん
2012/12/20(木) 11:27:38.57ID:???0574nobodyさん
2012/12/20(木) 11:35:55.07ID:YTGC1BLf読み込むRSSが正しいこと前提なのでRSSがおかしいとエラー出てきます。
>>573
$rss = simplexml_load_string($contents, "SimpleXMLElement", LIBXML_NOCDATA);
で読むと、この時点でブラウザ上にWARNINGが表示されるので、それをどうにかしたいと思っています。
0575nobodyさん
2012/12/20(木) 11:57:48.99ID:???> XML データ内でエラーが見つかるたびに E_WARNING エラーメッセージが発生します。
>ヒント
>libxml_use_internal_errors() ですべての XML エラーを抑制し、 後から libxml_get_errors() で取得することもできます。
て書いてんじゃん
ぱっと見た感じSimpleXML以外にも
XMLパーサのxml_parseやXML Readerのopen→isValidでも出来そうだが
0576nobodyさん
2012/12/20(木) 13:27:02.40ID:???0577nobodyさん
2012/12/20(木) 13:47:37.36ID:B4406POjfunction test($x, $y='bbb', $z='ccc'){
echo $x, $y;
}
test('aaa', $z='zzz');
これだとaaazzzcccと出力されますが、期待通りaaabbbzzzと出力させるようにすることは可能でしょうか?
($yと$zを逆にする以外でお願いします。pythonで出来たのでphpでもする方法がないかと思って質問しました。)
class MyClass {
public function test(){
echo 'test';
}
}
function test(){
global $myclass;
$myclass->test();
}
$myclass = new MyClass();
test();
これは期待通り動きますが、$myclassを関数内で扱う時毎回このようにglobal宣言するのは
少し面倒な上、不格好になってしまいます。
これを防ぐにはどのように書けばいいのでしょうか?
どなたかアドバイスよろしくお願いします。
0578nobodyさん
2012/12/20(木) 14:20:35.90ID:???上:$zをechoしてないように見えるけどなんでcccが出力されんの?
下:インスタンスを引数で渡すなり関数内でnewすればいいだけでは?
0579nobodyさん
2012/12/20(木) 14:21:33.81ID:???現状のPHPには名前付き引数はありません
function test($a) {
$default = array('y' => 'bbb', 'z' => 'ccc');
$a = array_merge($default, $a);
echo $a['x'],$a['y'];
}
test(array('x' => 'aaa', 'z' => 'zzz'));
こうするとかかね?5.4のクロージャを使って名前付き引数を再現する方法があるとかないとか
例で示してるのがecho 'test';してるだけなので具体性に欠けてアドバイスになるか分からないけど、
class MyClass {
public static function test(){
echo 'test';
}
}
function test(){
MyClass::test();
}
test();
それか
class MyClass {
public function test(){
echo 'test';
}
}
function test($myclass){
$myclass->test();
}
test(new MyClass());
こうとか?
0580nobodyさん
2012/12/20(木) 14:23:03.79ID:???JaneStyleのプレビューだと効くのに!恥かいたわ・・・
0581nobodyさん
2012/12/20(木) 14:31:57.69ID:???0582nobodyさん
2012/12/20(木) 14:35:11.74ID:???0583nobodyさん
2012/12/20(木) 14:39:35.16ID:???0585nobodyさん
2012/12/20(木) 14:49:15.30ID:???| 1
| 2
| 10
0587nobodyさん
2012/12/20(木) 14:52:22.91ID:???調べてみたらそのようですね
セキュリティに問題があるから変更したっぽいですが、いったいどんな危険が潜んでたのか・・・
■ このスレッドは過去ログ倉庫に格納されています