くだすれPHP(超初心者用)3at PHP
くだすれPHP(超初心者用)3 - 暇つぶし2ch237:nobodyさん
08/01/07 01:21:47
>>236
あれいばりゅーず

238:nobodyさん
08/01/11 04:17:35
例えば、
URLリンク(hogehoge.jp)
上で、
URLリンク(hogehoge.jp)
という文字列を取得してくる関数か何かは無いでしょうか?
$_SERVER変数の中にはそれらしいものがなかったので・・・

239:nobodyさん
08/01/11 04:22:37
あるだろ

240:nobodyさん
08/01/11 04:59:28
>>239
それがなかったんですよ。
$_SERVER['PHP_SELF']だと "/index.php"
$_SERVER['SERVER_NAME']だと "hogehoge.jp"
$_SERVER['DOCUMENT_ROOT']だと "/public_html/index.php"
ほかは何か違うし・・・
"http://"はともかく、"hogehoge.jp/~hoge"は取ってきたいんです。

241:nobodyさん
08/01/11 06:12:58
どこをどう探してなかったといっているんだ。このヴァカは?

URLリンク(jp.php.net)
URLリンク(jp.php.net)

242:238
08/01/11 11:30:21
>>241
いや、だから、絶対URLを取得したいんですよ。
いまテストしているサーバから別のサーバに移植する予定なので、
動的にとってこさせるようにすればわざわざURL部分を書き直さなくても
済むだろうと思いまして。

何をしたいかと言えば、特定のディレクトリに置かれているファイルを、
階層の違う別々のディレクトリから参照したい、と思いまして。

URLリンク(hogehoge.jp)
を、
URLリンク(hogehoge.jp)
URLリンク(hogehoge.jp)
URLリンク(hogehoge.jp)
など、どの階層に置いても同じ記述で/movie下の任意をファイルを参照する、という。
movie.flvをどこに置くかは決まっているので、hogehoge.jp/~hoge/さえ取得できれば
参照させられるんです。
相対パスだと、ひょっと別のディレクトリに置くと、パスを書き直さなきゃならないんで
移植が面倒になるな、と。


あえて言うなら、parse_urlに渡すURL(そのPHPファイルの絶対URL)を動的に取得したい
ということです。URLを解析したいわけではないんです。

243:nobodyさん
08/01/11 12:08:38
こいつは「応用」という事を知らないみたいだな

244:nobodyさん
08/01/11 18:17:35 mLMFZoBj
認証について質問です。
POSTでデータを送って暗号化などしてデータベースパスが一致したらログイン。
このソースで大丈夫なのかどうか不安です。
a.html→(ここ)→b.php
(ここ)でデータを盗むことができたりするのでしょうか?
これでいいならSSLの必要性がイマイチわかりません。

a.html

<html>
<head>
<title>test</title>
</head>
<body>
<form action="hogehoge.php" method="POST">
<input type="text" name="id">
<input type="password" name="pass">
<input type="submit" value="送信">
</form>
</body>
</html>

b.php

<?php
$pass = $_POST['pass'];
$pass = strip_tags($pass);
$pass = htmlspecialchars($pass, ENT_QUOTES);
$pass = md5($pass);
$pass = substr($pass,0,10);
-------データベースからmd5で暗号化されたデータを引き出して認証-------------
?>

245:nobodyさん
08/01/11 18:21:23
sslじゃないなら平文で流れるよ

246:nobodyさん
08/01/11 18:21:32 mLMFZoBj
連投でスマソ
URLリンク(www.soumu.go.jp)

> 通信途中でデータを傍受されると、情報が第三者に漏れてしまう可能性があります。

a.html→(ここ)→b.php
(ここ)でデータが取れるとこのサイトでは言ってるわけですよね?
では、パスワード漏洩しないには具体的にどのようにすればいいのでしょうか?

よろしくお願いします。

247:nobodyさん
08/01/11 18:23:32
sslにする

248:nobodyさん
08/01/11 18:29:13 mLMFZoBj
>>247
漏洩したくないなら金をそこで使うのは当然なのはわかります。
しかし、実際sslを使用していない認証はたくさんあると思います。

そのようなサイトは漏洩する可能性が高いと見て良いのでしょうか?

例 (mixi)
URLリンク(mixi.jp)

249:nobodyさん
08/01/11 18:30:46
>>248
>SSL(https)はこちら

250:nobodyさん
08/01/11 18:35:41 mLMFZoBj
>>248
見落としてた…orz

え、じゃあ今までhttpsでやってなかった俺のパスワード&アドレスは
漏洩してる可能性あるってこと?

なんでデフォルトがhttpsじゃないんだよ(´・ω・`)

251:nobodyさん
08/01/11 19:01:52
来週から初出勤の俺
PHPは参考書読む程度なんですが
開発現場ってどんな感じで作業進めるのでしょうか?



252:nobodyさん
08/01/11 19:48:43
殺伐と

253:nobodyさん
08/01/11 20:24:05
>>250
スレ違いになるが、JavaScriptでmd5に変換とかすれば

254:nobodyさん
08/01/11 21:04:07 mLMFZoBj
>>253
なるほど
<input type="text" name="pass1">
<input type="hidden" name="pass2">

document.pass2.value = md5された文字

色々省略してますがこんな感じで飛ばせばOKということですね?
これでセキュリティに問題ないならやってみようと思います。

255:nobodyさん
08/01/11 22:37:14
相手がJavaScript切っていたら?
ていうか、質問者もそのレベルならセキュリティ意識する必要ないし(しても対処できないのが落ち)
、回答者もひどすぎる。
とにかくSSLにすればいい。証明書を第三者機関に発行してもらうのはウェブページの信頼性を保障してもらうため。
別に俺のことは俺が保障するっていうなら俺俺証明書でOKなわけ。
それじゃ普通は駄目だから金払う。

256:nobodyさん
08/01/11 23:07:26
>>255
JavaScript切ってたら、mixiでいう「SSL(https)はこちら」を
選択しないのとそう変わらんだろうに
暗号化して送信するかしないかをユーザに任せるという意味ではね
SSLだって人によっては切ってるかも知れんぞw

257:nobodyさん
08/01/11 23:32:11
>>254
その例、なんとなく勘違いしてそうだが、
入力されたパスワードをsubmit時にJavaScript側で
md5にしてからPOST送信すんの
分からんかったら調べるなりJavaScriptスレへ

258:238
08/01/12 00:10:38
移植予定先で$_SERVER['SERVER_NAME']を試してみると、
hogehoge.jp/~hoge/が取得できましたorz
何を見てたんだ俺は・・・
どうもご迷惑おかけしました。

259:238
08/01/12 00:17:48
違った。$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']でした。
どうもたびたび申し訳なく・・・

260:nobodyさん
08/01/12 00:28:49
>>259
REQUEST_URI はやめといた方がいいんじゃね
素直に
substr($_SERVER['REQUEST_URI'], 0, strrpos($_SERVER['REQUEST_URI'], '/'))
とかじゃダメなん?

261:nobodyさん
08/01/12 00:29:36
あーあ、SCRIPT_URI って書いたとおもったのに。

262:238
08/01/12 01:23:53
>>260-261
SCRIPT_URIは確かサーバの環境依存じゃなかったですか?
移植先はレンタルサーバなので、Apacheの設定を弄らせてもらえるか
微妙なんです。未だにどこに移植するか決まってないという。
自鯖にすれば設定し放題ですが、さすがに管理が・・・
/~hoge/句がつくかどうかも微妙ですし。

最悪、DBに絶対URLを格納しておいてそれを使うようにすると言う手を考えつきました。
まあとりあえずREQUEST_URIでやってみます。問題が起きたらDB方式に。
文字列エンコードすればXSSも何とか回避できるでしょうし。
ありがとうございました。

263:nobodyさん
08/01/12 01:45:55
Windows版phq4.4.2なのですが、
GDが読み込まれません。
php.iniの設定箇所のコメントを外す以外に何か設定が必要でしょうか?

264:nobodyさん
08/01/12 06:37:20
再起動する

265:263
08/01/12 17:40:18
>>264
ApacheはもちろんWindowsも再起動してみましたが反映されません。。。

php.ini以外にさわる箇所あるのでしょうか?

266:nobodyさん
08/01/12 18:50:14
理由は?
extension_dirの指定が間違ってるとか、GDの共有ライブラリが入ってないとか

267:nobodyさん
08/01/12 19:22:51
反映されないってどこを見て言ってるの?
php.ini はどこを変更したの?

268:263
08/01/13 06:15:16
レスありがとうございます。

>>266
extension_dirの指定はmbstringの設定が有効なので良いと思うのですが。
ライブラリはphp_gd2.dllですよね?それなら入っています…


>>267
反映についてはphpinfoにgdの項目が出てこなく、関数も使えないのでそう判断しています。
php.iniはextension_dirのコメントを外しました。

269:nobodyさん
08/01/13 10:02:45
手順と確認に問題は無さそうなので、修正しているphp.iniと実際に使われているphp.iniが違うファイルなんじゃないかな?
phpinfo()でどこのphp.iniを使っているか表示されるけど、それは一致してる?

270:nobodyさん
08/01/13 10:42:53
PHPIniDir('c:\php');

271:263
08/01/13 12:22:04
>>269-270
レスありがとうございます。
試してみたいと思います。

272:263
08/01/13 23:05:13
>>269
ビンゴでした。
なぜかiniファイルの読込先がC:\windowsに。。。
ここは変更できるのでしょうか?

一応、この場所にiniファイルを置きましたところ、GDの読み込みには成功いたしました。

ありがとうございました。

273:nobodyさん
08/01/14 02:36:12
なぜかとかって・・・

274:nobodyさん
08/01/14 07:49:03
iniのおき場所と、それぞれのおき場所の優先順位とコンパイルオプションの話はマニュアルに何か書いてあったような気がする

275:nobodyさん
08/01/15 04:28:15
PHPで、CSVファイルを取り込み、Postgresへ格納するの作ってるんですが、
100Mくらいのファイルを取り込むのに、時間が40分くらいかかって
メモリーも2Gくらいを、PHP.iniに書かないと途中でとまるんですが、
PHPってスピードとか、メモリー使用量ってこんなもんでしょうか?

276:nobodyさん
08/01/15 04:31:00
コードが悪い

277:nobodyさん
08/01/15 05:07:45
>>275
URLリンク(www.1x1.jp)

278:nobodyさん
08/01/15 09:57:33
メモリの使用量はPHPとはあまり関係なくプログラマが読み込ませたデータ量による
時間がかかっているのは激しくスワッピングしてるからだと思われ
普通はデータ量が大きいときは漸次処理して負荷を減らすもの

279:nobodyさん
08/01/15 12:28:56
100,000
のように数字に「,」が入ってるときに、数字のみを取り出すにはどうすればいいですか?

280:nobodyさん
08/01/15 13:14:35
ereg_replace(",", "", $var)でできました

281:nobodyさん
08/01/16 11:56:16 sJoxzvRt
質問させていただきます
たまにURLリンク(example.com?aaa)と言うようなURLを見るのですが
クエリ情報を受けとるファイルでは$_GET[?]で受けとっているのか教えて下さい

282:nobodyさん
08/01/16 13:16:39
le.com/?aaa のことならたいてい index.php において空の $_GET['aaa']

mod_rewrite 使ってることもありえる

283:nobodyさん
08/01/16 13:25:34
>>281
$_SERVER['QUERY_STRING']とか。

284:nobodyさん
08/01/16 15:11:30
>>283
それはそれで、何でわざわざそんなことやってるのかって疑問が出来るな

285:nobodyさん
08/01/17 11:15:01
アクセスログ解析用だろ

286:nobodyさん
08/01/17 12:05:56
キーのみのクエリで何でアクセスログの話が?

287:281
08/01/17 13:56:22
レスありがとうございます
>>282さんの
index.phpに空の$_GET[aaa]をおくと言うのを
試してみたのですが意味がわかっていないせいか何も変わりませんでした
もう少し詳しく説明お願いしていいですか?
お手数かけてすいません

288:nobodyさん
08/01/17 14:15:33
置いてじゃなくて於いて。
クエリ文字列を取得するなら>>283

289:nobodyさん
08/01/17 15:15:36
よく読んでませんけど、まずApacheの話として、クライアントから/?aaaみたいなパスで
リクエストされた場合、ファイル名がないのでウェルカムファイルがリクエストされたと
判断される。 /でリクエストすると/index.phpが読まれるのと同じ理屈で/?aaaの場合は
処理を行うスクリプトはindex.phpで、クエリとしてaaaが渡されると思う。
で、クエリは本来/?aaa=valueというようにフィールドとその値になってるけど、この
場合は値がないので、変数名は$_GET[’aaa’]となりデータは空の文字列
ということになるとめでたくね?データは空だから何も受け取ったことにはならないけど
連想配列のキーの有無で違いが出るので、!isset($_GET['aaa'])としてやると
/?aaaなのか/?bbbなのかは区別できるような木がする

290:nobodyさん
08/01/17 15:27:11
嫌がらせかw

291:nobodyさん
08/01/17 23:00:15 AXahQPv7
URLリンク(example.com?aaa)<)

URLリンク(example.com?bbb=aaa)

で通常は$_GET['bbb']で受け取ります
そのサーバでどこかに$_GET['bbb']を受け取るファイルがあるのです


292:nobodyさん
08/01/19 12:56:29
>>291
どこからbbbが出てくるんだよw

?aaaは$_GET['aaa']として入ってくる
データ内容は確かnullのはず
issetでチェックはできるけどな

293:nobodyさん
08/01/19 13:00:52
通常は って言い切るのはどうかと思うけどたいていmod_rewriteとかで$_GET['bbb']で受けるんじゃね
もちろんbbbかどうかは知らないけど

294:nobodyさん
08/01/19 13:09:31
mod_rewrite使うなら?をつける意味が無いな
/aaa/とかにすると思うが

295:nobodyさん
08/01/19 13:14:21
単にisset($_GET['aaa'])で存在チェックしてるだけでFAだろ。
何が問題なんだ?

296:nobodyさん
08/01/20 17:11:47
phpのスクリプトを読んでいると
($mode ? 'OK' : 'NO')
という分岐?が出てきたのですが
この方法の名前は何というのでしょうか?
調べようにも名前が判らず困ってます

297:nobodyさん
08/01/20 17:19:56
三項(条件)演算子

298:nobodyさん
08/01/20 17:21:32
>>296
URLリンク(jp.php.net)

299:nobodyさん
08/01/20 21:00:02
perl にもあるし、C/C++ にもあるし…あとは…
結構サポートしてる言語あるぞえ

300:nobodyさん
08/01/21 00:37:42
レンタルサーバー(アイル)でセッションを使ってユーザ管理できる形で
スケジューラー作ってます。

最近利用している人から、見ていたらお前のログイン状態が出てきたぞと
言われ、キャプチャされた内容が送られてきました。
セッションは
session_start()
ではじめて
$_SESSION[id]
$_SESSION[pwd]
にデータを入れてます。セッションはブッキングすることがないと
聞いていたのですが、たった4人の利用でブッキングがあったため、
もしかすると

iクラスタでは、クラスタリング環境となっており、
セッションの使用、またflock, fcntl 等のロックは機能しません。
symlink, mkdir 等での代用いただくようお願いします。
とレンタルサーバーにはかかれていましたが、クラスタリング環境で
flock,fcntlが使えないことでこういう事が起きているのでしょうか?
ここがはっきりしないと、別のサーバーに切り替えてもらえないし、
自分が選んだサーバーでもプランでもないので板挟みで状態で困ってます。

301:nobodyさん
08/01/21 00:44:27
セッションは機能しませんってこれ以上なく明確に書いてるやん('A`)

