トップページ⇒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カテゴリ)の各スレで
0313nobodyさん2008/02/15(金) 20:51:58ID:???
基本シングルで、
ダブルはSQLでたまに使うくらい(最近は直接書くことすくないけど)

コーディング規約、クセなどなどで自由やけど
>>309みたいなやつにはとりあえずシングルメインで使えって言いたい
0314nobodyさん2008/02/15(金) 20:57:14ID:???
問題がなければダブルだけどなぜか正規表現のときだけシングル
0315nobodyさん2008/02/15(金) 21:05:57ID:???
ZendFrameworkはこんな感じなんで初心者は参考に
http://framework.zend.com/manual/ja/coding-standard.coding-style.html#coding-standard.coding-style.strings
0316nobodyさん2008/02/15(金) 21:47:01ID:???
>>307
質問じゃないなら雑談スレ池
0317nobodyさん2008/02/15(金) 23:08:11ID:???
Web上で投稿、 それを任意のページにHTMLを生成するサンプルはございませんか?
0318nobodyさん2008/02/15(金) 23:09:38ID:???
>>317
宿題は自分でやりなさい
0319nobodyさん2008/02/15(金) 23:16:19ID:???
アップローダなどでファイルをダウンロードさせるときに
パスワード付きのファイルを直リンのURLでダウンロードできないようにしたいのですがどうすればいいのでしょうか
ネットで無料サンプル探していろいろためしてみたのですが
DLパスワード機能付きのやつでも直接ファイルのURLをいれれば普通にダウンロードできてしまうもんで・・・
0320nobodyさん2008/02/15(金) 23:19:38ID:???
ドキュメントルート外に置くとかDBに入れて読み出すとかあるいはバレないことを祈りつつファイル名を暗号化でもすればおk
0321nobodyさん2008/02/15(金) 23:20:04ID:???
.htaccess じゃダメなの?
03223172008/02/15(金) 23:20:46ID:???
任意のページってのが難しいです・・・
03233212008/02/15(金) 23:21:07ID:???
ごめん、バカだ、俺。
そんなことしたら、ダウンロードができなくなる。
スマソ。
0324nobodyさん2008/02/15(金) 23:21:59ID:???
PHPが読み出してやればDLできるんじゃないの?
まあそこまでいくと本末転倒だが
0325nobodyさん2008/02/15(金) 23:22:36ID:???
> ネットで無料サンプル探していろいろためしてみたのですが
> DLパスワード機能付きのやつでも直接ファイルのURLをいれれば普通にダウンロードできてしまうもんで・・・

そんなの作って公開しているやつのレベルは所詮その程度だなw

0326nobodyさん2008/02/15(金) 23:23:36ID:???
basic認証でもかけとくとか
0327nobodyさん2008/02/15(金) 23:25:14ID:???
>>317
てきとーにつくってやった
条件満たしてるかはしらんw

<?php
if (isset($_POST['hoge']) && $_POST['hoge'] != '') {
 $filename = uniqid();
 $data = '<html><head><title>'.$filename.'のページ</title></head><body>'.
            htmlspecialchars($_POST['hoge']).'</body></html>';
 $ret = file_put_contents($filename.'.html',$data);
if ($ret == false) {
  echo '作成失敗';
exit;
}
echo $filename.'.htmlというページを作成';
exit;
}
?>
<form method="post">
<input type="text" name="hoge">
</form>
0328nobodyさん2008/02/15(金) 23:25:26ID:???
あ、うpろだの保存フォルダにbasic認証は無いかw
phpからストリームで返してやるとかどう?
0329nobodyさん2008/02/15(金) 23:43:21ID:BJFOhqEp
ファイルを読み込んで、その中のタブをすべて削除しようと思い、
以下のようにしたのですが、削除されません。どこがおかしいのでしょうか?

$file = file_get_contents("test.html");
$file = str_replace("\t","","$file");
0330nobodyさん2008/02/15(金) 23:45:23ID:???
>>329
コード全てと元ファイルも見せて
0331nobodyさん2008/02/16(土) 00:39:28ID:???
PHPはじめた5年前くらい
何かと"$file"んな感じに意味なくクヲートしていたことがよくあった。

間違いじゃないけど、見ると恥ずかしい
0332nobodyさん2008/02/16(土) 01:18:58ID:???
まあクオート自体は問題箇所ではないし好みの問題もあろう。
>>329 もうちょい具体的に。特に読み込んだデータと変換後のデータの内容。
03333172008/02/16(土) 02:29:56ID:???
>>327 お返事が遅くなり申し訳ないです。
すばらしい物ができました。感謝です
0334nobodyさん2008/02/16(土) 02:36:00ID:???
>>331-332
クォートで括ったらそれは新しい文字列を生成するってことだ。
変数の内容を展開するオーバーヘッドも発生するし、
何よりそれは文字列リテラルになってしまう為に
参照渡しが必要な場合にはエラーになる。
間違いだし、好みの問題ではない。
0335nobodyさん2008/02/16(土) 02:42:21ID:???
>>334
おまえは目が見えないのか?
0336nobodyさん2008/02/16(土) 02:52:38ID:???
用語を多用すればいいってもんじゃないぞ。
0337nobodyさん2008/02/16(土) 03:51:29ID:???
4→5の移行を商売として行ってる会社があるみたいですが
それが成り立つほど、ゴロっと変わるものですか??

