トップページ⇒php
1001コメント287KB

【PHP】下らねぇ質問はここに書き込みやがれ 64

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/02/09(土) 14:51:11ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 61
http://pc11.2ch.net/test/read.cgi/php/1201425479/

◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
03693642008/02/16(土) 16:37:33ID:Jf9OUGaE
PCからです、すみません。
>>365
ローカルにあるPHPマニュアルにはそんなオプション無かった・・・
ありがとうございます。

オプション付けたそのままでは機能しませんでしたが、Emeditorで改行をCR+LFからLFに
変えたところ、うまく動作しました。

>>368
重ねてありがとうございます。
0370nobodyさん2008/02/16(土) 17:00:04ID:???
>コンテンツを UTF-8 エンコーディングで返します。 別のエンコーディングを指定するには、独自のコンテキストを作成します。 
>このフラグは FILE_BINARY と同時に使用することはできません。 このフラグは PHP 6 以降でのみ使用可能です。
いやいいんだけど、なら早く出してよ!!
0371nobodyさん2008/02/16(土) 17:08:47ID:???
PHP6と言えば magic_quotes_gpc がなくなるんでしょ。
確かにいらないんだけど、PHP5ではデフォルトで onの機能がなくなるというのは、かなり衝撃的。

ほかにもこう言うのあるの?
0372nobodyさん2008/02/16(土) 17:14:53ID:???
>>371
>>8ここに書いている
0373nobodyさん2008/02/16(土) 17:37:04ID:???
php5では既にデフォルトoffになってただろ?
0374nobodyさん2008/02/16(土) 17:42:35ID:???
マニュアル見ると on みたいだけど、なんか読み間違ってる?

http://jp2.php.net/manual/ja/ref.info.php
magic_quotes_gpc "1" PHP_INI_PERDIR PHP <= 4.2.3 では PHP_INI_ALL。PHP 6.0.0 で削除されました

PHP5.2の php.ini-distも

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On

ってなってるし。
0375nobodyさん2008/02/16(土) 17:45:02ID:???
すまん勘違いした。register_globalと。
0376nobodyさん2008/02/16(土) 17:51:10ID:???
なんか>>8ばっかりを見るとID厨必死だなーと思ってしまう
0377nobodyさん2008/02/16(土) 19:38:40ID:???
varで変数定義するときに var $a = 10*10 などのように演算した値を代入できないのですがどうすればよいのでしょうか
0378nobodyさん2008/02/16(土) 19:49:35ID:???
>>377
コンストラクタで入れれば?
class hoge {
  var $a;
  function __construct() {
    $this->hoge();
  }

  function hoge() {
    $this->a = 10*10;
  }
}
0379nobodyさん2008/02/16(土) 20:47:30ID:???
>>377
仕様なり
0380nobodyさん2008/02/16(土) 21:08:53ID:???
なんかおかしな仕様ですね?
クラス外で普通に変数定義するときは演算もできるのに
0381nobodyさん2008/02/16(土) 21:11:33ID:???
全然おかしくないナリ
0382nobodyさん2008/02/16(土) 21:17:05ID:???
>>378
何このまわりくどい書き方
0383nobodyさん2008/02/16(土) 21:25:10ID:???
>>378
コンストラクタが2重定義されてるぞ
0384nobodyさん2008/02/16(土) 21:28:30ID:???
>>383
PHP5では__constructが定義されてる場合、クラスと同名のはコンストラクタとは扱われない。
PHP4ではクラスと同名ののみコンストラクタとしてあつかわれる。
0385nobodyさん2008/02/16(土) 21:31:29ID:???
>>378
それならもう
var $a;
$a = 10*10;
でいいじゃまいか
0386nobodyさん2008/02/16(土) 21:37:41ID:???
>>380
http://jp.php.net/manual/ja/migration4.initializers.php
0387nobodyさん2008/02/16(土) 21:41:08ID:???
>>395
出直してこい
0388nobodyさん2008/02/16(土) 21:43:57ID:???
スイマセン。質問です。