302:nobodyさん
08/01/21 13:09:21
>>300
DB使えるならDBでセッション管理すれば?
別にそんなに規模大きいもんでもないんでしょ?

303:296
08/01/21 14:21:47
>>297
>>298
ありがとう

304:244
08/01/21 19:22:48 5H6OPrCr
過去の話掘り返してスマナイ。

>>253でmd5にして認証を行ったはいいが
HTTPヘッダ見たら暗号化した文が表示されてた。

これってこの文盗聴されてそのまま打たれたら結局意味ないじゃんって結果に。

参考にしたページ: URLリンク(jsgt.org)

Digest認証でここはやってますが
どうも不完全なまま終わってるようで続きが見当たりません。

実際にSSLを使わないで認証してる方はいないでしょうか?
自分しか使わないのでSSLの証明はいらないんですが、、、

305:nobodyさん
08/01/21 20:16:56 5H6OPrCr
連投スマソ

結構大きなネトゲのサイトでburp suiteでHTTPヘッダを見てみた。

IDとパスがそのまま表示された…。
これってこの部分盗聴されたらログインされるはずだよな…?と思って
mixiのhttpsでログインしてみた。

こちらは何も表示されなかった。


そのネトゲのスレ行ってみたらセキュアなしかよって散々叩かれてた。
こんなのもあるんですね。


一応報告まで。

306:nobodyさん
08/01/21 21:07:52
>>304
そりゃまんまじゃ駄目。
ワンタイムパスワードにでもしないと。

307:nobodyさん
08/01/21 22:07:39
>>305
ネ糞○

308:nobodyさん
08/01/22 00:42:56 Qziki4SA
すみません、phpを始めたいのにインストール段階で行き詰っちゃいました…
すごく初心者なので、書き方おかしかったらすみません。
・os
windows vista
・希望
apache_2.2.6-win32-x86-no_sslをインストールしたい
・困ってる事
「このインストール パッケージを開くことができませんでした。
パッケージが存在し、アクセスできることを確認してください。
またはアプリケーション ベンダに問い合わせ、この Windows インストーラ パッケージが有効かどうかを確認してください。」
が出てインストールできない。
・やった対策
vistaだと通常とは違うという事で色々と調べて「コマンドプロンプト」というやつを管理者の権限で開いてインストーラーを実行させました。
そうすると何回やっても上記のエラーメッセージが出ます。
なので「windows install cleanup」をダウンロードして開いてみましたが該当するものはなし。

無知なりに考えた原因は、何度も違うバージョンのapacheをインストール→アンインストールしたせいでインストーラが狂ったのかと…。
どうにかインストールしたいです。「ベンダ」に問い合わせる他に何かまだ出来る事があれば教えてほしいです。

309:nobodyさん
08/01/22 01:33:19
>>308
このあたりが関係しているのかも。
URLリンク(www.apachefriends.org)
> Windows VistaではC:\Programfilesのフォルダのパーミッションが限定されております。
> その為、通常のインストールではインストールが成功しない場合があります。
> xampp用のフォルダをCドライブの直下か、C:\userの下にxamppというディレクトリを
> 作成してご利用いただくことをお勧めします。


XAMPPだと、インストーラを使うタイプと使わないタイプがあるから、こっちで
試してみたらどうかな。全部がセットになってるから便利だし。

310:nobodyさん
08/01/22 07:54:00
今の時期は、出来ればVistaでやるのは避けた方が良い。

311:nobodyさん
08/01/22 11:52:06
>>306
ワンタイムパスワードを考えてみました。
データベースにpass1とpass2のあるテーブルを作る。
pass1はユーザーが決めたパスワードをmd5した物。

ログインページにアクセスした時点で
ランダムな文字列を発行。(例 ZztMHpWSD)
全てのユーザーのpass2を更新する(pass1 + ZztMHpWSD)

<input type="text" name="pass">
<input type="hidden" name="rand_pass" value="(ランダムな文字列)">

submit押すと
md5_func(document.formname.pass.value)+document.formname.rand_pass.value;

これでpass1+ランダムな文字列が渡されました。

これで送られてきた物をpass2で一致すればOK。
この処理はできました。

----続く----

312:nobodyさん
08/01/22 11:56:30 q9syKBOV
問題点

Aさんがログイン画面にアクセスしてログインの情報を入力してる最中に
Bさんがアクセスしてきました。

その場合また新しいランダムな文字列が発行され
データベースのpass2が更新されてAさんの hidden に入ってる物が違ってきます。

現在この状況でつまっております。
何か助言を頂けないでしょうか?

313:nobodyさん
08/01/22 12:03:57
> 全てのユーザーのpass2を更新する(pass1 + ZztMHpWSD)
すべてのユーザーのを更新する理由は何?
ログインとかログアウトする時に一人のユーザーのみを
更新してはいけないの?

314:nobodyさん
08/01/22 12:12:27 q9syKBOV
>>313
> すべてのユーザーのを更新する理由は何?
アクセスしてるユーザーがどのユーザーかわからないためです。

ログアウトした時に一人のユーザーを更新する場合
ログアウトする時にpass1+ランダムな文字列で更新

再ログインするためにランダムな文字列発行するわけにもいかないし、
ログアウトの時クッキーにランダムな文字列書き込んだ場合
他のパソコンでログインできなくなる。

一応こんな風に考えてます。

315:nobodyさん
08/01/22 12:28:18 q9syKBOV
古い物上げてきたんで一応悩みをまとめておきますね。

・ SSLをできれば使いたくない(証明とかいらない&節約)
・ HTTPヘッダを見るとパスワード丸見え(盗聴怖い)
・ md5で暗号化しても暗号化した物を盗聴されて打たれたら意味ない
・ ワンタイムパスワードを作って毎回パスワードを変更するが他のユーザー接続で失敗

こんなところです。

316:nobodyさん
08/01/22 14:19:06
節約とセキュリティーをあげるのは相反するものだぞ。一般論として。
金属探知機を設置せずに、拳銃の持込を完全に防止したいみたいな意味だ。

317:nobodyさん
08/01/22 14:40:45 q9syKBOV
>>316
私がしたいのは独自で作成した金属探知機を使用したいのです。
金をかければ有名ブランドの金属探知機で安心、安全でしょう。

私がほしいのは安全だけなのです。

未熟なので能力が伴うかどうかは別として。

318:nobodyさん
08/01/22 14:42:26
ユーザに負担思いっきりかけていいならPGPの秘密鍵暗号鍵みたいな仕組みにすれば?
可能か不可能かって話なら可能だろ

319:308
08/01/22 16:03:11
>>309
ありがとうございます!
今職場なので、帰宅したら試してみます。

>>310
避けたい気持ちでいっぱいです。
一応使えている人がいる様なのでもう少しいじり倒してみます。

320:nobodyさん
08/01/22 17:21:38 q9syKBOV
ざっとセキュリティ関連の記事をいくつか見てきたのですが
どうやらこのスレにいるレベルでは無理そうな感じがしてきました。

>>318
ユーザーに負担はやはりかけたくないですね…。
PGPをざっと見てどのような物かがわかったのですが
できればユーザーにはシンプルにログインさせてあげたいです。
(ID & PASS ぐらい)

とは言っても数人で使う程度の予定で、
一度ログインしたら自動ログインできるように設定したいので、

ログイン画面は
ID入力画面→(データベース内容変更)→pass入力画面→ログイン
この流れでいこうと思います。

これだったら全ユーザーのパスワードを変更しなくていいですし。
これでどうしても証明やユーザーの手間を削減する必要がでてきたら、SSL導入を考えます。

ありがとうございました。

321:nobodyさん
08/01/22 17:46:58
ワンタイムパスワードなのに自動ログインてw

322:nobodyさん
08/01/22 17:52:25
>>321
自動ログインは別の処理だろ?

>>320
素直にSSL入れておけ。
何に使うかよくわからんがSSLに慣れておく事も重要

323:nobodyさん
08/01/24 12:32:36 NF7q/+V1
はじめまして。

別サーバにあるファイルの更新時間を表示させるには
どうしたらいいのでしょうか?


324:nobodyさん
08/01/24 13:50:13
ファイルの更新日時はftp接続じゃないと取得できないような気がする。
URLリンク(always-pg.com)
ファイルの中身だけであれば、httpで
$file = file("URLリンク(........)");
見たいな感じでいけるけれど。

325:nobodyさん
08/01/24 15:19:32
別サーバにあるのが性的で、Webサーバ経由で読み出せるなら

get_headers("URLリンク(www.hoge.jp)");

とやって、last-modifiedの値を見る