PHP4も、途中で大きく仕様が変わったみたいですが
今PHPで作っても、2〜3年で大規模な修正(=費用)が必要になる??
0338失礼しました。2008/02/16(土) 03:52:17ID:mhfR9vmN
4→5の移行を商売として行ってる会社があるみたいですが
それが成り立つほど、ゴロっと変わるものですか??

PHP4も、途中で大きく仕様が変わったみたいですが
今PHPで作っても、2〜3年で大規模な修正(=費用)が必要になる??

0339nobodyさん2008/02/16(土) 04:03:35ID:???
いやならないよ
0340nobodyさん2008/02/16(土) 04:09:50ID:???
こんばんわ^0^ PHPの仕組みは大体わかったんですが。
PHPってHTMLに埋め込めますよね?
埋め込んだ場合 通常 index.html なのを index.php にする必要がありますね。
それで index.phpにした奴のソースを覗いてみると、 PHPのスクリプトが消えています。
仕様でしょうか?
0341nobodyさん2008/02/16(土) 04:10:31ID:???
>>340
仕様ですよ
03423402008/02/16(土) 04:23:28ID:???
>>341 素早いレスありがとうございす。
またお世話になります
0343nobodyさん2008/02/16(土) 04:24:28ID:???
>>339
ありがとうございます。
PHP4がサポート終了&既にPHP6が開発中(さらに仕様が変わる)
というのを見まして不安になった次第です。

そういったものを見越す力のある開発会社を見極める必要があるのでしょうが
なかなか難しいです。

機能追加を除けば、最低、2〜3年程度は手を入れずにいたいのですが。。
0344nobodyさん2008/02/16(土) 04:36:02ID:???
サポート終了つったってまだphp3で稼働してるとこすらあるし、
あんまり気にしないでいいと思うけどな。
0345nobodyさん2008/02/16(土) 04:38:06ID:???
てか公式のサポートに何を期待してんだかw
0346nobodyさん2008/02/16(土) 04:39:49ID:???
予算が絡むことを2chの意見で決めるあたり
0347nobodyさん2008/02/16(土) 04:47:06ID:???
asp.netにでもしとけば?w
03483402008/02/16(土) 05:29:23ID:???
では、他人のソースを見るにはどうすればよいのでしょうか?
0349nobodyさん2008/02/16(土) 05:39:11ID:???
その人にメールでもしてお願いする
0350nobodyさん2008/02/16(土) 09:14:28ID:???
is_null() と empty() はどうやって使い分けてます?
0351nobodyさん2008/02/16(土) 09:57:27ID:???
nullと""の違いを勉強しやがれ
0352nobodyさん2008/02/16(土) 10:35:14ID:???
まあこの辺かな
http://php.webmeister-jp.com/archives/2005/08/null.php
0353nobodyさん2008/02/16(土) 10:59:48ID:???
ガッ
0354nobodyさん2008/02/16(土) 11:03:18ID:???
PHPをマスターしたら彼女が出来ますか?
0355nobodyさん2008/02/16(土) 11:05:03ID:???
>>8
0356nobodyさん2008/02/16(土) 11:44:19ID:???
PHPで独自の彼女フレームワークを作ればいい
0357nobodyさん2008/02/16(土) 11:48:39ID:???
class kitaku {
  function gohan() {}
  function ofuro() {}
  function watashi() {}
}
0358nobodyさん2008/02/16(土) 12:03:10ID:???
return $ninshin;
0359nobodyさん2008/02/16(土) 12:17:52ID:???
ワロタ
0360nobodyさん2008/02/16(土) 12:57:12ID:???
ずっとループさせといたら・・
0361nobodyさん2008/02/16(土) 13:05:52ID:???
だんご大家族になるな
0362nobodyさん2008/02/16(土) 13:13:26ID:???
修正した
function watashi($condom=false) {}
0363nobodyさん2008/02/16(土) 13:25:20ID:???
http://img.2chan.net/b/src/1203133501303.jpg
0364nobodyさん2008/02/16(土) 15:25:08ID:K3pH787p
例えばconfig.phpとして、$item = file("item.txt");
$num = file("num.txt");としています。

別のファイルで
require("config.php");
$num1 = 〜$numの中に入っているデータの一つ〜
$key = arraysearch($num1,$num);
$title = $item[$key];

こう書いたのですが、$keyがうまく取得できてなくて、
$titleがうまく対応できてません。
どうすれば取得できるのでしょうか?
もしくはもっと良いコードがありますか?


-item.txt-
夏目漱石
樋口一葉
・・・

-num.txt-
natsume
higuchi
・・・
0365nobodyさん2008/02/16(土) 15:39:40ID:???
改行文字がついてんじゃないの。

http://jp2.php.net/manual/ja/function.file.php
FILE_IGNORE_NEW_LINES でどう?
0366nobodyさん2008/02/16(土) 16:11:28ID:???
>>343
2〜3年ならほぼ大丈夫。
5年使うのは厳しいかもしれないけど、
5年も同じの使うの?っていう話。
0367nobodyさん2008/02/16(土) 16:23:15ID:a5LZnn6H
2000年問題…
0368nobodyさん2008/02/16(土) 16:25:53ID:???
>>364
arraysearchがわるいんじゃね?
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
エラーはわかるよ。
それですぐ終了するのが嫌なの。
■ このスレッドは過去ログ倉庫に格納されています