PC2Mというスクリプトにあるr.phpにリンクする先のサイズを表示したいのですが、ネット上にあるWebpageに限らずなんでもファイルのサイズをゲットする方法が分かりません。
教えて下さいお願いします。
0389nobodyさん2008/02/16(土) 21:49:44ID:???
>>388
つ「get_headers」
03903882008/02/16(土) 22:34:32ID:???
>>389
$ary = get_headers($_url,1);
$size = $ary[Content-Length];
こんなかんじですか?
ありがとうございます。
0391nobodyさん2008/02/16(土) 22:59:31ID:???
.htaccessに
php_value memory_limit 5M
php_value post_max_size 5M
php_value upload_max_filesize 5M
と書いてphpプログラムがあるフォルダにあげてプログラムを実行したら
サーバーエラー500になるのですが
この鯖ではこの設定はできないってことでしょうか?
0392nobodyさん2008/02/16(土) 23:01:09ID:???
$size = $ary[Content-Length];
↓
$size = $ary["Content-Length"];
だった。orz
0393nobodyさん2008/02/16(土) 23:11:03ID:???
>>391
まずはエラーログ見るのが定石では?
0394nobodyさん2008/02/16(土) 23:17:22ID:???
ていうかそれはPHPの質問なのか?
0395nobodyさん2008/02/16(土) 23:19:35ID:???
エラーログってどこで見れるんですか?
無料のレンタルサーバーなんですが
0396nobodyさん2008/02/16(土) 23:23:55ID:???
>>395
サーバー屋に聞いてください
0397nobodyさん2008/02/16(土) 23:26:12ID:???
無料鯖で勝手に1ファイルあたりのアップロード上限をかえることができたらある意味問題だわな
0398nobodyさん2008/02/16(土) 23:59:31ID:???
PEAR::Auth使ってるんですが、Auth::start()と、ログインフォーム表示関数を分離させることってできますか?

$authobj = new("DB", $params, "funcLogin");
とした場合、
$authobj -> start();
でセッション管理&未認証ならfuncLogin()に適切な引数が与えられてログインフォームが表示されますが、
$authobj->start();
をhtmlの出力前に入れないとログイン時に当然ながら、ヘッダ弄れなかったよーってWarningが出るし、
出力後に書いたら書いたで、フォームの表示が<html>の前になり構造としておかしくなるので困ってます。
このため、start()でセッション管理のみ行い、メタタグなどの出力後に好きな場所でフォームを表示したいなーって思ってます。
0399nobodyさん2008/02/17(日) 00:05:46ID:???
>>387
0400nobodyさん2008/02/17(日) 00:08:46ID:???
>>398
> 出力後に書いたら書いたで、フォームの表示が<html>の前になり

ごめ、意味わからん・・・
どんなソース書いてるのよ?
04013982008/02/17(日) 00:14:57ID:???
>>400
あぅ、間違えた。
×出力後に書いたら書いたで
○出力前に書いたら書いたで

でした。。。(´・ω・)
0402nobodyさん2008/02/17(日) 00:19:22ID:???
それでも意味わからんw

「フォームの表示が<html>の前にな」るアナタの書き方が悪いだけじゃん。
PEAR::Authもstart()も関係ない。
0403nobodyさん2008/02/17(日) 00:46:00ID:???
>>398
ソース晒した方が早いよ
04043982008/02/17(日) 00:53:47ID:???
>>402
うぇwwまじすか。

<?php
print "<html> ・・・(略)・・・<body>";
$authobj->start();
  ・
  ・
  ・
?>
・・・
</html>

ってすれば表示自体は問題ないんですが、>>398に書いたようなheader already sentのWarningが出ちゃいます。

スマートな書き方があれば教えてください。。。
0405nobodyさん2008/02/17(日) 01:00:42ID:???
俺>402だけどPEAR::Authマニュアルのサンプル見て予想がついてきた。

function funcLogin(){
  echo '<form>〜</form>';
}
$authobj->start();
echo '<html>〜</html>';

て流れになって悩んでるのか?

function funcLogin(){
  $flag_login = true;
}
$authobj->start();
echo '<html>〜';
if($flag_login) echo '<form>〜</form>';
echo '〜<html>';

で解決だと思うんだが?
0406nobodyさん2008/02/17(日) 01:07:15ID:???
上のソースはglobal使っていたりで適当だけど、
要は なにもfuncLogin内でHTML出力する必要はない ってこと
04073982008/02/17(日) 01:16:07ID:???
>>403
今のところ(Warningが出るほう)こんなかんじです

$authobj = new Auth("DB", $params ,"funcLogin");print "<html>・・・<body>";

$authobj->start();

if($authobj->getAuth){
  $user = $authobj->getAuth();
  print "ようこそ{$user}さん"
}

function funcLogin($username, $status) {
  if ($status == AUTH_WRONG_LOGIN)
    print "パスワード違うよー<br />";
  print "<form ・・・ ユーザー名とパスワードフォーム・・・</form>";
}

