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

くだすれPHP(超初心者用)5

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2008/11/22(土) 06:36:02ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。

PHP Home Page
http://www.php.net/
http://jp.php.net/



くだすれPHP(超初心者用)4
http://pc11.2ch.net/test/read.cgi/php/1213356756/

適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
0867nobodyさん2009/02/23(月) 19:57:12ID:???
それは大げさ
0868nobodyさん2009/02/23(月) 21:15:50ID:???
>>867
いや、そんなもん
わざわざ面倒な方を選んで何が楽しいんだろうね
0869nobodyさん2009/02/23(月) 21:18:58ID:???
じゃあなんでwampじゃなくてxamppなんだ
0870nobodyさん2009/02/23(月) 21:38:57ID:???
いいんじゃない?自分が使ってるWeb鯖やアプリ鯖の設定について何も知らんでプログラミングしたいならそれで。

八割がた後になってハマるんだがw

必要になったらそのとき勉強する?はいはい。
0871nobodyさん2009/02/23(月) 21:41:24ID:???
まったくだ。
どんだけものぐさなんだよ。
0872nobodyさん2009/02/23(月) 21:52:11ID:???
>>870
馬鹿か?
駄目なやつは何を使っても駄目
ようは使う人の問題だろ

それにXAMPPは何も設定できないと思ってんのか?これだから低脳は
0873nobodyさん2009/02/23(月) 21:53:30ID:???
うんお前を見てよく分かるよ
0874nobodyさん2009/02/24(火) 09:21:59ID:???
http://anond.hatelabo.jp/20090222100251
ちょっと違うけどxamppにも当てはまる話
0875nobodyさん2009/02/25(水) 10:09:48ID:???
>>866
おまえはそれらを買う時に、常に全部一緒に買えよな。
0876nobodyさん2009/02/25(水) 22:54:22ID:???
既存のPCいじるときには一緒に買ったりはしないが、新しいPCを作る時は一緒に買うわな。
勿論、「ディスプレイとマウスは既存のものを使いまわすから要らないや」という事はあるが、全部必要な事のほうが世間的には圧倒的に多い。
マウスだけ使いまわすなら、ワンセット買って来てマウスだけ取り替えた方が楽だしな。

つうか、むしろBTOに近い気がする。
組み立てが面倒なので、多少コストで損をする事を承知でDellに頼むわけだ。
1台だけなら自作するだろうが、100台必要だと分かっているなら自作する馬鹿はいない。
webフレームワークは10台くらいの、自分でやるか頼むかちょっと迷うなってラインか。
0877nobodyさん2009/02/25(水) 22:59:00ID:???
あれ、いつの間にかフレームワークの話に逸れた。何故だろう自分でも分からない。
後半は思いっきり忘れてくれ。

