くだすれ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/
0886nobodyさん
2009/02/26(木) 14:36:47ID:???せめてpostgres
0887nobodyさん
2009/02/26(木) 14:46:06ID:???PHPとPosgreをいつもセットで使ってますからsqlはできます。
0888nobodyさん
2009/02/26(木) 16:21:15ID:???postgreは記憶ないけど
0889nobodyさん
2009/02/26(木) 16:35:04ID:???>>883じゃないけど、オーバーロードとか。
ttp://www.php.net/manual/ja/language.oop5.overloading.php
>PHP における "オーバーロード" の解釈は、他の多くのオブジェクト指向言語とは異なります。
>一般的に「オーバーロード」とは「名前は同じだけれども引数の数や型が異なるメソッドを複数用意できる」という機能のことを指します。
0890nobodyさん
2009/02/26(木) 16:56:04ID:???次はステップはデザパタ?ぽいですね。
0892nobodyさん
2009/02/26(木) 19:06:20ID:???これみてガンガレ
0894nobodyさん
2009/02/26(木) 19:55:32ID:???やっつけ案件はPHP
0898nobodyさん
2009/02/26(木) 23:36:04ID:???なんでオーバーロードなんて名前つけたのかアホとしか思えん
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:???100人↑が絡むような大規模案件はどの道仕様をカリカリにfixさせるので、Javaのような静的言語と相性がいい。
ただし、型でガチガチに固められるから、仕様変更に異常に弱いという欠点がある。
まあ、だからこそちょっとした仕様変更でも追加料金を請求できて、だからこそ儲かると言われるわけだが。
仕様がポンポン変わるようなアプリケーションには、動的言語のほうが向いている。
例えばPHPは、メソッドさえ同じならどんなオブジェクトを渡しても動くような関数が簡単に書ける。
Javaでこれをやるには専用のインターフェイス書かなきゃいけないし、新しい機能を実装すると過去のコードにまで変更が波及しがちになる。
趣味コードでJavaとか、考えるだけで恐ろしい。
仕事でPHPを使うことの次くらいにやりたくないな。
0904nobodyさん
2009/02/27(金) 13:18:50ID:???0905nobodyさん
2009/02/27(金) 18:13:37ID:???それは設計モデル次第だ
0907nobodyさん
2009/02/27(金) 23:31:53ID:???比較の話だろ。
そりゃJavaだってアセンブラよりは変更に強かろうよ。
0908nobodyさん
2009/02/28(土) 23:56:48ID:???を読んで思い切って質問してみちゃいまう
tp://hiroqli.blogspot.com/2007/12/keepass.html
にphpと書かれていたのでここで質問するんですが
これを自分のPC上で実行したい場合どうすればいいんでしょう?
IDMというアプリでエクスポートされたCVSをKeepass用に変換できるもののようなんです
よろしくお願いします
0909nobodyさん
2009/03/01(日) 00:29:41ID:???http://www.php.net/downloads.php
PHP環境を入れる
0910908
2009/03/01(日) 00:45:47ID:???XAMPPというのをインストールして
tp://www.phppro.jp/school/phpschool/vol1/4
のところまでやりましたがそこから先がさっぱり。。
0911nobodyさん
2009/03/01(日) 01:13:58ID:???0912nobodyさん
2009/03/01(日) 12:56:14ID:???「exitは終了時にメッセージを発生しない」
って書いてあるけど、
自分で実際に試したら、メッセージを表示できるんだけど、
教科書が間違っている?
<?php
exit('hello');
?>
0913nobodyさん
2009/03/01(日) 13:02:27ID:???↑パラメータの注意書きのところ
0914nobodyさん
2009/03/01(日) 13:13:51ID:???0915nobodyさん
2009/03/02(月) 02:49:22ID:???変数を入れ子で使うにはどうすれば良いのかご教授ください。
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 = "実際に表示させたい内容";
?>
0917nobodyさん
2009/03/02(月) 03:10:55ID:???0918nobodyさん
2009/03/02(月) 03:30:10ID:???変なのは分かっているのですが
設計を見直そうにもphpを初めて1週間なので
何をどうしたらベストなのか計画を立てることさえできません。
現状はwindowsにApacheとPHPを入れて
表示されるかどうかを確認するのが精いっぱいです。
0919nobodyさん
2009/03/02(月) 03:34:00ID:???0920nobodyさん
2009/03/02(月) 06:04:37ID:???全然ロックされてないって本当?
0921nobodyさん
2009/03/02(月) 06:15:47ID:???0922nobodyさん
2009/03/02(月) 06:40:23ID:???開いてしまっているので、ファイルの内容が空になる。
そんときに第三者から読み込みにこられると
空のファイルを渡す
それからロックをかける
こういう仕様なので、append以外では使えない。
こういう理解にしました。
0923nobodyさん
2009/03/02(月) 06:46:28ID:???0925nobodyさん
2009/03/02(月) 06:58:05ID:???(2)w+なので、自動的にファイルの中味が空になる
(3)第三者が読み込みにくる
(4)空のファイルを渡す
(5)ここでようやくロック発動
(6)第三者が空のファイルを戻しにくる
(7)カウンタがぶっ壊れる
0926nobodyさん
2009/03/02(月) 07:19:37ID:???別な理由でカウンター壊れてんじゃないの?
カウンターにfile_put_contentsって手抜き杉で笑えるから別なところにもバグありそうだけど
0927nobodyさん
2009/03/02(月) 07:21:20ID:???fopen -> fwrite -> fclose
って3つの流れを自動でやってくれるんだけど、
この中の
fopenが、どうもw+でオープンしてるらしい。
だとしたら、ファイルの中味は問答無用で
オープン時に空になるよね。
だからappend以外では使えない。
0928nobodyさん
2009/03/02(月) 07:25:56ID:???file_put_contentsも第三引数あたりでLOCK_EX使えるでしょ
>>927
該当ファイルを読み込んで修正してファイルを空にして全て書き出すのが基本
追記も便利だけどね
0930nobodyさん
2009/03/02(月) 07:34:32ID:???ソース見てみないとどうなってるかわからないな
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:???リトライするなりなんなり、自分で実装しなきゃいけない。
そこを、ミスったのをPHPの仕様漏れにしたがったってことじゃねぇか。
0933nobodyさん
2009/03/02(月) 07:44:15ID:???counter:
try {
カウンター書き込み
} catch(Exception $e) {
while($count <= 試行回数) {
$count++;
goto counter;
}
こんなんか?
0934nobodyさん
2009/03/02(月) 07:51:15ID:???誰も信じて疑っていないのか、PHP5.1.0からサポートされたという、第3引数のLOCK_EXによる排他ロック
file_put_contents( $path, $string, LOCK_EX );
これ・・・・・排他ロック・・・・・・できてません。。。
JMeterの負荷テストにて実証済みです。
具体的にどうなるかというと、書き込み時にロックがかけられないので、
書き込み時に、読み込みが行われた場合は、「空」で取得されます。
うーん。空なのか。。。
0935nobodyさん
2009/03/02(月) 08:07:09ID:???検証してねぇだろそのブログ主
0937nobodyさん
2009/03/04(水) 07:34:34ID:???print M_SQRT2;
?>
で、スクエアルートが表示できると聞いて、
さっそくいろいろ試してみたのだが、
これって結局、2と3しか対応してないのな。
0938nobodyさん
2009/03/04(水) 08:21:57ID:???0940nobodyさん
2009/03/04(水) 08:45:59ID:???crypt、またはMD5,またはsha1等で
暗号化してIDとして表示したいのだが、
安全性はどんな感じか。
0943nobodyさん
2009/03/04(水) 09:09:26ID:???複号されたところでどうなる?
暗号IPとREMOTE_HOSTで照合するわけだよね? だとしたら生IPとREMOTE_HOSTで照合するのとほとんど変わらないと思うが・・
0944nobodyさん
2009/03/04(水) 09:14:22ID:???違う。
アクセスしてきたやつのIPを
暗号化関数にぶちこんで、IDを生成して、
「今、この人達が見にきてます」
って表示するの。
0945nobodyさん
2009/03/04(水) 09:18:17ID:???0947nobodyさん
2009/03/04(水) 09:33:34ID:???文字のランダムな羅列よりも・・
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:???ブラウザ側のクッキーの扱いなんてしょせんサーバ側でコントロールなんてできないし
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:Rp65yYdP0956nobodyさん
2009/03/05(木) 01:23:02ID:???ブラウザを開いている間は、出席している。
ブラウザを閉じたら、退席した。
こういうロジックで、セッションを使って実装するのは
どうしたらいいですか?
フォームにIDとパスワード入れてログインするとかじゃなくてです。
IPアドレスだけで実現したいのです。
0957nobodyさん
2009/03/05(木) 01:53:13ID:???セッションが存在しなかったら退席
でいいんじゃないの?
0958nobodyさん
2009/03/05(木) 02:12:34ID:SpoYISjYmysql_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:???入門本に、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:???0964nobodyさん
2009/03/05(木) 10:47:36ID:???$a=0.97075300;
$b=0.97083700;
$c=$b-$a;
print $c;
?>
これを実行すると、
8.4E-5
とかって、出てきます。
Eとか不愉快なんで、ちゃんと数字で
結果を表示したいのですが、どうすればいいですか?
0965nobodyさん
2009/03/05(木) 10:59:16ID:???0966959
2009/03/05(木) 11:27:28ID:???header("location:url")でリダイレクトされた先のスクリプト内では、
$_GET["キー"]で値をとれています。
しかしheader内のurlの後に「?キー=値」は付けていません。
GET送信で値を送る時にはURLの後に値を付け足すとしか知識がありません。
headerで送り出す元となるスクリプトでは自身にPOST送信してあるのみです。
0967nobodyさん
2009/03/05(木) 11:30:22ID:???POSTは標準入力だから一度読み込み処理したらお終い
0968nobodyさん
2009/03/05(木) 11:43:15ID:???$a=0.97075300;
$b=0.97083700;
$c=$b-$a;
$d=sprintf("%.f", $c);
print $d;
?>
これを実行すると、
0.000084
ってなるんだけど、
0.000084秒
かかった、って理解でいいの?
0969nobodyさん
2009/03/05(木) 11:54:10ID:???質問になってないしw
0970nobodyさん
2009/03/05(木) 12:00:28ID:???0972nobodyさん
2009/03/05(木) 20:30:31ID:???ブラウザを閉じた事を検知する手段は存在しない。
無理やりやるなら、JavaScriptで10秒おきとかにリクエストを送って、それが切れたらブラウザを閉じた、という事にするくらいかな。
問題は誰かを特定するほう。一般論を言うと、IPアドレスと、それが誰かを紐付ける手段は存在しない。
つうかそんなもんあったらプライバシー上の大問題になる。
学校とかのどのPCを誰が使うか決まっている環境で、固定IPならば可能かな。
俺なら初回アクセスの1回だけログインさせてクッキー(セッション)を発行し、以降はそれで個人識別する。
成りすましが問題にならない案件ならこれでじゅうぶん。1月ごとに再ログインさせる必要はあるが。
(寿命が一ヶ月以上のクッキーは発行できないため。技術的制約)
0973nobodyさん
2009/03/05(木) 21:11:25ID:???0974nobodyさん
2009/03/06(金) 02:54:24ID:???セッションの存在を検知するには、
どの関数を使えばいい?
0975nobodyさん
2009/03/06(金) 03:31:29ID:???0976nobodyさん
2009/03/06(金) 08:41:52ID:???なんで?
0977nobodyさん
2009/03/06(金) 09:03:01ID:???ってなる
0978nobodyさん
2009/03/06(金) 09:03:57ID:???このページの通りにやっているのに、、、
なんで、、、?
0980nobodyさん
2009/03/06(金) 13:54:17ID:???(例えばテキストボックスで送った値)はそのままで、locationの値だけが変わるのですか?
0982nobodyさん
2009/03/06(金) 16:07:33ID:???ttp://www.oricon.co.jp/js/dayrank.js
から読み取りたいのですが「Resource id #3」
と出てしまいます。
どうすれば読み込めるようになるのでしょうか教えてください
0984nobodyさん
2009/03/06(金) 22:26:30ID:???fopenでもしてるの?
freadなりfgetsなりすればok
でもjavascriptの代入文のような気もするけど
0985nobodyさん
2009/03/07(土) 12:32:29ID:???サーバーがエラーを出します。2MB未満だと問題ないのですが・・・
phpinfoを見ると
post_max_size 8M 8M
upload_max_filesize 10485760 8M
にはなっています。
どうすれば2MB以上のファイルをアップロード出来るようになるのでしょうか?
レス数が950を超えています。1000を超えると書き込みができなくなります。