こんな感じのサンプルでよくある感じのです。
04083982008/02/17(日) 01:22:04ID:???
>>405
たびたび入れ違いになって申し訳ないです(´・ω・)

うぉ、まさにそれです!!
確かに関数内でフォーム出力する必要は無かったですね・・・
サンプルで凝り固まってました。この数時間は何だったんだぁ・・・!

本当にありがとうございます。
0409nobodyさん2008/02/17(日) 01:32:21ID:???
根本解決じゃないけどheader already sentを避けるだけならob_startという手もある
04103982008/02/17(日) 01:47:40ID:???
>>409
なるほど。出力バッファってのもあるんですね。これも使えそうです。
参考になりました。ありがとうございます。
0411nobodyさん2008/02/17(日) 04:11:57ID:yKIXzCES
php -a がすぐ死んでしまうんだがどうにかならないか。
$ php -v
PHP 5.2.5 (cli) (built: Feb 16 2008 02:53:14)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
$ php -a
Interactive shell

php > foo();
PHP Fatal error: Call to undefined function foo() in php shell code on line 1
$
0412nobodyさん2008/02/17(日) 04:19:54ID:???
>>411
エラーがわからないおまえの頭どうにかならないか
0413nobodyさん2008/02/17(日) 04:21:14ID:yKIXzCES
>>412
エラーはわかるよ。
それですぐ終了するのが嫌なの。
0414nobodyさん2008/02/17(日) 04:25:21ID:???
そりゃ終了するだろ
メッセージの意味わかってないんじゃないの
0415nobodyさん2008/02/17(日) 04:27:58ID:yKIXzCES
いや普通対話環境では終了しないだろ…
0416nobodyさん2008/02/17(日) 04:28:37ID:???
>>413
嫌なのって…キモッ
0417nobodyさん2008/02/17(日) 04:40:00ID:???
何その先入観w。
0418nobodyさん2008/02/17(日) 06:57:38ID:???
普通じゃないというよりは、現状取ってつけただけ感の溢れる対話環境だな
0419nobodyさん2008/02/17(日) 07:40:38ID:???
>>415
readlineでconfigureしているのに普通〜とか言ってるんだろ…

アフォかと
0420nobodyさん2008/02/17(日) 11:17:26ID:yKIXzCES
>>419
ん?どういう意味?
0421nobodyさん2008/02/17(日) 13:01:54ID:???
保守用の書き込みスクリプトを作ろうと思います。
プログラミングは初心者です。
普段はマカーなのですが開発はwinでやります。
無料のプログラムソフトをご存知でしたら伺いたいのですが、いかがでしょうか
0422nobodyさん2008/02/17(日) 13:11:33ID:???
無料のプログラムソフトってのが統合開発環境とかのことをさすのであればPHPエディタあたりを使うといい。
個人的にはMacでも使えるしEclipseをおすすめしたいがあれは全くの初心者には何かと難しいと思う。
0423nobodyさん2008/02/17(日) 13:18:14ID:???
>>421
> 保守用の書き込みスクリプトを作ろうと思います。

それは止めてください。
でもプログラミングは頑張って下さい。
0424nobodyさん2008/02/17(日) 13:19:38ID:???
書き込みスクリプトってPHPとかPerlとかで書くより
winやmacの出来合いのプログラム組み合わせて操作のマクロ作るほうがよっぽど簡単だよ
0425nobodyさん2008/02/17(日) 13:21:00ID:???
>>422はやっw
ありがとうございます。全くの初心者なので聞いたことのあるPHPスクリプトなどあさってみようと思います。
>>423 自重します><
週に一度圧縮のある日に使いたくて、、、
0426nobodyさん2008/02/17(日) 13:53:17ID:???
>>425
何をしたいかを書いたほうがもっと有益な回答が得られるぞ
0427nobodyさん2008/02/17(日) 14:03:08ID:???
>>462 2ch保守用のスクリプトです
当初は定時に一行書き込むことを想定していました。
0428nobodyさん2008/02/17(日) 14:35:35ID:???
PHPじゃ無理だろ
Proxy判定されて書き込めないんじゃね?
0429nobodyさん2008/02/17(日) 14:41:41ID:???
>>428
なんで、そこでproxyの話が出て来るんだよw
phpじゃ無理っていうのも完全に的外れだし、
知ったかはどっかいけよ。
0430nobodyさん2008/02/17(日) 14:44:36ID:y+G7p60c
gd に付いて質問。ある特定の文字だけが崩れるんだが、対策解る人いますか?

<?php
header("Content-type: image/png");
$im = imagecreatetruecolor(200, 15);
$dummy = imagecolorallocate($im, 0, 0, 0);
$bg = imagecolorallocate($im, 0, 0, 0);
$c = imagecolorallocate($im, 0, 200, 200);
imagefilledrectangle($im, 0, 0, 199, 14, $bg);
$text = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$font = './slkscr.ttf';
imagefttext($im, 6, 0, 1, 10, ($c * -1), $font, $text);
imagepng($im);
imagedestroy($im);
?>

↓"M" と "N" だけが何故か崩れる…
ttp://sylphys.ddo.jp/upld2nd/pc3/src/1203226898796.png

↓使ってるフォントはコレ
ttp://www.kottke.org/plus/type/silkscreen/
0431nobodyさん2008/02/17(日) 14:52:51ID:y+G7p60c
バージョン書くの忘れた…

PHP 5.2.5
bundled (2.0.34 compatible)
です
0432nobodyさん2008/02/17(日) 15:01:45ID:???
>>429
お前はコンソールからやるつもりなのか?
0433nobodyさん2008/02/17(日) 15:04:05ID:???
>>432
お前何もわかってないだろw
0434nobodyさん2008/02/17(日) 15:12:04ID:???
PHPで書いてプロクシ規制食らうんならブラウザでもそもそも書き込めない。
問題点が違う。
自動書き込みのスパム連投なら規制食らうだろうがそれもまた別問題だし。
0435nobodyさん2008/02/17(日) 17:02:57ID:???
>>434
プロキシ判定がどうやって行われてるのかわかってないだろ
0436nobodyさん2008/02/17(日) 17:10:22ID:???
またレベル低いのが降臨してるな
0437nobodyさん2008/02/17(日) 17:31:10ID:???
>>435
わかってるから言ってる。
PHPに限らんがプログラムで投稿処理するのはブラウザがやってることを自動化してるだけだ。
お前さんこそなんでできないと言い切れるのか説明してみ。
0438nobodyさん2008/02/17(日) 17:55:08ID:???
http://zapanet.info/blog/item/1217 に

> PHP使ってるヤツらって
> htmlspecialchars($_GET['text']);
> こんなコード書いてる!
> m9(^Д^)プギャー

とありますが、上のコードの何が問題なんでしょうか?
教えて下さい。
0439nobodyさん2008/02/17(日) 18:04:14ID:???
>>438
過去スレ嫁
0440nobodyさん2008/02/17(日) 18:04:20ID:???
438の頭かな。
0441nobodyさん2008/02/17(日) 18:05:52ID:???
頭より腐った性根が問題。
0442nobodyさん2008/02/17(日) 18:48:47ID:???
コードよりもお前の性格がひね曲がっていることが問題だと思う
0443nobodyさん2008/02/17(日) 18:52:02ID:???
そのブログの持ち主に聞いてみたら?
完璧な答えが返ってくるだろうよ
0444nobodyさん2008/02/17(日) 18:53:40ID:???
質問者に難癖つける前に荒らしでしか発散できない自分をなんとかしろ。
0445nobodyさん2008/02/17(日) 19:10:39ID:???
>435
プロキシ判定がどうやって行われているか知っている?

知っているならいってみて。
0446nobodyさん2008/02/17(日) 19:18:00ID:???
BBQ
0447nobodyさん2008/02/17(日) 19:19:13ID:???
オウム返しは自分の手札がない裏付けになるぞ。
いい加減あきらめろ。
0448nobodyさん2008/02/17(日) 19:25:01ID:???
phpから書き込んでみればできるかどうかわかるじゃん。
0449nobodyさん2008/02/17(日) 19:27:25ID:???
荒らしている質問主がよくいうよw
0450nobodyさん2008/02/17(日) 19:30:04ID:???
PHP でつくった 2ch viewer
http://akid.s17.xrea.com/