とりあえず、初心者に買わせるならメーカー品にするだろ?って話。
0878nobodyさん2009/02/26(木) 10:25:39ID:???
全てソースから自分でオプション決めてビルドしてインストールするから
xamppなんて思いつきもしないな。
初心者ならそれから始めてもいいけど、何かあった時に誰かに聞くしか能がないから
決まった使い方しかできないみたいだな。
0879nobodyさん2009/02/26(木) 11:47:43ID:???
最近PHPスキル伸び悩んでるんだけど、
クラスやった事ないのでやったらいいですかね?
PHPマスターはオブジェクト指向ですか?
0880nobodyさん2009/02/26(木) 11:55:18ID:???
伸び悩んでるっていうかそれって皆無じゃん
0881nobodyさん2009/02/26(木) 12:05:11ID:???
PHPってオブジェクト指向になったんだろ?5から。
オレもまだ4ばかり使ってるけど、クラスはボチボチ使い始めてる。
0882nobodyさん2009/02/26(木) 12:13:19ID:???
オブジェクトなにがしがよりよい制作手法ならやればいいさ
よりよい制作手法を実現するための手段ならこだわる必要ない
0883nobodyさん2009/02/26(木) 13:02:56ID:???
>>879
データベースは使えるの?
オブジェクト指向はPHPで最初にやるべきではない。
不完全なPHPで最初にやると、
PHPが一般的で他の言語は特殊だという間違った認識が身につくよ。
用語なんかも一般的な他言語のものとは意味あいが違ったりするし。
0884nobodyさん2009/02/26(木) 13:18:41ID:???
>>883
例えば?
0885nobodyさん2009/02/26(木) 14:19:48ID:???
postgreです。
CSSなども基本的は事はOK
オブジェクト思考自体初めてなので>>883な言った様な
偏った認識もしたくはないですが、PHPのオブジェクト指向ができれば
他の言語もとっつきやすいですよね?
0886nobodyさん2009/02/26(木) 14:36:47ID:???
PostgreSQLをpostgreと言う人は初心者だと思うが。
せめてpostgres
0887nobodyさん2009/02/26(木) 14:46:06ID:???
すいませんgoogle検索の癖です。
PHPとPosgreをいつもセットで使ってますからsqlはできます。
0888nobodyさん2009/02/26(木) 16:21:15ID:???
885じゃないけどポスグレって言わね?
postgreは記憶ないけど
0889nobodyさん2009/02/26(木) 16:35:04ID:???
>>884
>>883じゃないけど、オーバーロードとか。
ttp://www.php.net/manual/ja/language.oop5.overloading.php
>PHP における "オーバーロード" の解釈は、他の多くのオブジェクト指向言語とは異なります。
>一般的に「オーバーロード」とは「名前は同じだけれども引数の数や型が異なるメソッドを複数用意できる」という機能のことを指します。
0890nobodyさん2009/02/26(木) 16:56:04ID:???
PHPの本アマゾンでみたけど、
次はステップはデザパタ?ぽいですね。
0891nobodyさん2009/02/26(木) 18:24:38ID:???
>>885
お前恥ずかしいなあwww
0892nobodyさん2009/02/26(木) 19:06:20ID:???
http://books.google.co.jp/books?id=uFTIi6S0f7kC&pg=PT32&dq=php+%E5%85%A5%E9%96%80&lr=&as_brr=3&ei=e2mmSYnUO4K2kwSJ1_mJDg#PPP1,M1
これみてガンガレ
0893nobodyさん2009/02/26(木) 19:14:16ID:???
>>892
googleすげえええええ
0894nobodyさん2009/02/26(木) 19:55:32ID:???
四の五の言わずにJAVAやれ
やっつけ案件はPHP
0895nobodyさん2009/02/26(木) 20:13:16ID:???
>>894
ほとんど小規模だからJavaの出る幕はあまりない
0896nobodyさん2009/02/26(木) 21:10:54ID:???
>>895
まあね。この不景気じゃなぁ。。。
0897nobodyさん2009/02/26(木) 23:08:25ID:???
>>889
マニュアルに明記されてるならいいじゃん
0898nobodyさん2009/02/26(木) 23:36:04ID:???
よくねえよw
なんでオーバーロードなんて名前つけたのかアホとしか思えん
0899nobodyさん2009/02/26(木) 23:37:18ID:???
なんでよくないの?
0900nobodyさん2009/02/26(木) 23:42:59ID:???
統一性がなくなって混乱の元になるだけだろ
PHPだけがこんな状態ならまだいいけど
他の言語がこぞってオーバーロードはこういう機能です!
って別々な実装していったらどうなるんだ?
乗り換えに苦労するだろ
0901nobodyさん2009/02/27(金) 01:10:45ID:???
オーバードーズなら一目瞭然なんだけどね。
飯島愛の死体を見せれば。

「これがオーバードーズという状態です」って。
0902nobodyさん2009/02/27(金) 10:11:12ID:???
分かりました。
仕事でPHPやりながら家でJAVAかじります。
0903nobodyさん2009/02/27(金) 11:01:39ID:???
Javaは、先に設計をカッチリ決め、100%それに沿って開発するようなシチュエーション向きの言語。
100人↑が絡むような大規模案件はどの道仕様をカリカリにfixさせるので、Javaのような静的言語と相性がいい。
ただし、型でガチガチに固められるから、仕様変更に異常に弱いという欠点がある。
まあ、だからこそちょっとした仕様変更でも追加料金を請求できて、だからこそ儲かると言われるわけだが。