phpファイルなら、そのファイル自身にfilemtime(__FILE__)とかで更新時を出力させればいいと思う

326:323
08/01/24 15:32:15 NF7q/+V1
ありがとうございます。
試してみます。

いろいろ探してみたところ下のように”HTTPヘッダーから拾う”という方法を見つけました。
これで「Wed, 23 Jan 2008 00:00:00 GMT」と表示されるのを、
JSTにして、「6:15 1/24 Thu 」と表示したいのですが、整形の方法がわかりません。
どなたかご教授ください。よろしくお願いいたします。



327:323
08/01/24 15:32:38 NF7q/+V1
<?php
$URL="http://対象ファイル";
$purl=parse_url($URL);
if(!$purl["port"]) $purl["port"]=80;
//開く
$fp=fsockopen($purl["host"],$purl["port"]);
//リクエストを送る
if($purl["query"]){
fputs($fp,"GET ".$purl["path"]."?".$purl["query"]." HTTP/1.0\n");
}else{
fputs($fp,"GET ".$purl["path"]." HTTP/1.0\n");
}
fputs($fp,"Host: ".$purl["host"]."\n");
if($purl["user"]) fputs($fp,"Authorization: Basic ".base64_encode($purl["user"].":".$purl["pass"])."\n");
fputs($fp,"\n");
//HTTPステータスラインを取得
$buf=fgets($fp,1024);
if(!strstr($buf," 200 ")) return(FALSE);
//HTTPヘッダを取得
//$finfo["HTTPヘッダ名"] に内容が格納される
while(!feof($fp)) {
$buf=chop(fgets($fp,1024));
if(!$buf) break;
ereg("^([^:]*): *(.*)$",$buf,$sbuf);
$finfo[$sbuf[1]]=trim($sbuf[2]);
}
echo $finfo["Last-Modified"];
?>


328:nobodyさん
08/01/24 15:46:09
>>326
echo date('G:i n/j D',strtotime('Wed, 23 Jan 2008 00:00:00 GMT'));
こんな感じで。下記参照。
URLリンク(jp.php.net)

329:323
08/01/24 16:57:23 NF7q/+V1
最後の行を
echo date('G:i n/j D',strtotime($finfo["Last-Modified"]));
としたら望みどおりの結果になりました!!!

ありがとうございました。

330:nobodyさん
08/01/26 03:19:27
俺は Last-Modified → Date → クライアントローカル って順にしてるな

331:nobodyさん
08/01/27 19:58:32
はじめまして。超初心者用という事でわからない事があったので質問してみます

YahooAPIを用いて画像検索を行い、検索された画像をクリックする事でその画像の類似画像を新たに検索して
Webページに表示させるPHPを作成しているのですが、クリックされた画像の色情報を取得する方法がわかりません。
画像のRGB値を求めて、その値に近い画像を表示させるつもりで現在考えています。
色の取得自体は一応できてるのですが下に処理を書きます
  $im = imagecreatefromjpeg($content);
  $img_w = imagesx( $im );
  $img_h = imagesy( $im );
  $cnt = $img_w * $img_h;
  $r = array();
  $g = array();
  $b = array();
  for( $i = 0 ; $i < $img_w ; $i ++ ){
  for( $j = 0 ; $j < $img_h ; $j ++ ){
  $rgb = imagecolorat($im, $i , $j );
  $r[] = ($rgb >> 16) & 0xFF;
  $g[] = ($rgb >> 8) & 0xFF;
  $b[] = $rgb & 0xFF;
  }
  }
  $index_r = intval( array_sum( $r ) / $cnt);
  $index_g = intval( array_sum( $g ) / $cnt);
  $index_b = intval( array_sum( $b ) / $cnt);
クリックされた画像に対してこの処理を行う方法がいまいちわかりません。
わからない事だらけなのですが何か助言を頂ければお願いします。

OS:WindowsXP
PHP: Version 5.2.5
ApacheVersion:1.3.26

332:nobodyさん
08/01/27 21:02:47
>>331
検索結果表示時に画像リンクを
img.php?src=hogehoge.jpg
こんな風にimg.phpを経由させれば
img.php内で画像のソース取得などできるけど

こういう風に出来ない場合は
javascriptとかで画像に対してクリックイベント設定して
そこから処理させるとかかな・・・・

333:331
08/01/28 11:07:03
>>332
遅くなりましたがレスありがとうございます。

事情があってjavascriptは使わずに処理をさせたいのですが
上の方法で少し考えてみます。
img.phpという別のphpを新たに作成してそこで処理をさせるみたいな感じでいいのでしょうか?

334:nobodyさん
08/01/28 11:31:46
PHPはPerlと比較するとオブジェクト指向プログラミングが
やり易いようになっているけれど、やはり、大規模な開発には
向かないとかいわれています。javaの方が良いと。
この理由は何処にあるのでしょうか。他のプログラムとの連携や
モジュール関連なのでしょうか。

335:332
08/01/28 11:46:04
>>333
あーごめんちょっとぼけてた
<a href="hoge,php?src=hogehoge.jpg"><img src="hogehoge.jpg" /></a>
こういう風なリンクにしちゃえば
hogehoge.php内でどの画像がクリックされたとか解ると思うんだけどどうかな?
このhoge.phpにsrc=hogehoge.jpgを渡してやることによって
hoge.phpにはどの画像がクリックされたかわかるし
どの画像がクリックされたか解ればあとは上のコードでなんとかなると思うけど


336:331
08/01/28 11:54:21
>>334
レスありがとうございます。
PHPだけでしたいのは他にも理由はあるのですがjavascriptはまだ全然勉強してないので・・・
でもPHPと連動させて作成するものが多いようなのでこれから勉強していきます

>>335
レスありがとうございます。
hoge.phpでそんなことができたのですね。一度やってみます
親切に教えてくれてありがとうございます

337:nobodyさん
08/01/29 22:16:32
無知すぎて申し訳ありませんが

URLリンク(www.harudake.net)

↑のようなRSSから自動的に画像を抜き出してサムネイル表示させるには
どのようにすればよろしいでしょうか?
参考になりそうなサイトや書籍があったら教えてください

338:nobodyさん
08/01/29 23:04:54
>>337
それは多分JavaScriptでやってる
んで、PHPでやるなら
まずRSSをパースして画像のURLを抽出する
抽出した画像をDLしてローカルに保存するor抽出したURLをそのまま使用
IMGタグを生成時に一定サイズ以上はサムネイル化する処理を実行
表示デ終わり

339:nobodyさん
08/01/29 23:40:56
>>338
有難うございました 早速実行してみたいと思います

340:nobodyさん
08/02/03 14:38:33
お聞きしたいのですが、PHPを実行した時画面の左上に?が必ず表示されていて
困っているのですがどうすれば無くなるのでしょうか?
日本語で表示させたくてPHP本体の文字コードをUTF-8にして毎回保存しています。
これだと文字化けはせず日本語は表示されるのですが必ず?が表示されます。
PHPを保存する時の文字コードを変更するのではなく、php.iniの設定を変えなければならないのでしょうか?

OSはWindowsXP。PHPはバージョンを確認すると5.2.5なのですが途中でバージョンアップしたのか
iniファイルはPHPとPHP4の二つあります。Apacheは1.3.26です。

ただPHPの環境作りは別の人がやってしまったので今いちどこを修正すればいいのかわかりません。
なんとか解決する方法を教えてもらえないでしょうか

341:nobodyさん
08/02/03 14:54:58
>>340
PHPのソースコードに変な記号を表示させる記述がないのであれば、
間違って?を書いてるとかの可能性が考えられる。
あと、実行後のhtmlのソースのどの部分に記述があるかによって、
推測する事になると思う。

<?php
echo "test!<br>";

と、あえて書いてみるとか。

342:nobodyさん
08/02/03 15:18:25
<?php
echo "test!<br>";

と書いてためしに実行してみましたが、?test!と表示されます。
色んなPHPで実行してみましたが必ず?がついてきます。
間違って?を書いているということは無いと思うのですが・・・

343:nobodyさん
08/02/03 15:51:00
BOM

344:nobodyさん
08/02/03 16:13:35
>>343
BOMというのは始めて知りました。ありがとうございます。
このBOMを削除するのにUTF-8nで保存すると直るようなのですが、普通のメモ帳ではUTF-8でしか保存できません。

function delete_bom($str)
{
if (ord($str{0}) == 0xef && ord($str{1}) == 0xbb && ord($str{2}) == 0xbf) {
$str = substr($str, 3);
}
return $str;
}

上のコードでBOMを削除できるそうなのですが。<?phpの処理の中で記述すればいいのでしょうか?
?が消えないのですが。本当にわからない事だらけで申し訳ありません

345:nobodyさん
08/02/03 16:16:54
エディタでUTF-8のBOM無しにするかUTF-8Nにすればおk

346:nobodyさん
08/02/03 16:18:30
悪いよく読んでなかったけど、要するに文字コード指定できるエディタ使えってこと。
メモ帳で開発は有り得ない。

参考:URLリンク(besunday.hp.infoseek.co.jp)

347:nobodyさん
08/02/03 16:22:16
>>346
ありがとうございます。まだ勉強し始めたばかりだったので(汗)

348:nobodyさん
08/02/04 00:53:06
あれ?bom無しは駄目なのか?
いつも秀丸使っててbom有りでスクリプト書いてたんだが…

349:nobodyさん
08/02/05 16:49:29
逆、BOM有りがダメ
予期せぬエラーが起きる

350:nobodyさん
08/02/05 19:30:27
あぁ、ごめん。逆だった…
bom有りで書いてたぜ。
具体的にどんなエラーが起きるの?

351:nobodyさん
08/02/05 20:27:52
基本的にEUCでbomは知らんかったんで秀丸でUTF-8で保存してみたけど?出ないな。
秀丸だと保存オプションもUTF-8Nとかもないしbom入らないのかな。
メモ帳でUTF-8で保存して実行したら ・ソtest!<br> みたいのは出た。

352:nobodyさん
08/02/05 20:48:26
秀丸でもBOMオプションあるな。
あんまり古いのだとないかもしれんけど。
これはphpが読み込んだときに自動的に削るべきもんかもね。

353:nobodyさん
08/02/05 23:51:41
秀丸、bom有り、bom無し で試してみた。
web 上では見た目上、変化無かったけど、
CLI で実行させたら、bom付きでは頭に 0x81, 0x45, 0xbf の3バイトがくっついてきた。

354:nobodyさん
08/02/06 00:11:29
>>353
そのくっついてくるのがアレ。
BOMつきUTF-8でファイル冒頭に

<?php
header("Content-Type: text/html; charset=UTF-8"); // 例。

なんてのを書くと「ヘッダ送ったあとでヘッダ変えたいとか、無理」と
PHPさんが優しく語りかけてくれる。

355:nobodyさん
08/02/06 00:16:53
なるほど。解ったよ。アンガト

356:354
08/02/06 00:24:06
書いてから気づいた。

> 頭に 0x81, 0x45, 0xbf の3バイト

0xef 0xbb 0xbf の3バイト(>>344参照)、じゃないのね。

357:nobodyさん
08/02/07 16:59:49 d+qc2qYD
チェックボックスでチェックされていたらチェックさせたいです
POSTのデータと一致してるかどうかでforeach書いてるんですけど
なんとなく無駄な感じがしてます…
いい書き方ってありますか?

foreach ( $hoge as $k => $v ) {
$checked = "";
if (isset($_POST['hoge'])) {
foreach ( $_POST['hoge'] as $key ) {
if ($key == $v) {
$checked = " checked=\"checked\"";
}
}
}
echo "<input name=\"hoge[]\" type=\"checkbox\"$checked value=\"$v\" />\n";
}


358:nobodyさん
08/02/07 17:42:05
>>357
こーかな?判定は一行にもできるけど逆に見づらいし。

foreach ( $hoge as $k => $v ) {
    $checked = "";
    if( is_array($_POST['hoge']) && array_search($v, $_POST['hoge']) != FALSE ){
        $checked = " checked=\"checked\"";
    }
    echo "<input name=\"hoge[]\" type=\"checkbox\"$checked value=\"$v\" />\n";
}