これみてどう反論するか見ものだw
04514462008/02/17(日) 19:34:54ID:???
あ、>>445は荒らしへのレスか。ごめん勘違い。
言動からして荒らしはそもそもPHP理解してないと思う。
0452nobodyさん2008/02/17(日) 22:48:53ID:???
ポート精査(80 3128 8080がオープンか)
Proxy特有の環境変数の有無
リモートホストが逆引の可否
0453nobodyさん2008/02/17(日) 22:55:53ID:bioqKdBh
PHPからサーバのユーザのパスワードを変更したいのだが、どういう手法が考えられますか?
systemやexecで直接passwdコマンドを叩くわけにもいかない、というかいけないし。。。やはり、DBなんかでワンクッション置いた複雑な仕組みになりますか?
0454nobodyさん2008/02/17(日) 22:57:48ID:???
それはPHPでやることじゃない
0455nobodyさん2008/02/17(日) 22:59:13ID:???
>>452
>ポート精査(80 3128 8080がオープンか)
ちょっと違う。決め打ちでポートをチェックするんじゃなくて、
アクセスしてきたリモートのポート番号でオープンかどうかをチェックするべき
0456nobodyさん2008/02/17(日) 23:12:01ID:???
普通のISPならほとんど逆引きできるし
04574532008/02/17(日) 23:13:30ID:bioqKdBh
無知な質問になると思いますが、、「遠くにあるサーバのユーザパスワードの変更」は暗号化通信を利用しても行うべきではないでしょうか。
またそうならば、サービスの中には、ネット上でパスワードの登録や変更ができるものがありますが、そういったサービスの仕組みってどうなっているのか少しでもよいので是非教えていただきたいです。
0458nobodyさん2008/02/17(日) 23:19:42ID:???
暗号化通信ってSSLのことを言ってる?
04594532008/02/17(日) 23:23:00ID:bioqKdBh
はい。
0460nobodyさん2008/02/18(月) 01:18:02ID:???
SSHか何かでやればいいだろ。。
Webサービスの1ユーザーのパスワード変更と、サーバのパスワード変更じゃ
危険性の度合いが桁違いってことは分かるだろ?
0461nobodyさん2008/02/18(月) 01:28:14ID:???
>>460
SSHでやれば安全で、httpdでやれば危険っていうのは安易すぎるだろ?
セキュリティーとプロトコルの問題を混同しないように。
0462nobodyさん2008/02/18(月) 01:35:41ID:???
SSHでやれば安全とは言わないが、http(s)でやるよかより安全かつ
確実にサーバの遠隔操作が可能だと思うんだが。
既存の確立した技術を使わずに、敢えてhttp(s)を選ぶならそれなりの
理由が必要だが、その理由は今のところ提示されていない。
だからSSHを勧めたわけでプロトコルに論点を移した覚えはないんだが、
君はhttp(s)でやったほうがいいと思うのかい?
0463nobodyさん2008/02/18(月) 01:38:12ID:???
461はphpでssh使ってやると思ってるんじゃないの?

0464nobodyさん2008/02/18(月) 01:52:41ID:???
SSHとhttpsによる安全性の差はともかく、そもそも質問者が言うパスワードがはアプリレベルのものか
OSレベルの物かワカラン。
0465nobodyさん2008/02/18(月) 02:13:24ID:???
>>462
俺がhttpsでやった方がいいと思うかじゃなくて、
元の質問者がweb上で何とかしてやりたいと言っているときに、
SSHでやればいいって全然答えになっていないだろ。
それでやれればそんな質問はしないわけだろうし。

俺もその手の仕様は客から言われたことがあるが、
客にSSH使ってやってくれとはいえないから、
"仕方なく"web上で簡単にユーザーの管理ができるようにしてやった。
web上でも安全に実装する方法はいくらでもある。
0466nobodyさん2008/02/18(月) 02:26:34ID:???
>>465
単に知らずに言ってるだけかもしれないから、客からの依頼だろうと
SSHをまず勧めるけどね。それでどうしてもWebでってのなら、君と
同じく「仕方なく」そういう機能作るだろうけど。

SSHのように仕組みが出来上がってるものと同程度のセキュリティを
Webサービスで実現するには時間やコストがかかるし、単に技量の
違いかもしれないけど、「web上でも安全に実装する方法はいくらでもある」
なんてことは言えないもんでね。
04674532008/02/18(月) 02:33:20ID:otM/IOKB
曖昧な質問をしてしまい、申し訳ないです。
Webからlinuxユーザをサーバに追加したいのですが、その過程でのユーザのパスワードを設定について質問したのです。
今のところPHPでSSHを使うとなると右のような関数を想定しています。ttp://jp.php.net/manual/ja/ref.ssh2.php

ただ、これとは別の問題になるのですが、例えばssh2_execのような関数を使ってpasswdコマンドを打つと、対話形式の入力になるのでうまくいかないという問題もあります。
0468nobodyさん2008/02/18(月) 02:34:09ID:???
では、仕方なくそういう機能を作るという前提で
話を進めましょうか?
■ このスレッドは過去ログ倉庫に格納されています