仕様がポンポン変わるようなアプリケーションには、動的言語のほうが向いている。
例えばPHPは、メソッドさえ同じならどんなオブジェクトを渡しても動くような関数が簡単に書ける。
Javaでこれをやるには専用のインターフェイス書かなきゃいけないし、新しい機能を実装すると過去のコードにまで変更が波及しがちになる。

趣味コードでJavaとか、考えるだけで恐ろしい。
仕事でPHPを使うことの次くらいにやりたくないな。
0904nobodyさん2009/02/27(金) 13:18:50ID:???
趣味でぼっち開発の俺には、簡単お手軽どこでも動いてゆるゆるのPHP君で十分です。
0905nobodyさん2009/02/27(金) 18:13:37ID:???
>仕様変更に異常に弱い
それは設計モデル次第だ
0906nobodyさん2009/02/27(金) 20:58:22ID:???
>>904
一人で100人のキャラを演じながら開発しろよ
0907nobodyさん2009/02/27(金) 23:31:53ID:???
>905
比較の話だろ。
そりゃJavaだってアセンブラよりは変更に強かろうよ。
0908nobodyさん2009/02/28(土) 23:56:48ID:???
>>1
を読んで思い切って質問してみちゃいまう

tp://hiroqli.blogspot.com/2007/12/keepass.html

にphpと書かれていたのでここで質問するんですが
これを自分のPC上で実行したい場合どうすればいいんでしょう?
IDMというアプリでエクスポートされたCVSをKeepass用に変換できるもののようなんです
よろしくお願いします
0909nobodyさん2009/03/01(日) 00:29:41ID:???
>>908
http://www.php.net/downloads.php
PHP環境を入れる
09109082009/03/01(日) 00:45:47ID:???
>>909
XAMPPというのをインストールして
tp://www.phppro.jp/school/phpschool/vol1/4
のところまでやりましたがそこから先がさっぱり。。
0911nobodyさん2009/03/01(日) 01:13:58ID:???
初心者ならxamppはやめとけ
0912nobodyさん2009/03/01(日) 12:56:14ID:???
教科書読んでたら、

「exitは終了時にメッセージを発生しない」
って書いてあるけど、
自分で実際に試したら、メッセージを表示できるんだけど、
教科書が間違っている?

<?php
exit('hello');
?>
0913nobodyさん2009/03/01(日) 13:02:27ID:???
http://www.php.net/manual/ja/function.exit.php
↑パラメータの注意書きのところ
0914nobodyさん2009/03/01(日) 13:13:51ID:???
「質問」の人?
0915nobodyさん2009/03/02(月) 02:49:22ID:???
HTMLの表示用に同じ雛型を用いて、個別に変わる個所を変数で呼びしたいのですが
変数を入れ子で使うにはどうすれば良いのかご教授ください。

test.php
<?php
$title = "てすとぺーじ";
$hoge = $hensuu1; //変数1の中身を表示させたい
?>
<?php include('html.php'); ?>
<?php echo $html; ?>

html.php
<?php include('hensuu.php'); ?>
<?php
$html = "
<html>
<head><title>$title</title></head> ←$titleは「テストページ」となりますが
<body>
$hoge ←例えばここに「hensuu1」の中身を表示させるためには、どうすればいいですか?
</body>
</html>";
?>

hensuu.php
<?php
$hensuu1 = "実際に表示させたい内容";
?>
0916nobodyさん2009/03/02(月) 02:58:08ID:???
>>915
なんか色々変・・・
設計を見直したほうがいいよ
0917nobodyさん2009/03/02(月) 03:10:55ID:???
素直にテンプレートエンジン使いなよ
0918nobodyさん2009/03/02(月) 03:30:10ID:???
>>916-917
変なのは分かっているのですが
設計を見直そうにもphpを初めて1週間なので
何をどうしたらベストなのか計画を立てることさえできません。


現状はwindowsにApacheとPHPを入れて
表示されるかどうかを確認するのが精いっぱいです。
0919nobodyさん2009/03/02(月) 03:34:00ID:???
ならまだそんなことやる段階ではないと思われ
0920nobodyさん2009/03/02(月) 06:04:37ID:???
php file_put_contentsの排他ロックは
全然ロックされてないって本当?
0921nobodyさん2009/03/02(月) 06:15:47ID:???
0922nobodyさん2009/03/02(月) 06:40:23ID:???
内部的にfopenするときにw+で
開いてしまっているので、ファイルの内容が空になる。

そんときに第三者から読み込みにこられると
空のファイルを渡す

それからロックをかける

こういう仕様なので、append以外では使えない。

こういう理解にしました。
0923nobodyさん2009/03/02(月) 06:46:28ID:???
ロックが必要なのはwriteのときでreadはいらんだろ
0924nobodyさん2009/03/02(月) 06:50:24ID:???
>>922
空のファイルが渡されるっていう現象を検証できるソースある?
試してみたい。
0925nobodyさん2009/03/02(月) 06:58:05ID:???
(1)w+でオープンする
(2)w+なので、自動的にファイルの中味が空になる
(3)第三者が読み込みにくる
(4)空のファイルを渡す
(5)ここでようやくロック発動
(6)第三者が空のファイルを戻しにくる
(7)カウンタがぶっ壊れる
0926nobodyさん2009/03/02(月) 07:19:37ID:???
検証したの?
別な理由でカウンター壊れてんじゃないの?
カウンターにfile_put_contentsって手抜き杉で笑えるから別なところにもバグありそうだけど
0927nobodyさん2009/03/02(月) 07:21:20ID:???
file_put_contentsって
fopen -> fwrite -> fclose
って3つの流れを自動でやってくれるんだけど、
この中の
fopenが、どうもw+でオープンしてるらしい。

だとしたら、ファイルの中味は問答無用で
オープン時に空になるよね。

だからappend以外では使えない。
0928nobodyさん2009/03/02(月) 07:25:56ID:???
マニュアル見るのめんどくさいからみてないけど
file_put_contentsも第三引数あたりでLOCK_EX使えるでしょ

>>927
該当ファイルを読み込んで修正してファイルを空にして全て書き出すのが基本
追記も便利だけどね
0929nobodyさん2009/03/02(月) 07:29:33ID:???
>>928
今はLOCK_EXの話をしてる。
0930nobodyさん2009/03/02(月) 07:34:32ID:???
LOCK_EXが信用できるかできないかの話かsorry
ソース見てみないとどうなってるかわからないな
0931nobodyさん2009/03/02(月) 07:36:23ID:???
検証してみたよ。
コマンドラインで
for($i = 0; $i < 10000; $i++) {
$data = file_get_contents("test.txt");
$data += 1;
$res = file_put_contents("test.txt", $data, LOCK_EX);
if ($res === false) {
error_log("write failed");
}
}

こんな感じのソースをシェルを複数立ち上げて実行したら、
単独なら10000になるけど、同時実行させると少なくなった。
3端末でやったら29767だった。本来なら30000になるべきだが。
しかし、もし>>925の言っている通りなら、どっかで0が戻るとすると、
こんなにきわどい値にはならない。もっと小さくなる。

排他ロックされて、書き込みに失敗していると見るべきだ。
実際、エラーログには書き込みに失敗した分のfailedが記載されたよ。

よって、LOCK_EXは正しい。
0932nobodyさん2009/03/02(月) 07:38:18ID:???
つまり、まじめにカウンターを実装するなら、file_put_contentsでfalseが返ったら、
リトライするなりなんなり、自分で実装しなきゃいけない。
そこを、ミスったのをPHPの仕様漏れにしたがったってことじゃねぇか。
0933nobodyさん2009/03/02(月) 07:44:15ID:???
$count = 0;

counter:
try {
カウンター書き込み
} catch(Exception $e) {
while($count <= 試行回数) {
$count++;
goto counter;
}

こんなんか?
0934nobodyさん2009/03/02(月) 07:51:15ID:???
http://yp.xenophy.com/?p=23

誰も信じて疑っていないのか、PHP5.1.0からサポートされたという、第3引数のLOCK_EXによる排他ロック
file_put_contents( $path, $string, LOCK_EX );

これ・・・・・排他ロック・・・・・・できてません。。。

JMeterの負荷テストにて実証済みです。
具体的にどうなるかというと、書き込み時にロックがかけられないので、
書き込み時に、読み込みが行われた場合は、「空」で取得されます。
うーん。空なのか。。。
0935nobodyさん2009/03/02(月) 08:07:09ID:???
くだすれだが、くだらないブログのつぶやきを信じるスレじゃないからな。
検証してねぇだろそのブログ主
0936nobodyさん2009/03/02(月) 08:07:55ID:???
>>933
例外が発生してるわけじゃないからな。
0937nobodyさん2009/03/04(水) 07:34:34ID:???
<?php
print M_SQRT2;
?>

で、スクエアルートが表示できると聞いて、
さっそくいろいろ試してみたのだが、
これって結局、2と3しか対応してないのな。
0938nobodyさん2009/03/04(水) 08:21:57ID:???
BASIC認証でログアウトするのってどうすればいいの?
0939nobodyさん2009/03/04(水) 08:23:59ID:???
>>937
ttp://jp.php.net/manual/ja/math.constants.php
0940nobodyさん2009/03/04(水) 08:45:59ID:???
アクセスしてきたユーザーのIPアドレスを
crypt、またはMD5,またはsha1等で
暗号化してIDとして表示したいのだが、
安全性はどんな感じか。
0941nobodyさん2009/03/04(水) 08:53:13ID:???
>>940
何の安全性?
0942nobodyさん2009/03/04(水) 08:56:47ID:???
>>941
復号されること
0943nobodyさん2009/03/04(水) 09:09:26ID:???
固定IPアドレス前提?
複号されたところでどうなる?
暗号IPとREMOTE_HOSTで照合するわけだよね? だとしたら生IPとREMOTE_HOSTで照合するのとほとんど変わらないと思うが・・
0944nobodyさん2009/03/04(水) 09:14:22ID:???
>>943
違う。
アクセスしてきたやつのIPを
暗号化関数にぶちこんで、IDを生成して、

「今、この人達が見にきてます」

って表示するの。
0945nobodyさん2009/03/04(水) 09:18:17ID:???
表示するためだけに使う程度のIDなら見に来てる人に名前入力させれば?
0946nobodyさん2009/03/04(水) 09:24:06ID:???
>>945
それをサニタイズして表示するのがめんどくさい
入力させない方がセキュリティは上がる
0947nobodyさん2009/03/04(水) 09:33:34ID:???
でも見に来てる人たちのIDの中に自分のIDも確認できたほうがちょっとうれしくないか?
文字のランダムな羅列よりも・・
0948nobodyさん2009/03/04(水) 09:42:46ID:???
セッションって、一回セットすると、
破棄するのがすっごくめんどうなんだね。

<?php
session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
session_destroy();
}
?>


こんなに書かないと消せないなんて、、、
0949nobodyさん2009/03/04(水) 10:03:06ID:???
簡単に消そうと思えばセッションファイルをunlinkするだけで事足りるだろ
ブラウザ側のクッキーの扱いなんてしょせんサーバ側でコントロールなんてできないし
0950nobodyさん2009/03/04(水) 13:03:55ID:???
>>939
5.3からceilとかfloorをroundで代替できるようになるんだね
0951nobodyさん2009/03/04(水) 13:50:54ID:???
ログインしてる、していない、を
判別するにはどうしたらいいかな?
0952nobodyさん2009/03/04(水) 13:51:26ID:???
ブラウザを開いていたら、ログインしてる。
ブラウザを閉じたら、ログインしてない。

これでいいのかな?
0953nobodyさん2009/03/04(水) 15:47:05ID:???
ログインしている = ログイン後ログアウトしていない
0954nobodyさん2009/03/04(水) 21:10:09ID:???
ログインしたらセッションを生成、ログアウトしたらセッションを破棄。
セッションの最も一般的な使い方。

自分で実装するならこんな感じ。