359:nobodyさん
08/02/07 17:44:38
でも$v素通りはあんまよくないな。

360:357
08/02/08 13:26:21
>>358
array_searchなんてあったんですね!
ありがとうございます

>>359
素通りとは…?

361:nobodyさん
08/02/08 13:37:59
$v を validate しろって事だよ。
359 はクロスサイトスクリプティングの可能性を示唆してるんだろ。

362:357
08/02/08 17:52:07
なるほど。
これは例なのでいれてないだけです。
$vはこっちで作成してる配列なのにな~と思って。

ちなみに358は
!= FALSE ではなく !== FALSE ですね

363:nobodyさん
08/02/08 18:47:04
それが確実。

364:nobodyさん
08/02/09 01:31:23
つーか何で毎回is_arrayでチェックするんだよ


365:nobodyさん
08/02/10 18:46:39
フォームで入力した内容に " が含まれる場合、
それをそのまま出力したら\"となるのですが、
どうすれば\をつけずに表示や保存できるんですか?

366:nobodyさん
08/02/10 19:57:48
magic_quote_gpcをoffにする

367:nobodyさん
08/02/10 20:08:37
エー
それしか方法ないのですか?

368:nobodyさん
08/02/10 20:10:21
あるよ

369:nobodyさん
08/02/10 20:19:51
お願いします

370:nobodyさん
08/02/10 20:42:46
>>369
URLリンク(jp.php.net)

371:nobodyさん
08/02/10 20:43:34
>>369
URLリンク(jp.php.net)

372:nobodyさん
08/02/10 21:12:31
どうもです!解決しました。

stripcslashes(htmlspecialchars())っていう風につかったんだけどこれでいいのかな

373:nobodyさん
08/02/10 21:21:05
>>372
順序は逆の方が良くないか?

374:nobodyさん
08/02/10 22:06:12
ああ、phpには
"はフォームを通すと\\\"として送られてくるんですね
だから先に勝手につけられたスラッシュを消して
htmlspecialchars(stripcslashes($a, ENT_QUOTES)) とやれば"も'もHTML上できちんと表示できるようになりますね
勉強になりました

375:nobodyさん
08/02/10 22:35:31 rhutwfEM
PHPないにプリントタグを使いたいんですが、
<BODY>
<?php
print <table>
print <tr>
<td>print"値"</td>
<td>print"値2"</td>
<td>print"演算"</td>
<td>print"答"</td>
print </tr>
print </table>
?>
</BODY>
</HTML>
だと、エラーがでます。だれかご教授ください・・・

376:nobodyさん
08/02/10 22:37:08
>>375
参考ページをよく見て
違いを調べろw

377:nobodyさん
08/02/10 22:39:38
ワロタw

378:nobodyさん
08/02/10 22:40:35 rhutwfEM
>>376
すいません、テーブルタグでした。
申し訳ありませんが、参考ページを教えてくれますか?

379:nobodyさん
08/02/10 22:43:46
>>378
どこでもいい。さがせw

380:nobodyさん
08/02/10 22:48:34 rhutwfEM
>>378
わかりました。もう一日考えます。。。


381:nobodyさん
08/02/10 22:48:39
基礎ってレベルじゃねえぞww

382:nobodyさん
08/02/10 23:21:00
糞ってレベルだ

383:nobodyさん
08/02/10 23:54:56
ひょっとしてこういう事がしたいのか?
だとしたら文法根本的に間違えてるだろうに。

<BODY>
<table>
<tr>
<td><?php print"値";?></td>
<td><?php print"値2";?></td>
<td><?php print"演算";?></td>
<td><?php print"答";?></td>
</tr>
</table>
</BODY>
</HTML>

384:nobodyさん
08/02/11 00:20:01
なんというか…wwwwwww

解った後でもう一度このスレに来て自分の書き込み見てみろw

385:nobodyさん
08/02/11 03:49:39
携帯とPCの振り分けをしたく思い
URLリンク(blogn.hustle-user.com)を参考にして、

index.htmlをindex.phpにリネームして、先頭に
<?php
$title="○○";
$page_e='URLリンク(www.)<)○○/m/index.html';
$page_i='URLリンク(www.)○○/m/index.html';
$i=$_SERVER['HTTP_USER_AGENT'];

require_once('agent.txt');

?>
としました。そして携帯からアクセスしたところ無事振り分けることが出来ました。
しかしPCからみたら外部のcssを読み込んでいないようでページレイアウトが崩れてしまいました。
相対パスなのがいけないと思って、
<link href="http://○○/css/global.css" rel="stylesheet" type="text/css" />
と、絶対パスに書き換えましたが改善しませんでした。
そしてさらにわからないことに、ブラウザ(Sleipnir)で何回も読み込んでいると
5回に一階ぐらいきちんと読み込んで表示されるのです。

どういうことなのでしょうか。もしかしてphpの問題じゃなくhtmlの問題でしたら板違い申し訳ありません。


386:nobodyさん
08/02/11 04:14:40
問題の切り分けオヌヌメ

387:nobodyさん
08/02/11 05:29:22
そのコードでどうやったら振り分けられる方が興味あるなw

388:385
08/02/11 05:49:50
>>386
問題の切り分けですか。
まずCSSのパスは間違ってませんでした。

htmlや画像のリンクは相対パスでも問題なく通ってるんで
もしかしたらパスの問題ではないんでしょうか?

となると。。文字コードとかでしょうか・・?
ちなみにphpもcssもS-Jis、改行コードはCR+LFでした。


>>387
ふ、振り分けられないですか?
サイトを参考にしつつやってみたのですが・・


389:nobodyさん
08/02/11 10:01:19
俺は>>387では無いが。
page_e, page_j, page_i 全部URLが一緒な件

390:nobodyさん
08/02/11 11:04:25
>>389
いや、それは別にそういう作り方もあるから別にいいけど
そもそも参考したっていうサイトの内容が突っ込みどころが多すぎて…


391:nobodyさん
08/02/11 11:10:17
URLリンク(blogn.hustle-user.com)
の処理に、腹抱えてワロタ

392:nobodyさん
08/02/11 11:13:06
>>388
そこのサイトのはあんま参考にならんから別の探せw
あと火狐+火虫いれてCSSが適用されてるか確認しろ

393:385
08/02/11 17:22:49
返事が遅くなってしまい申し訳ありません。
>>389
あ、それはケータイのキャリア別に振りわけていないからです。。。
基本はみんなパソコンのメインサイトのindex.phpにアクセスしてもらって
ケータイの人は別のサイトに飛んでもらうってことで。。

なんか参考にしたサイトがまずかったようで。。。
もしおすすめなどあれば教えて頂けると嬉しいです。

>>392
firefoxはいれてないんで、今からいれて確認してみます。
ところで、火虫とは・・・?

394:nobodyさん
08/02/11 17:30:47
> ところで、火虫とは・・・?
水虫のライバル。


395:nobodyさん
08/02/11 17:57:57
火虫=FireBug

396:385
08/02/11 17:59:06
firefoxでみたところ問題なく見れました!

となると、IE側の問題になるのでしょうか?

そして火虫はわかりませんでした><

397:385
08/02/11 18:13:19
firefoxのアドオンでしたか。ありがとうございました。

398:nobodyさん
08/02/11 20:29:28
fopen追記モード('a')で開いたファイルに追記したいとき
どうすれば改行してつなげていけますか?
たとえば
$fh = fopen($file, 'a');
fwrite($fh, "test\n");
としても改行してつないでくれません

399:nobodyさん
08/02/11 20:42:17
改行してつなげるんだから、
fwrite($fh, "\n");
fwrite($fh, "test");
だろw

400:nobodyさん
08/02/11 22:35:00
>>399
それでもできてませんよ
ためしてください

<?
$file = "test.txt";
$fh = fopen($file, 'a');
fwrite($fh, "\n");
fwrite($fh, "test");
fclose($fh);
?>

いやあ納得いきませんね
いちおうtest\nとやって書き込んで、ファイルを見ると最後は改行されている。
なのに書き込むときはなぜ改行されたところから始まらないのですか?

401:nobodyさん
08/02/11 23:06:13
\r\nではどうだい?
もしくは 'ab'

402:nobodyさん
08/02/11 23:07:39
あごめんabは勘違い。

403:nobodyさん
08/02/11 23:17:32
だめですね

404:nobodyさん
08/02/11 23:24:11
あれ、いや
できてました
どうもでした

405:385
08/02/11 23:42:52
解決しました!!

CSSの文字コードをきちんとしていなかったのが問題だったようです。
CSSの先頭に
@charset "shift_jis";
といれると解決しました。

phpじゃなかったですね。申し訳ないです。

406:nobodyさん
08/02/12 03:40:48
>>385,398
  ,......,___                ___  お前初めてかここは?
  {  r-}"'';                    (,- ,_'',;  力抜けよ
__ノYv"-ァ'=;}                  ,_、 Y' リ''ー
  ヽー-ハ '、                 / キ}、 {"ー {⌒
  ト ハ  }      ,. -ー─-- 、___ /   ハノ`{  {
 ! ! !__! ,-、_    ,,( ,        ̄`ー、 /"''ー;ー'"
 |___|! !ー-ニー、;、;'""ノ';{  iー       ヽ=ニ=),..- '"
 K \ヽ !`ーニ'-、{  (e 人  |' ̄ ̄/`ー!  | /   /⌒
  \ヽ !、ヽ, "")ー-'"| !  |   |  /!  |___{,、  /  /
    \"'ヽ'ー-"  _! ||  }   ー─|  | / ヽ/  /
ニ=ー- `!!!'     ''''ー'"{  |     |  /  /`ー|\/
ーーーー'        _ | ./      ヽ__ /  | !


407:nobodyさん
08/02/18 19:07:50
すみません下らない質問なのですが
<?php
$mysql=mysql_connect("localhost","user","password");
if(mysql_select_db("dbname", $mysql)){
print "OK";
}else{
print "NG";
}
?>
このようなソースを書いて(user passはサーバーのもの)
PHPとMYSQLがちゃんと動いているのか確認をしようとしたのですが
画面が真っ白になってエラーも帰ってきません。
PHP php-5.1.6-1.6
mysql mysql-5.0.27-1.fc5
FedoraCore5で
php-mbstring php-mysql php-gd php-devel mysql-serverなども全部入れています。
解決方法ご指南ください



408:nobodyさん
08/02/18 21:17:53
>>407
display_errors = on

409:nobodyさん
08/02/18 22:25:40
それとコンソールを試してみて
パスワードが通っていない感じのエラーが出ていました
ただ、パスワードは合っていて
コンソールで mysql -u user -pでログインが出来ている状態です
/etc/hosts にもデータベース名は記述してあり(localhost)
なんで通らないのかわからなくなっています

今まで使っていたときは大丈夫で
突然この状態になってしまいました。

どなたかお願いします…

410:nobodyさん
08/02/19 02:56:13
それだけの情報で聞いたって誰も分からない

411:nobodyさん
08/02/19 10:06:45
すみません、質問です。
PHPには、.NET Framework の ADO.NET のように、自作した csv ファイルに SQL 文で
データを抽出することは可能なのでしょうか。
以下のサイトのような感じで動かす場合です。
URLリンク(park5.wakwak.com)

一般的なテキストファイルを開いたり、書き込んだりする方法とは別という意味です。
こういった方法以外でという意味です。
$fh = fopen("csv.txt", "r");
$line = fgets($fh, 1024);
// ここで$lineの条件を調べる。
fclose($fh);

ヒントとなるキーワードでもいいので、お願いします。

412:nobodyさん
08/02/19 10:26:38
PEAR::Structures_DataGrid_DataSource_CSV   ・・か?

413:nobodyさん
08/02/19 12:43:40
>>410
よく情報が足りないといわれるのですが
どこら辺が足りないですか
>>407でバージョンやOSも書いてますが
エラーはサーバーから離れていたので書けなかったですが

後学のためにもお願いします

414:nobodyさん
08/02/19 13:02:22
>>413
そういうところ

415:nobodyさん
08/02/19 14:47:53
>>412
ありがとうございました。

416:nobodyさん
08/02/19 19:38:04
変テコなPHP Shell見つけたんだがどう思う?
URLリンク(kissho.xii.jp)