1.ユーザーがログインフォームにパスとIDを打ち込む
2.リクエストを受けたサーバーは、パスワードを照合。
 あってたら、ランダム文字列をクッキーとしてユーザーに送りつける。
 同時に、この値とユーザーのIDをセットにしてどこかに保存しておく。
 一番シンプルなのは、クッキーの値をファイル名にして、中にユーザーID書き込んでおくとか。
((((((10年後))))))
3.ユーザーがアクセス時にクッキーを送りつけてくるので、そのファイルを探す。
 あったらそいつはログインしているユーザー。
 ファイルの中身を読み、ユーザーのIDを(=ユーザーが誰かを)特定し、処理を続ける。

この「クッキーを発行し、クッキーを送りつける」「ファイルがあるか確認する」をやってくれるのがPHPのセッション。
ファイルの中身がセッション変数に当たる。
0955nobodyさん2009/03/05(木) 00:53:07ID:Rp65yYdP
FlashDevelopみたいな補完機能が超強力なphpエディタってない??
0956nobodyさん2009/03/05(木) 01:23:02ID:???
出席簿みたいのを作りたいんですよ。

ブラウザを開いている間は、出席している。
ブラウザを閉じたら、退席した。

こういうロジックで、セッションを使って実装するのは
どうしたらいいですか?

フォームにIDとパスワード入れてログインするとかじゃなくてです。

IPアドレスだけで実現したいのです。
0957nobodyさん2009/03/05(木) 01:53:13ID:???
セッションが存在したら出席,
セッションが存在しなかったら退席
でいいんじゃないの?
0958nobodyさん2009/03/05(木) 02:12:34ID:SpoYISjY
あまり意味のない事かもしれませんが、同一の接続IDを使って
mysql_query()とmysqli_query()を混在させたり、
mysql_query()で問い合わせてmysqli_close()でクローズしたりする事は
可能でしょうか? 教えてください。

以下のページでは、mysqli_*()ではオブジェクトAPIを使用すると説明がありますが、
mysql_connect()はコネクションを再利用するが、mysqli_connect()は常に新規にコネクションを取得するように
connect以外でもmysql_*()とmysqli_*()では、動きが異なるようなものだったりするのでしょうか?

ttp://d.hatena.ne.jp/taiju1225/20080509/1210305274
0959nobodyさん2009/03/05(木) 08:44:27ID:???
学習1ヶ月程度の初心者です、よろしくお願いします。
入門本に、header("location:url")のみでリダイレクトされた先のスクリプトで、
$_GET["キー"]で値をとれていますが、GET送信の場合は値を
?で付けていかなければ駄目ですよね?
送り元は自身にPOSTでは値を送っています。
そして送り元も送り先もセッションでは値を送受信していますが。

0960nobodyさん2009/03/05(木) 08:54:13ID:???
意味不明なのでもう一度書き直してくれ
0961nobodyさん2009/03/05(木) 08:57:21ID:???
その程度の話、意味がわかるように書けたら答え出るだろ。
質問のふりして、入門本に文句つけてるだけじゃね?
0962nobodyさん2009/03/05(木) 08:59:23ID:???
意味不明なのでもう一度書き直してくれ
0963nobodyさん2009/03/05(木) 09:01:52ID:???
おれも、自分で書いた後そう思ったw
0964nobodyさん2009/03/05(木) 10:47:36ID:???
<?php
$a=0.97075300;
$b=0.97083700;

$c=$b-$a;

print $c;


?>

これを実行すると、

8.4E-5

とかって、出てきます。
Eとか不愉快なんで、ちゃんと数字で
結果を表示したいのですが、どうすればいいですか?
0965nobodyさん2009/03/05(木) 10:59:16ID:???
なんで下スレから移動してんの?
09669592009/03/05(木) 11:27:28ID:???
書き直します。
header("location:url")でリダイレクトされた先のスクリプト内では、
$_GET["キー"]で値をとれています。
しかしheader内のurlの後に「?キー=値」は付けていません。
GET送信で値を送る時にはURLの後に値を付け足すとしか知識がありません。
headerで送り出す元となるスクリプトでは自身にPOST送信してあるのみです。

レス数が950を超えています。1000を超えると書き込みができなくなります。