417:nobodyさん
08/02/19 20:44:23
>>416
よくわからんが、こんなコードがある時点でろくなもんじゃない
if(file_exists("B:\\")){
echo "<center><a href='./$this_file?dir=B:\\'>B:\\</a></center>";
} else {}
if(file_exists("C:\\")){
echo "<center><a href='./$this_file?dir=C:\\'>C:\\</a></center>";
} else {}
if (file_exists("D:\\")){
echo "<center><a href='./$this_file?dir=D:\\'>D:\\</a></center>";
} else {}
if (file_exists("E:\\")){
echo "<center><a href='./$this_file?dir=E:\\'>E:\\</a></center>";
} else {}
if (file_exists("F:\\")){
echo "<center><a href='./$this_file?dir=F:\\'>F:\\</a></center>";
} else {}
if (file_exists("G:\\")){
echo "<center><a href='./$this_file?dir=G:\\'>G:\\</a></center>";
} else {}
if (file_exists("H:\\")){
echo "<center><a href='./$this_file?dir=H:\\'>H:\\</a></center>";
} else {}


418:nobodyさん
08/02/21 03:11:11
ShiftJISのCSV形式を読んで、EUC文字コードに変換したいんですが、
Windowsの拡張漢字(IBM拡張やNEC拡張)や、外字領域も
きっちり対応してくれるような、関数とかないんでしょうか?


419:nobodyさん
08/02/21 03:39:48
そんなマニアックな文字まで対応してる関数はない

420:nobodyさん
08/02/21 04:46:45 uBvv/k1H
すみません、質問です。。。
XAMPPをインストール後に以下の手順でエラーがでてしまうのですが、何が原因なのでしょうか???

1. Terminal shellに行って、システム管理者ルートでログインします。
sudo su

2. XAMPPをスタートするには、このコマンドをコールしてください:
/Applications/xampp/xamppfiles/mampp start

ここで、このような感じのエラーメッセージがでていまいます。
(No such file or directory, errno = 2)
XAMPP: Error 133! Couln't start ProFTPD!

ちなみにこの段階でXAMPP Control Panelを起動しようとすると「このシステムとは互換性がないためアプリケーションを起動できません」とメッセージが出てしまいます。

OSはMacOSX.2.8で、インストールしたのがXAMPP Mac OS X 0.7.2です。PHP使用以前の問題で恐縮ですがとても困っていますのでどなたかよろしくおねがいします。

421:nobodyさん
08/02/21 08:00:49
This version is for Mac OS X 10.4 (Intel&PPC) and higher.

422:420
08/02/21 15:40:03 uBvv/k1H
ガーン。。。ということはXAMPPは使えないのですネ。
ありがとうございました。。。

423:nobodyさん
08/02/21 20:36:09
xamppなんて使うなや

424:nobodyさん
08/02/21 21:13:13
それをいうのなら、Macなんて使うなよ。が正しい。

425:nobodyさん
08/02/21 22:15:59 FbPK8kbc
現在携帯メール(添付画像付き)をメールサーバーから転送させて、PHPで処理してDBに保存するということをやろうとしてるのですが、
なぜか本文とか件名が化けてしまいます。

文字化け
「あ」→「$B$"(B」

このサイトを参考にしてます。
URLリンク(www.phppro.jp)

改行コードが「LFのみ」にしてるからかな?と思うのですが、わかりません。
ご教授お願いします。

426:nobodyさん
08/02/21 22:17:02
Winよりはマシだけどな(PHPインストール環境として)

427:nobodyさん
08/02/21 22:19:36
>>425
文字コードを変換しなされ

428:nobodyさん
08/02/21 22:29:31 FbPK8kbc
>>427

sjis,EUC,utf-8に変更したんですが、何も変わりません。。。

429:nobodyさん
08/02/21 22:37:31
意味がわからん

430:nobodyさん
08/02/21 22:40:10
つ mb_decode_mimeheader, mb_internal_encoding

431:nobodyさん
08/02/21 22:56:44 FbPK8kbc
すみません。意味不明で。。。

とりあえず33行目から変更してみたんですが、今度はなにも表示されなくなってしまいました。

33 switch(strtolower($structure->ctype_primary)){
34 case "text": // シングルパート(テキストのみ)
35 $diary_body = $structure->body;
36 $diary_body = mb_decode_mimeheader( $diary_body , 'ISO-2022-JP');

あと言い忘れたんですけど、スクリプトはSJIS、DBもSJISでやってます。

432:nobodyさん
08/02/21 23:00:32
本文ならmimeheaderじゃねーし。
header見て文字コードが何か確かめてSJISに変換しなされ

433:nobodyさん
08/02/21 23:10:41
あとスクリプトSJISで書くのは今すぐやめろ

434:nobodyさん
08/02/21 23:14:40 FbPK8kbc
SJISで書いちゃ駄目なんですか!?
すみません!!

あと>>432さんの書き込みの意味がわかないんですが、具体的にはどうすればいいんでしょうか?


435:nobodyさん
08/02/21 23:57:05 FbPK8kbc
自己解決できました。
ご迷惑欠けて申し訳ありませんでした。

436:nobodyさん
08/02/26 00:15:23
>>431
可能です。
以上。
はい、次。

437:nobodyさん
08/02/26 22:29:16 8JcMjBPY
for ($i=0, $n=100000000; $i<$n; $i++ ) {
$str = $i;
}

こうすると$strには0~99999999が入りますが、a~zzzzzzzzまでを$strに入れるにはどう書けばよいのでしょうか?

438:nobodyさん
08/02/26 23:24:57
アルファベット進数?つまり26進数とかになるのか。
aを0、bを1、cを2・・・て対応させればとりあえず入るな。


439:nobodyさん
08/02/27 00:33:52
for ($i='a', $n='zzzzzzzz'; $i<=$n; $i++ ) {
$str[] = $i;
}

440:nobodyさん
08/02/27 04:32:26
>>473
パスワード総当り攻撃の相談でつか?

441:nobodyさん
08/02/27 04:36:01
1桁増やすごとに計算量が莫大に増加していく恐怖を味わうとよいわ

442:nobodyさん
08/02/27 13:31:31
>>439
ネタかと思ってやってみたら本当に動きました
文字列をプラスするとこういうことになるんですね
ありがとうございました

443:nobodyさん
08/02/27 17:43:11
質問です!
「form.html内のinputタグで送信した値をpost.php内の<?= $_post["abc"]  ?>で表示させる。」
ですが、

「phpファイルではなく、htmlファイル内で表示させる」
にはどうすればいいのでしょうか?

1回の入力で、複数ページ共通ヘッダの「更新日」が変更できたらいいな、と考えております。
きっと超基本的な事柄なのでしょうけれど、ネット上でもなかなか見つからないので...。

よろしくお願いします。

444:nobodyさん
08/02/27 19:05:32
Webサーバの設定で拡張子「.html」もphpで動くようにして<?= $_post["abc"] ?>

445:nobodyさん
08/02/27 19:12:22
444>>
なるほど、設定が必要なんですね。
助かりました。
ありがとうございます。

446:nobodyさん
08/02/27 20:15:02
>>445
SSIって手もあるよ

447:nobodyさん
08/02/27 20:37:33
>>446
ありがとうございます。
勉強してみます!

448:nobodyさん
08/02/28 00:23:44
ど素人の質問です。
以下のPHPを作ったところ、画面が真っ白になりました。
真っ白=エラー無しと思い、tablenameを確認したところデータが入っていませんでした。
>>407と同じエラーかと思い、>>408を確認したところONになっていました。
自分では原因がわからないため、どなたかご指摘願えないでしょうか。

<作っているつもりのもの>
別ページのフォームから送信(reg)されたデータを、データベースに入れるPHP。
環境…SQL=PostgreSQL OS=Linux PHP=5.2.5 
確認…FireFox
$con = pg_connect('dbname host user password');
$a = $_POST["a"];$b =$_POST["b"];$c = $_POST["c"];
if(isset($_POST["reg"])){
$sql = "select max(log) from tablename";
$result = pg_query($con,$sql);
$array = pg_fetch_array($result);
$new_log_no = $array[0] + 1;
$sql = "select current_timestamp";
$result_date = pg_query($con,$sql);
$in_date = pg_fetch_array($result_date);
if(isset($_POST["b"])){ $d = $b; } else { $d = $c; }
$sql = "insert into tablename (log,a,d,_in_date)
         values('$new_log_no','$a','$d','$in_date')";}
else{ header("Location: menu.php"); }
if(!$result){ echo "送信に失敗しました";}


449:nobodyさん
08/02/28 00:40:01
Apacheのログは?
あとプログラムのどこまで実行したら真っ白になるか切り分けてみたら?

450:nobodyさん
08/02/28 01:14:23
>>449
レスありがとうございます。
AccessLogはこうなっていました。
127.0.0.1 - username [28/Feb/2008:00:59:35 +0900] "GET /test/in.php HTTP/1.1" 200 555
127.0.0.1 - username [28/Feb/2008:00:59:41 +0900] "POST /test/in_date.php HTTP/1.1" 200 5
in.phpがフォーム、in_dateが問題のPHPです。
よくわからないですが、データベースに問い合わせていない?気がするので調べてみます。

451:nobodyさん
08/02/28 01:43:16
php として動作してないだけじゃ?
httpd.conf とか確認してみたら?

452:448
08/02/28 02:15:26
>>451
httpd.confは本を参考に次のように設定追加してます。

AddType application/x-httpd-php .php

453:nobodyさん
08/02/28 02:48:59
あとは、デバッグの基本中の基本。チェックライト入れまくる

454:nobodyさん
08/02/28 14:23:55
つーか、LoadModuleしてるのか?

455:448
08/02/28 19:24:05
亀レスになってしまい申し訳ありません。

$sql = "insert into tablename (log,a,d,_in_date)
    values('$new_log_no','$a','$d','$in_date')";}
の部分のSQLに対し
pg_query($con,$sql);
を設定するとテーブルにデータを追加することが出来ました。
しかし作成されたデータは中身が空でしたorz
insertが動いてるのでPHPとデータベースの連携は取れてると思います。

>>454
Loaded Modulesを調べた所次の通りの結果でした。
mod_php5, mod_setenvif, mod_so, mod_auth, mod_access,
mod_alias, mod_userdir, mod_actions, mod_imap, mod_asis,
mod_cgi, mod_dir, mod_autoindex, mod_include, mod_status,
Momod_negotiation, mod_mime, mod_log_config, mod_env, http_core


456:nobodyさん
08/02/28 19:36:50
>>449

457:nobodyさん
08/02/29 10:18:45
つーか、まずはHTMLしかないphpを書いて試すとか
白紙のときにブラウザの機能でソース見るとどうなってるとか
いろいろやってんのかな

458:nobodyさん
08/03/05 16:03:25
だいぶ前にログナンバーを引っ張り出して重複せずに+1したいと
言っていたものですがa+モードとファイルロックのタイミングで
何とか実現できました。
その後に続くwモードのファイルーオープンで
ログ数を調整しようと思ったのですが
この処理を付けるとログが全部消えてしまいます。
何か間違えていますか?

459:458の続き
08/03/05 16:05:57
//指定行数以上のログの削除
$delfilename = ('card-walin.txt');
$dellines = file($delfilename);
$delcountlines = count($dellines);
$yojyou = $delcountlines - 2;
$delhandle = fopen($filename, "w");
$delnewlog = "";
flock($delhandle,LOCK_EX);
for ($i = $delcountlines; $i <= $yojyou; $i--) {
array_unshift($delnewlog, $dellines[$i]);
}
fwrite($delhandle,$delnewlog);
flock($delhandle,LOCK_UN);
fclose($delhandle);

460:458の改正
08/03/05 16:41:48
すいません、これで。
ログ二行以上ならログの先頭から余剰分消していくと言う感じで

//指定行数以上のログの削除
$delfilename = ('card-walin.txt');
$dellines = file($delfilename);
$delcountlines = count($dellines);
if ($delcountlines > 2) {
$yojyou = $delcountlines - 2;
} else {
$yojyou = 0;
}
$delhandle = fopen($delfilename, "w");
flock($delhandle,LOCK_EX);
$delnewlog = "";
for ($i = $delcountlines; $i <= $yojyou; $i--) {
fwrite($delnewlog, $dellines[$i]);
}
flock($delhandle,LOCK_UN);
fclose($delhandle);

461:nobodyさん
08/03/05 16:42:58 bSWg3SQN
実行スクリプトまでのサーバーのフルパスを下記のように取っております
この書き方だとファイル名test.phpを他の名前にするたびに$this_script_nameを書換えないといけません
ファイル名を書換えてもソースを変えずにフルパスを取得する書き方を教えてください


$this_script_name = 'test.php';
$full_path = ereg_replace($this_script_name ,'' ,$_SERVER['SCRIPT_FILENAME']);

462:nobodyさん
08/03/05 16:58:07 OQixiW/q
レンタルサーバ・無料スペースに依存せずにPEARを使いたいのですが・・・

ググってみると”必要ファイルをコピーして ini_set や .htaccess を使えば良い”
との事ですが、どこまでが必要ファイルなのか良く分かりませんでした
(ローカルにインストールしたPEARディレクトリ丸ごとホームディレクトリにコピーなのか
installコマンドでダウンロードしたファイルだけコピーなのか)

質問は最初の一行の通りなのですがPEARを使うにはどのファイルが必要なのでしょうか?

463:nobodyさん
08/03/05 17:09:24
>>461
dirname(__FILE__)

464:nobodyさん
08/03/05 17:16:55 bSWg3SQN
>>463
おおお できました
これだけで出来るとわ・・・
ありがとうございました

465:nobodyさん
08/03/08 00:22:24
掲示板の削除なんですが下記操作してからファイルロックかけて書き込むと
場合によっては重複しませんか?

if ($_POST['delete']) {
for ($i = 0; $i < count($lines); $i++) {
$items = explode("\t", $lines[$i]);
if ($items[0] == $_POST['delradio'] && $items[4] == $_POST['delkey2'] || $items[0] == $_POST['delradio'] && 'masterpass' == $_POST['delkey2']) {
array_splice($lines, $i, 1);
}
}
}

466:nobodyさん
08/03/08 07:01:18
>>465
if (isset($_POST['delete']) && $_POST['delete']) {
 foreach ($lines as $key => $value) {
  $items = explode("\t", $value);
  if ($items[0] == $_POST['delradio'] && ($items[4] == $_POST['delkey2'] || 'masterpass' == $_POST['delkey2'])) {
   unset($lines[$key]);
  }
 }
}

書き込みの部分を見ないとなんとも言えない

467:466
08/03/08 11:35:25
if($_POST['deletion']){
$deletionlogname = ('card-walin.txt');
$deletionloglines = file($deletionlogname);
$deletioncountloglines = count($deletionloglines);
$deletionlognumbers = $deletioncountloglines - 1;
$deletionfopen = fopen($deletionlogname, "w");
flock($deletionfopen,LOCK_EX);
for($i=0; $i<$deletionlognumbers; $i++){
$deletionlogitems = explode("\t", $deletionloglines[$i]);
if($deletionlogitems[0]==$_POST['deletionradio'] && $deletionlogitems[3]==$_POST['deletionkey'] || $deletionlogitems[0]==$_POST['deletionradio'] && 'masterpass'==$_POST['deletionkey']){
continue;
}else{
fwrite($deletionfopen,$deletionloglines[$i]);
}
}
flock($deletionfopen,LOCK_UN);
fclose($deletionfopen);
}

468:nobodyさん
08/03/08 11:41:55
$deletionlogname = ('card-walin.txt');
何これ

469:465
08/03/08 11:42:09
>>467>>465が書いたものです、アンカー打ち間違えた・・・・・
んでこれは記事の固有IDとパスが一致した行を削除と言う流れで
書いてるんですがどうも訳わからん記事まで削除されてしまいます。
>>465の質問とあわせてアドバイス頂けないでしょうか?

470:465
08/03/08 11:43:33
>>468
ログの名前です、
変数名の英語的意味めちゃくちゃなのは
とりあえず別の変数と重ならなくさせるためなので
ご勘弁を。

471:nobodyさん
08/03/08 11:44:26
パスワードがどれかすら分からんし

472:465
08/03/08 11:44:56
$number\t$name\t$comment\t$deletionkey\t$time\n

ログの並びはこんな感じです。

473:465
08/03/08 11:46:30
$deletionlogitems[0]がパスワード、
POST['deletionradio']が記事の固有IDになります、
説明不足ですいません。

474:nobodyさん
08/03/08 11:51:30
なんでログの件数ー1だけforでループしてんの?

475:465
08/03/08 11:56:53
>>474
その部分もしログが0だった場合とか書いてませんね、迂闊でした。
ログの記事数のカウントが0から始まるのでそうやってみたのですが・・・・・

476:nobodyさん
08/03/08 12:01:17
訳分からん記事ってどういうの?

477:465
08/03/08 12:06:56
関係ない別の固有IDの記事まで消えるんですよね、
例えば記事が3つあって、3つめの記事で固有ID3の記事を削除したら
1つめの記事も同時に消えたりします。

478:nobodyさん
08/03/08 12:08:50
1つめの記事が消えないこともあんの?

479:465
08/03/08 12:17:38
>>478
今試したら記事3つのログで2つめの記事消したら
3の記事も同時に消えました。
つかその後、削除ボタン押したら全部消えたw
どうも記事固有IDとパスワード一致しなかった場合書き換えしないと言う
処理が抜けてたようです。
ただこれを直しても記事の同時消えが直る気がしない・・・・
ロジック的には大体上にあげたプログラムである程度あってるのでしょうかね。

480:nobodyさん
08/03/08 12:26:00
データベースにおいて、データは物理的に削除するのではなく、
フラグ変更することをお薦めする。



481:465
08/03/08 12:30:46
>>480
表示するかしないかで処理するということですか。

482:nobodyさん
08/03/08 14:00:31
>>481
データベースの場合だ
ファイルの場合は消した方がいいよ
速度変わってくるし

483:nobodyさん
08/03/08 14:14:06
じゃ別に今言うべき話じゃないだろw

484:nobodyさん
08/03/08 14:15:28
>>483
俺が言ったんじゃないw

485:nobodyさん
08/03/08 14:46:24
まず
||と&&の使い方を覚えよう
466でも書いたけど(最初のifで要らん部分あるけどw)
ループ中にある
if ($items[0] == $_POST['delradio'] && $items[4] == $_POST['delkey2'] || $items[0] == $_POST['delradio'] && 'masterpass' == $_POST['delkey2']) {
これは変です(処理的には通るけど)
  if ($items[0] == $_POST['delradio'] && ($items[4] == $_POST['delkey2'] || 'masterpass' == $_POST['delkey2'])) {
やりたい事は多分これ
んで、POST内容は意図したものがきてるの?


486:nobodyさん
08/03/08 14:52:21
>>484
お前に言ってないw

487:465
08/03/08 16:30:22
なにやらすごい間違いをしてました・・・・・・・・・
$items[4]がパス格納部じゃなくて$items[3]でした・・・・・・・・
今から皆さんにご指摘頂いた部分の修正に入ります、
本当にすいませんでした。

488:nobodyさん
08/03/08 16:36:16
>>486
俺にか?

489:465
08/03/08 16:38:20
なんだか喧嘩させてしまったようで申し訳ない・・・・・

490:nobodyさん
08/03/08 17:05:38
架空請求の詐欺師が特定されてるよw
URLリンク(2ch.pne.jp)

【ユビキタス銀河】 詐欺師プログラマー 武田洋幸
スレリンク(antispam板)l50

491:nobodyさん
08/03/08 17:42:02
何度も投稿すいません、掲示板で書き込んだ後ブラウザの更新ボタン押すと
もう一度書き込まれてしまうのですがこれを防止するのは2重書き込み防止処理だけでいいのでしょうか?
これだとたまに別の人が書き込んだ後に更新押した場合
書き込まれちゃいますよね。
皆さん過去ログの内容走査処理したりしてるのでしょうか?

492:nobodyさん
08/03/08 17:53:28
>>491
書き込んだ後ブラウザを強制的に閉じるようにしたら更新できなくなるよ

493:nobodyさん
08/03/08 18:01:26
そんな~、ドラえも~ん!

494:nobodyさん
08/03/08 18:26:21
a.html←フォーム
b.php←post先
c.php←投稿完了しました表示

b.phpで投稿完了したら
header('Location : URLリンク(example.com)');

これでa.htmlまで戻るとかで戻らない限り2重投稿はある程度防げる



495:nobodyさん
08/03/08 18:29:46
なるほど、そういうことでしたか、取り乱しました。
html作成せずにphp1つだけで全部やろうとしてもややこしそうですね・・・・・

496:nobodyさん
08/03/08 18:50:31
>>495
別にhtml作らなくてもできるけど
ファイルは分けたほうが後々良いよ

497:nobodyさん
08/03/08 21:58:57
>>495
だまされるな!
ドラえもん呼ぶのが正解だ

498:nobodyさん
08/03/08 23:16:31
htmlってどうやって作るんでしたっけ?
なんかリファレンス読んでも見つからないのですが。

499:nobodyさん
08/03/09 01:35:03 BZEq18rG
target.phpをインラインフレームで表示するためのページをget.phpとします
その際にをtarget.phpへ送るリファラを URLリンク(example.com)<)" を追加すればいいと書いてあったのですが、
どのように追加したらいいのかがわかりません
location みたいな書き方が思い浮かんだのでやってみましたができませんでした。
正しいやり方を教えてください。お願いします。
-------------------------------------

【get.php】
<?php
header("Referer: URLリンク(example.com\r\n)<)

500:nobodyさん
08/03/09 02:10:54
>>499
【get.php】
<?php
echo '<iframe src="target.php?referer='.$_SERVER["HTTP_REFERER"].'"></iframe>';
?>

【target.php】
<?php
echo $_GET["referer"];
?>


501:nobodyさん
08/03/09 02:31:20 BZEq18rG
>>500
せっかく答えていただいたのに恐縮ですが、
それはget.phpで取得したリファラをtarget.phpへgetメソッドで渡す方法ですよね

私が知りたいのは、
get.phpでtarget.phpを開くけれども、
target.phpで取得されるリファラはget.phpではなく、URLリンク(example.com) にしたいということなのです
印象の良くない言葉なので使いたくはなかったのですが、つまり、リファラ偽装ということです

書き方悪くてすいません

502:nobodyさん
08/03/09 02:41:06
>>501
URLリンク(example.com)
これは固定値かそれともget.phpで取得できる値かどっち?

get.phpで取得するリファラの値なら方法は無いよ?
get,php内でgetのリクエストをtarget.phpに宛てに投げて
その時のヘッダにリファラ偽装して渡すとかなら可能だけど

503:nobodyさん
08/03/09 03:08:23 BZEq18rG
>>502
説明不足で本当にすいません
固定値です


504:nobodyさん
08/03/09 04:55:14
>>503
ファイルに対してアクセスあった場合
強制的に.htaccessとかでSetEnvとかかなぁ・・・

もしiframeのが別のサイトなら
getのリクエスト投げた方が早い

505:nobodyさん
08/03/09 05:16:16
変数に0入れてその後の分岐にNULLかどうかとか入れたら
0はNULLやfalseと判定されますか?
その変数を変数-1としても-1とはならない?

506:nobodyさん
08/03/09 05:24:57
===で比較すれば判定されない。
変数=0
変数=変数-1としたら変数の中身は-1になる。

507:nobodyさん
08/03/09 05:29:10
型の自動変換に頼った比較は避けた方がベター。

508:nobodyさん
08/03/09 05:31:25
どうもすいません、ありがとうございました。

509:nobodyさん
08/03/09 14:05:48 BZEq18rG
>>504
いろいろなアドバイスありがとうございます

target.phpが別のサイトなら、
target.phpのソースは
<?php
echo $_SERVER["HTTP_REFERER"];
?>
なのは弄りようがないわけですが、

target.phpの $_SERVER["HTTP_REFERER"]の値をURLリンク(example.com)であると認識させるためには、
get.phpからどうやってgetのリクエストを投げればいいのでしょうか

510:nobodyさん
08/03/09 14:17:24
>>509
GETと環境変数は別

511:nobodyさん
08/03/09 14:34:13 BZEq18rG
>>510
ありがとうございます
つまり、getでリクエスト投げても、相手で表示される環境変数は変わらないわけですよね

どうすれば
get.phpでインラインフレームでtarget.phpを表示し、
target.phpの $_SERVER["HTTP_REFERER"]の値をURLリンク(example.comt)にできるのでしょうか
やり方がさっぱりわからないのです

512:nobodyさん
08/03/09 15:24:27
>>511
getでリクエスト投げる時にリファラ偽装すれば
リファラには固定値を入れる事ができる

だがインラインフレームでやるのは無理
それをインラインフレームでやる必要あるの?

どうしてもやりたいなら
.htaccessにSetEnvってのがあって
それを使ってtarget.phpにアクセスがあった場合
強制的にリファラを書き換えてやれば良い


513:nobodyさん
08/03/09 16:02:31 BZEq18rG
>>512
インラインフレームでしようとしていた理由は、
自分がやりたいことを考えた時に一番実現しやすそうだと思ったからです
それが無理ならばインラインフレームでやることはありません

>getでリクエスト投げる時にリファラ偽装すれば
ここのやり方を教えてもらえないでしょうか
getはわかりますが、リファラ偽装の部分がわからないのです

514:nobodyさん
08/03/09 16:26:44
>>513
pearのhttp_requestかcurlが楽じゃないかな
普通にfsockopenとかでopenして投げる事もできるけど
<?php
$request .= "GET / HTTP/1.0\r\n";
$request .= "Host: localhost.jp\r\n";
$request .= "Content-Type: application/x-www-form-urlencoded\r\n";
$request .= "Accept: */*\r\n" .
        "Referer: URLリンク(hogehoge.jp)" .
        "User-Agent: DoCoMo/2.0 Fa2(c100;TB;W28H15)\r\n";
$request .= "\r\n";
$request .= "\r\n";

$fp = fsockopen("yahoo.co.jp", 80, $errno, $errstr, 30);
fputs($fp, $request);
$response = "";
while (!feof($fp)) {
    echo fgets($fp, 4096);
}
fclose($fp);
?>

こんな感じでやふーのトップをもってこれる

515:nobodyさん
08/03/09 16:49:24 BZEq18rG
>>514
ありがとうございます

私のくどい質問に回答続けてくれた方に感謝します

516:nobodyさん
08/03/10 01:54:10 HGPlOVh9
PHP + MySQL でスレッド式掲示板を作りました。
スレッド毎にテーブルを作成し、そのテーブルにコメント(&投稿者名など)を記録、
すべてのテーブルを管理するテーブルに最終投稿日時などを記録して、スレッド順位などを決めます。
以下、コメントを投稿した時の部分のスクリプト。

$comm = addslashes($_POST['comm']); //コメント
$id = addslashes($_POST['id']); //テーブルID
$name = addslashes($_POST['name']); //投稿者名
if($_POST['sage'] == NULL){$sage = 0;} else {$sage = 1;}
if($name == NULL){$page_disp = "名前を入力してください。";
} else {
if($comm == NULL){$page_disp = "本文を入力してください。";
} else {
insert_comment($id,$name,$comm,&$seq,$res_dbcon,&$result); //スレッド(テーブル)にコメントを書き込み
if($result == FALSE){$page_disp = "投稿に失敗しました。";
} else {
update_temp_table($id,$sage,$seq,$res_dbcon,$result);//管理テーブルに投稿日時などを記録
$page_disp = "投稿しました。";}}}

PCからのアクセスと、DOCOMO、auからは期待した通りの動作をしていますが、softbank携帯からのみ、動作がおかしくなっています。

症状としては、$name、$commといった変数を受け取れず(?)、テーブルには各カラムのNULLになったレコードが追加される。
テーブルの更新、レコードの追加は行われているので、CURRENT TIMESTAMPなどはちゃんと入っている。
管理テーブルは更新されているので、各変数のNULLのチェックは通過している。
という状態です。スクリプト上におかしい箇所などあるでしょうか?

ちなみにPHP、MySQLの勉強は先月始めたばかりで、この掲示板のスクリプトは、本などを読んで作ったオリジナルのものです。
よろしくお願いいたします。

517:nobodyさん
08/03/10 02:14:45
すみません。サブルーチンの中身を書いてなかったです。

function insert_comment($tbl_id,$name,$comm,$seq,$dbcon,$result){//コメント追加
$l_sql = "SELECT count( * ) FROM `".$tbl_id."`";
$l_result = mysql_query($l_sql,$dbcon);
$l_row = mysql_fetch_array($l_result);
$seq = $l_row[0] + 1;
$f_host = gethostbyaddr(getenv("REMOTE_ADDR"));
$sql = "insert into `".$tbl_id."` (c_seq, c_time, c_name, c_comm, c_host, c_del_flg) VALUES (".$seq.", NOW( ), '".$name."', '".$comm."', '".$f_host."', '0' )";
$result = mysql_query($sql,$dbcon);
}

function update_temp_table($tbl_id,$sage,$seq,$f_dbcon,$f_result){//スレッド更新(管理テーブル更新)
if($seq == 300){ $del_flg = 1;} else { $del_flg = 0;} //規定レス数に達したスレは終了
$sql = "update t_temp_table set c_count_comment = ".$seq." , c_del_flg = '".$del_flg."' where c_table_id = ".$tbl_id;
$f_result = mysql_query($sql,$f_dbcon);
}


518:nobodyさん
08/03/10 02:20:25
>>516
softbankのチェックした機種は何?
多分表示側の問題だとは思うけど

それと、1スレッド1テーブルはやめた方が良い
ファイルベースの設計なら1スレッド1ファイルの方が良いが・・・

519:516
08/03/10 02:40:11
機種はちょっと分からないんですよね。
ログ見てみたらソフトバンクだな、ってのが分かったというだけで。

しかも、その方が問い合わせフォームからメールも送ってくれたんだけど、
それがまた見事に文字化けしていて全く見れない状態です。
(これもまたDOCOMO、auは正常動作。)

1スレッド1テーブルが良くないというのは、パフォーマンスとかCPU占有とかいう話でしょうか?
素人考えで、一つのテーブルのみが異常にレコード数多くなるよりいいかな、と思ったのですが…

520:nobodyさん
08/03/10 02:58:57
ちょ,それはない

521:nobodyさん
08/03/10 03:56:42
>>519
旧Vodafone機種とかにはまともに送れないのとかあるからねー
そこらへんが携帯対応のめんどくさい所

1つ要素追加しようとした時に全部のテーブル構造変えるほうが手間
あとデフォ設定でCPUがP4の3Gでメモリ2Gなマシンでも
1テーブル2000万件とかいれても平気だから1テーブルに入れろ

DB設計は色々と勉強した方が良いよ



522:nobodyさん
08/03/10 05:18:59
超初心者用ってあるのに全然わからない。・゚・(ノД`)・゚・。
2ヶ月ぐらいやってるけどなにをどうやっていいやら・・・

とりあえずHTMLを少しやってたのでPHPに挑戦してみたんだが
難しい。そして、どう使うのかがよくわからん。

PHPスーパーサンプル集って本を買って本の進行通りにやってるが
だからなに?って感じでおわってしまう。

まず最初にこんにちはを画面に表示させた。うむ。
フォームはあらゆるところで使われるので重要ということで
フォームもやってみた。うむ。

いま、フォームで送信されたデータを関数で色々条件をつける
もしくは処理をするってのやってるんだけど、それも具体的によくわからん。
説明には、パスワードを入力とか普段サイトで使ってるようなことで使う
みたいなことは書いてあったけど、実際自分でつかえるかなーと疑問。

何をどうしたらいいか、もっと分かりやすい本、もしくはページはないか
しってたらお願いします。できれば、私はこう使ったというのを実体験で
いってくれると分かりやすいです。m(_ _)m

523:nobodyさん
08/03/10 06:26:17
>>522
その手の質問きたら俺は毎回ここをオススメしてる
宣伝と思われそうだがw

URLリンク(www.phppro.jp)

初心者には普通にオススメ
あと何か作ってみたいものを見つけるのが良いんじゃないかな?

んでこれを作るには何が必要で
どんな事をしなきゃいけないのかとか
あとは同じようなスクリプトは
どんな風にしてるのかを調べるのも良いかな

524:nobodyさん
08/03/10 18:52:10
>>523
すごくよかったですm(_ _)m
私が買った本より説明が分かりやすく理解しやすかったです。

とりあえず、このページを読破し実際にやってみようと思います。

525:nobodyさん
08/03/11 03:36:14 xCa4blgr
すません。ある関数の返り値をvar_dumpしたら
object(stdClass)(1) { ["array"]=> "test"}
みたいな感じでオブジェクトで返ってきました。

配列arrayの中の"test"という文字列を取り出すためにはどうしたらよいのでしょうか?

ちなみにjson_decode()です。upgrade.phpを利用してassocをTRUEにしているのに配列ではなくオブジェクトで返されてしまって困っています。



526:nobodyさん
08/03/11 03:42:27
$obj->array

527:nobodyさん
08/03/11 15:31:16 xCa4blgr
>>526
ありがとうございます。

528:nobodyさん
08/03/11 20:58:03 LKhchWrt
PHP5のsimplexml_load_fileを使ってWordPressのRSSフィードを読み込もうと
しているのですが、フィード内の <content:encoded> といったエレメントが
読み込まれません。

どうも「:」がエレメント名に含まれていると、PHPはそれを見落としてしまうよう
なのですが、同じような経験をされた方いらっしゃいますでしょうか?


529:nobodyさん
08/03/11 22:34:53
PHPって有名なプログラミングですよね?
今度の4月から大学(情報工学科)に通うんですけど
教授とかに聞いても大丈夫ですよね?

530:nobodyさん
08/03/11 23:38:41
そうそう、有名なプログラミングだよ。

531:nobodyさん
08/03/12 01:15:12
PHP で HTML のブロックをコメントアウトコメントアウトするのって
↓でええんか?

<?php if(false){ ?>

<?php } ?>

532:nobodyさん
08/03/12 01:22:22
<?php if(false): ?>
...
<?php endif; ?>

なんでこの書き方って普及してないの?

533:nobodyさん
08/03/12 01:29:31
>>532
その書き方のメリットを教えてくれ

534:nobodyさん
08/03/12 09:26:44
くだしつで失礼します。
外部からのアクセスでPHPに情報を送り、それをPHPが一度Textファイルに保持した上で
他のアクセスがPHPからそれを受け取るという処理を行っています。
チェックは連続して行っていて情報が無ければ「NoEntry」という結果を返しています。
(保持した情報は消えます)
(処理中、データはロックしています)

今現在そのチェック処理を2秒に1回の頻度で行っているのですが、
一般論の範囲でPHPはどれくらいの負荷までなら普通に耐えられるのでしょうか?
可能であれば上記のチェック処理を1秒に2・3回行いたいと思っています。

使用しているサーバはさくらインターネットのプレミアムコースです。
PHPのバージョンは、、すみません。詳しく分からないのですが初心者解説サイトの命令のみ使っています。
2秒に1回のチェックですが、実際にデータを保持し送信するペースは1時間に1回ほどです。

535:nobodyさん
08/03/12 10:53:22
>>534
チェックの方法にもよると思うけど
file_existsかなんかでチェックしてるって事?


536:nobodyさん
08/03/12 10:58:25
よく分からんけどcronみたいな定期的な処理実行を無限ループでやってるということか?
他のアクセスがあった時点でファイルがあるかチェックするんじゃだめなの?

537:nobodyさん
08/03/12 11:11:37
すみませんでした。補足します。

繰り返しアクセスしているのは外部のプログラムで、PHPはそれに対して反応を返しています。
PHP内部では繰り返しの処理はしていません。

SaveパラメータでHTTPアクセスされると「A」という文字をPHPが記録します。
LoadパラメータでHTTPアクセスされると、今PHPが保持してる「A」という文字をEchoで返し、「A」は消します。
この時、保持している文字がなければ「NoEntry」を返します。

現状2秒に一度Loadパラメータでアクセスしています。(文字があるかチェック)
その間に複数のSaveパラメータでアクセスされると「A,B,C」と同時に保持して、
Loadパラメータが来るごとに、古いものから順に1文字ずつ返します。

ただ通常、1時間に1~2回、多くても10回ほどのSaveパラメータのアクセスしか無いため
ほとんどはLoadパラメータのアクセスを受信し続けている状態です。
このLoadパラメータを、現状の2秒に1度から、1秒間に2~3回にしたいなと考えております。

538:nobodyさん
08/03/12 11:15:08
>>537
そのLoadパラメータとやらの書き方次第だと
多分問題は無いと思うけどねー


539:nobodyさん
08/03/12 11:28:02
処理負荷にもよるけど2,3リクエスト/秒なんて余裕だから大丈夫かと

540:534
08/03/12 11:52:49
なるほど、助かります。ありがとうございました!
やはりPHPの性能はCGIとは比べものになりませんね。

541:nobodyさん
08/03/12 17:51:48
phpで出力した内容をhtmlで出力するのって
普通にfwriteとかで作成すればいいのでしょうか?

542:nobodyさん
08/03/12 19:13:32
file_put_contentsでおk

543:nobodyさん
08/03/12 21:40:52
>>541
ファイルに書き出したいなら>>542のを使えば良い
表示させるだけならechoなりでhtml書いたのを表示すればいい

544:nobodyさん
08/03/13 04:03:55
どうもありがとうございました、助かりました。

545:nobodyさん
08/03/14 16:59:59 P2EP3hdl
simplexml_load_fileを使い必要な部分を抜き出し下記のようなオブジェクトを取得しましたが
ループ文を使い値と属性を取得しようとすると、$nameという配列を作る行で 
Warning: Illegal offset type となります。オブジェクトの属性と値の取り方を間違えているのでしょうか?

$xml
SimpleXMLElement Object
(
[id] => 2
[title] => hogehoge
[spec] => 500
)

foreach($xml as $a => $b) {
if ($a == 'id') {
$id = $b;
}
if ($a == 'title') {
$title = $b;
}
}
$name[$id] = $title; ←エラー

546:nobodyさん
08/03/14 17:41:35
>>545
print_rよりver_dumpのがオススメ

$idと$titleをdumpする事をおすすめする
var_dump($id,$title);

てかそのループしなくても良いと思うんだが?
$name[$xml->id] = $xml->title;


547:nobodyさん
08/03/14 19:16:02 P2EP3hdl
>>546
ありがとうございます
$name[$xml->id] = $xml->title;
これだと同じエラー内容となりました
ver_dumpしたところ下記のように出てきたのですが、さらにオブジェクトが続いているということでしょうか?


object(SimpleXMLElement)#9 (1) {
[0]=>
string(1) "2"
}
object(SimpleXMLElement)#8 (1) {
[0]=>
string(8) "hogehoge"
}

548:nobodyさん
08/03/14 19:34:29
最近は、YAMLとJSONばっかりで
XMLを使っていない。使おうとも思わない。

つかうのは外部とのシステムでXMLを
使うことを強制された場合ぐらいだな。

549:nobodyさん
08/03/14 20:27:50 i8C7NkG0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "URLリンク(www.w3.org)">
<html xmlns="URLリンク(www.w3.org)">
<head>
<title>Gallery</title>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
</head>
<body>
<div align="center">
<br />
<?php include("../../koukoku.php"); ?><br />
<?
$image = "URLリンク(***.com)" . $_GET['no'] . ".gif";
if(file_exists($image)){ print "<img src=\"$image\">"; }
?>
</div>
</body>
</html>

こんな感じでURLリンク(***.com)をページの真ん中に表示したいのですが画像がされません。
画像がローカルパスなら表示されるのですがどこが悪いのか教えてもらえませんでしょうか?

550:nobodyさん
08/03/14 20:32:53
質問です。
よければ教えてください。

echo 45 * 1.4;
echo "<br>";
$a = floor(45 * 1.4);
echo $a;
echo "<br>";

というプログラムで、結果が
63
62
となるんですけど、原因がわかりません…
63が正解なのですが、なぜなんでしょう?
実際は変数が入るので、結果も変動して小数点以下の数値も出るのでfloorしていますが、
なぜかこの数値の時だけ結果にずれが…



551:nobodyさん
08/03/14 20:54:07
>>550
典型的な、浮動小数点誤差の問題だね。

一般的にコンピュータは数値を二進数に変換して処理する。
1.4という数値は二進数では近い数字は表現できても、
1.4そのものは表現できない数値なんだ。(小数点以下が無限に続く)

よって 45 × 1.3999・・・という計算になる。
当然答えも62.9999・・・になる。

あとはechoのとき、62.9999・・・というほぼ63という値なら、
それを63にして表示しているということだろう。

公式サイトにも書いてあるが。
URLリンク(www.php.net)

552:549
08/03/15 12:13:27
聞く場所違いましたかな・・・汗
他で聞いてみます 失礼しました。

553:nobodyさん
08/03/15 15:19:04
>>552
php関係なくね?

554:nobodyさん
08/03/15 17:15:03
for内でもう一度forつかうと$iの値が干渉しあうのですが
$iって$aとかにする事は可能でしょうか?

555:nobodyさん
08/03/15 17:22:41
$A = file_get_contents("ファイル");

としてるだけなのに標準出力にファイルの内容が表示される@さくら

エロい人解決方法を教えてください。


556:nobodyさん
08/03/15 18:41:49
>>554
for文って何ぞや?から改めて調べてみるとよろし
>>555
そんなことはありえない。

557:nobodyさん
08/03/15 22:02:20
>>554
頑張って$iだけを使うように工夫するのが定石

558:nobodyさん
08/03/15 23:28:03
<br/>\nってどういう意味?
なんで改行が二つあるの?

559:nobodyさん
08/03/15 23:35:04
それぞれ違う改行。
意味を調べろ。

560:nobodyさん
08/03/16 01:00:46
>>556 >>557
ちょっとログ分の画像掲示板のhtml出力しつつ
その1ページ分にすべてのページへのリンクを作ったりと複雑なので
whileで代用しました、ありがとうございました。

後、もう一つ聞きたいのですが
.=で処理したデータを継ぎ足していってhtml出力すると
ソースで改行が■になったりしてしまいます。
後々の事を考えて見栄えよく整形したいのですが
どんな要因が考えられるのでしょうか?

561:nobodyさん
08/03/16 01:13:28
>>560
> どんな要因が考えられるのでしょうか?
メモ帳でLF改行を見てるだけ、とか。

562:nobodyさん
08/03/16 01:23:50
>>561
すいません、まさにそのとおりなんですがtxtファイルに
phpproの講座のとおりEUC-JPとLFで設定してます。
改行をCR/LFにしたらちゃんと見えたんですが
EUC-JPとLFだとwindows使いには不便なのでしょうか?

後、ログにtxtファイルを使うと外部から見えてしまうと聞いたのですが
何がお勧めなのでしょうか?

563:nobodyさん
08/03/16 01:30:50
>>562
ログにtxt~とか媒体が問題じゃないよ。
ドキュメントルート以下におけば外部から見られる危険性は当然ある。

564:nobodyさん
08/03/16 01:58:38
あれ?そうでしたか。
過去cgiとかにしとけといわれた思い出があるんですが。

565:nobodyさん
08/03/16 02:22:24
>>564
その説は、ごく限られた人しか .htaccess でごにょごにょできなかった時代とか
.htaccess の書き方を説明するのがめんどくさいとかの産物なので、
せめて .log とか .dat で終わる名前のファイルにして deny from all に設定。
というか、>>563

>>561前半は Shift_JIS の地雷を踏みまくるほうがよっぽど不便だと思う。

566:565
08/03/16 02:23:29
アンカーミスった。>>562前半、ね。

567:nobodyさん
08/03/16 02:41:19
htmlの投稿フォームからphpにデータ送ると
phpの中身がテキストデータとして開かれててしまいます。
phpに同じフォームデータを書いて送信したら普通に処理できてたんですが
どうしたものでしょうか?

568:nobodyさん
08/03/16 14:32:57
日本語でおk?

569:nobodyさん
08/03/16 19:12:01
html出力した内容に含まれてる投稿フォームから
phpにその内容を飛ばして処理しております。
本文がない場合、名前&パスワードをクッキーをセットして
1行目のフォームに送り返してるんですが名前欄に何も出ません。

名前欄のvalue値に
phpプログラムを使用して受け取ったクッキーを表示するコードを書いてるんですが
1行目フォームのようにhtmlファイルにphpコード書いても意味なかったでしたっけ?

570:569
08/03/16 19:19:19
ややこしくなってしまいました、
要するにログをhtml出力したファイル内にあるフォームに
クッキーの受け渡しってできるんですか?

書き込みを処理するphpからクッキー発行しただけでは駄目なんですよね?

571:nobodyさん
08/03/16 19:31:40
できるよ

572:569
08/03/16 19:44:08
すいません、お手数ですがどのようにすればよいのでしょうか?
>>569を書き込んでから今までログをhtmlで出力する掲示板のサンプルを見回ってたら
<input value="">のvalue記述さえ無しにクッキーが表示されてるものが
あってどんな方法を使ってるか知りたくて。

573:nobodyさん
08/03/16 20:02:28
名前欄に何も出ないっていう現在のコードを出してみて。入力と共に。

574:nobodyさん
08/03/16 23:54:38 BE:147567375-2BP(1)
>>569
出力されたhtmlファイルの拡張子はphp?それともhtml?

出力されたファイルがhtmlであれば
サーバの設定が基本的な設定のままなら
cookieなんて出せないやんJavaScriptとか使えば別だが

phpであれば
<input value="<?php echo $_COOKIE['name'];?>">
とかすれば出るが

575:nobodyさん
08/03/17 00:03:56
拡張子はhtmlです、
それで元々作っていたのは総phpで<input value="<?php echo $_COOKIE['name'];?>"> が出来てて
htmlにデータ書き出すようにしてからそれが通用しなくなったので混乱しておりました。
ただここだと
URLリンク(3d.skr.jp)
出来てるのはなぜなんでしょう?

576:nobodyさん
08/03/17 00:10:47 BE:303567089-2BP(1)
>>575
そこはjavascriptでクッキーをセットしてる

577:nobodyさん
08/03/17 00:19:25
なるほど、万人には無理ですかhtmlでは。
とりあえずクッキーの部分は飛ばして別の部分作ります。

578:nobodyさん
08/03/17 00:27:11 BE:84324645-2BP(1)
function l(e){
var P=getCookie("pwdc"),N=getCookie("namec"),i;
with (document) {
for(i=0;i<forms.length;i++){
if(forms[i].pwd)
with(forms[i]){
pwd.value=P;
}
if(forms[i].name)
with(forms[i]){
name.value=N;
}
}
}
};
onload=l;
function getCookie(key, tmp1, tmp2, xx1, xx2, xx3) {
tmp1 = " " + document.cookie + ";";
xx1 = xx2 = 0;
len = tmp1.length;
while (xx1 < len) {
xx2 = tmp1.indexOf(";", xx1);
tmp2 = tmp1.substring(xx1 + 1, xx2);
xx3 = tmp2.indexOf("=");
if (tmp2.substring(0, xx3) == key) {
return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)));
}
xx1 = xx2 + 1;
}
return("");
}
こんな感じだな適度に直せばいける

579:nobodyさん
08/03/18 16:47:11 npoe+Lzf
URLリンク(www.phppro.jp)
のプログラムですが、

URLリンク(localhost)
だと「入力された値は数字ではありません。」と表示されるのですが

URLリンク(localhost)
だと文字化けしてしまいます。
本来「あなたの年齢は:22才です。」と表示されると思うのですが。

何が原因と考えられますか?

580:nobodyさん
08/03/18 17:12:58
>>579
コードうp

581:nobodyさん
08/03/18 17:15:35
ちなみにこちらの環境で実行したら後者も正しく表示された
mb関係かhtmlspecialcharsの文字コードの設定か?
文字化け文字列も出すと何かわかるかも


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch