[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 08/02 03:26 / Filesize : 165 KB / Number-of Response : 587
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:nobodyさん mailto:sage [2007/10/25(木) 16:04:31 ID:???]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。

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

---前スレのテンプレここまで---

前スレ: くだすれPHP(超初心者用)2
pc11.2ch.net/test/read.cgi/php/1164617202/

適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 57
pc11.2ch.net/test/read.cgi/php/1193062236/
△▲ WebProg 初心者の質問 Part16 ▼▽
pc11.2ch.net/test/read.cgi/php/1187729623/

完走したら、雑談スレで待機でどうでしょう
【総合】 Webprog板質問雑談スレッド 1
pc11.2ch.net/test/read.cgi/php/1131016915/

449 名前:nobodyさん mailto:sage [2008/02/28(木) 00:40:01 ID:???]
Apacheのログは?
あとプログラムのどこまで実行したら真っ白になるか切り分けてみたら?

450 名前:nobodyさん mailto:sage [2008/02/28(木) 01:14:23 ID:???]
>>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さん mailto:sage [2008/02/28(木) 01:43:16 ID:???]
php として動作してないだけじゃ?
httpd.conf とか確認してみたら?

452 名前:448 mailto:sage [2008/02/28(木) 02:15:26 ID:???]
>>451
httpd.confは本を参考に次のように設定追加してます。

AddType application/x-httpd-php .php

453 名前:nobodyさん mailto:sage [2008/02/28(木) 02:48:59 ID:???]
あとは、デバッグの基本中の基本。チェックライト入れまくる

454 名前:nobodyさん mailto:sage [2008/02/28(木) 14:23:55 ID:???]
つーか、LoadModuleしてるのか?

455 名前:448 mailto:sage [2008/02/28(木) 19:24:05 ID:???]
亀レスになってしまい申し訳ありません。

$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さん mailto:sage [2008/02/28(木) 19:36:50 ID:???]
>>449

457 名前:nobodyさん mailto:sage [2008/02/29(金) 10:18:45 ID:???]
つーか、まずはHTMLしかないphpを書いて試すとか
白紙のときにブラウザの機能でソース見るとどうなってるとか
いろいろやってんのかな



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

459 名前:458の続き mailto:sage [2008/03/05(水) 16:05:57 ID:???]
//指定行数以上のログの削除
$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の改正 mailto:sage [2008/03/05(水) 16:41:48 ID:???]
すいません、これで。
ログ二行以上ならログの先頭から余剰分消していくと言う感じで

//指定行数以上のログの削除
$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さん [2008/03/05(水) 16:42:58 ID:bSWg3SQN]
実行スクリプトまでのサーバーのフルパスを下記のように取っております
この書き方だとファイル名test.phpを他の名前にするたびに$this_script_nameを書換えないといけません
ファイル名を書換えてもソースを変えずにフルパスを取得する書き方を教えてください


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

462 名前:nobodyさん [2008/03/05(水) 16:58:07 ID:OQixiW/q]
レンタルサーバ・無料スペースに依存せずにPEARを使いたいのですが・・・

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

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

463 名前:nobodyさん mailto:sage [2008/03/05(水) 17:09:24 ID:???]
>>461
dirname(__FILE__)

464 名前:nobodyさん [2008/03/05(水) 17:16:55 ID:bSWg3SQN]
>>463
おおお できました
これだけで出来るとわ・・・
ありがとうございました

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

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さん mailto:sage [2008/03/08(土) 07:01:18 ID:???]
>>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 mailto:sage [2008/03/08(土) 11:35:25 ID:???]
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さん mailto:sage [2008/03/08(土) 11:41:55 ID:???]
$deletionlogname = ('card-walin.txt');
何これ

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

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

471 名前:nobodyさん mailto:sage [2008/03/08(土) 11:44:26 ID:???]
パスワードがどれかすら分からんし

472 名前:465 mailto:sage [2008/03/08(土) 11:44:56 ID:???]
$number\t$name\t$comment\t$deletionkey\t$time\n

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

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

474 名前:nobodyさん mailto:sage [2008/03/08(土) 11:51:30 ID:???]
なんでログの件数ー1だけforでループしてんの?

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

476 名前:nobodyさん mailto:sage [2008/03/08(土) 12:01:17 ID:???]
訳分からん記事ってどういうの?

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



478 名前:nobodyさん mailto:sage [2008/03/08(土) 12:08:50 ID:???]
1つめの記事が消えないこともあんの?

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

480 名前:nobodyさん mailto:sage [2008/03/08(土) 12:26:00 ID:???]
データベースにおいて、データは物理的に削除するのではなく、
フラグ変更することをお薦めする。



481 名前:465 mailto:sage [2008/03/08(土) 12:30:46 ID:???]
>>480
表示するかしないかで処理するということですか。

482 名前:nobodyさん mailto:sage [2008/03/08(土) 14:00:31 ID:???]
>>481
データベースの場合だ
ファイルの場合は消した方がいいよ
速度変わってくるし

483 名前:nobodyさん mailto:sage [2008/03/08(土) 14:14:06 ID:???]
じゃ別に今言うべき話じゃないだろw

484 名前:nobodyさん mailto:sage [2008/03/08(土) 14:15:28 ID:???]
>>483
俺が言ったんじゃないw

485 名前:nobodyさん mailto:sage [2008/03/08(土) 14:46:24 ID:???]
まず
||と&&の使い方を覚えよう
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さん mailto:sage [2008/03/08(土) 14:52:21 ID:???]
>>484
お前に言ってないw

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



488 名前:nobodyさん mailto:sage [2008/03/08(土) 16:36:16 ID:???]
>>486
俺にか?

489 名前:465 mailto:sage [2008/03/08(土) 16:38:20 ID:???]
なんだか喧嘩させてしまったようで申し訳ない・・・・・

490 名前:nobodyさん mailto:sage [2008/03/08(土) 17:05:38 ID:???]
架空請求の詐欺師が特定されてるよw
2ch.pne.jp/img/jpg/w_h/img_cache_d_180941_1_1204957189_jpg.jpg

【ユビキタス銀河】 詐欺師プログラマー 武田洋幸
pc11.2ch.net/test/read.cgi/antispam/1204457908/l50

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

492 名前:nobodyさん mailto:sage [2008/03/08(土) 17:53:28 ID:???]
>>491
書き込んだ後ブラウザを強制的に閉じるようにしたら更新できなくなるよ

493 名前:nobodyさん mailto:sage [2008/03/08(土) 18:01:26 ID:???]
そんな〜、ドラえも〜ん!

494 名前:nobodyさん mailto:sage [2008/03/08(土) 18:26:21 ID:???]
a.html←フォーム
b.php←post先
c.php←投稿完了しました表示

b.phpで投稿完了したら
header('Location : example.com/c.php');

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



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

496 名前:nobodyさん mailto:sage [2008/03/08(土) 18:50:31 ID:???]
>>495
別にhtml作らなくてもできるけど
ファイルは分けたほうが後々良いよ

497 名前:nobodyさん mailto:sage [2008/03/08(土) 21:58:57 ID:???]
>>495
だまされるな!
ドラえもん呼ぶのが正解だ



498 名前:nobodyさん mailto:sage [2008/03/08(土) 23:16:31 ID:???]
htmlってどうやって作るんでしたっけ?
なんかリファレンス読んでも見つからないのですが。

499 名前:nobodyさん [2008/03/09(日) 01:35:03 ID:BZEq18rG]
target.phpをインラインフレームで表示するためのページをget.phpとします
その際にをtarget.phpへ送るリファラを example.com とするにはどうしたらいいのでしょうか。
過去ログを探して、
ヘッダに ""Referer: example.com\r\n" を追加すればいいと書いてあったのですが、
どのように追加したらいいのかがわかりません
location みたいな書き方が思い浮かんだのでやってみましたができませんでした。
正しいやり方を教えてください。お願いします。
-------------------------------------

【get.php】
<?php
header("Referer: example.com\r\n");
?>
<iframe src="target.php">
</iframe>
-------------------------------

【target.php】
<?php
echo $_SERVER["HTTP_REFERER"];
?>
-------------------------------

get.phpの実行結果

****.jp/get.php

500 名前:nobodyさん mailto:sage [2008/03/09(日) 02:10:54 ID:???]
>>499
【get.php】
<?php
echo '<iframe src="target.php?referer='.$_SERVER["HTTP_REFERER"].'"></iframe>';
?>

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


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

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

書き方悪くてすいません

502 名前:nobodyさん mailto:sage [2008/03/09(日) 02:41:06 ID:???]
>>501
example.com
これは固定値かそれともget.phpで取得できる値かどっち?

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

503 名前:nobodyさん [2008/03/09(日) 03:08:23 ID:BZEq18rG]
>>502
説明不足で本当にすいません
固定値です


504 名前:nobodyさん mailto:sage [2008/03/09(日) 04:55:14 ID:???]
>>503
ファイルに対してアクセスあった場合
強制的に.htaccessとかでSetEnvとかかなぁ・・・

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

505 名前:nobodyさん mailto:sage [2008/03/09(日) 05:16:16 ID:???]
変数に0入れてその後の分岐にNULLかどうかとか入れたら
0はNULLやfalseと判定されますか?
その変数を変数-1としても-1とはならない?

506 名前:nobodyさん mailto:sage [2008/03/09(日) 05:24:57 ID:???]
===で比較すれば判定されない。
変数=0
変数=変数−1としたら変数の中身は−1になる。

507 名前:nobodyさん mailto:sage [2008/03/09(日) 05:29:10 ID:???]
型の自動変換に頼った比較は避けた方がベター。



508 名前:nobodyさん mailto:sage [2008/03/09(日) 05:31:25 ID:???]
どうもすいません、ありがとうございました。

509 名前:nobodyさん [2008/03/09(日) 14:05:48 ID:BZEq18rG]
>>504
いろいろなアドバイスありがとうございます

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

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

510 名前:nobodyさん mailto:sage [2008/03/09(日) 14:17:24 ID:???]
>>509
GETと環境変数は別

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

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

512 名前:nobodyさん mailto:sage [2008/03/09(日) 15:24:27 ID:???]
>>511
getでリクエスト投げる時にリファラ偽装すれば
リファラには固定値を入れる事ができる

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

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


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

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

514 名前:nobodyさん mailto:sage [2008/03/09(日) 16:26:44 ID:???]
>>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: hogehoge.jp/\r\n" .
        "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さん [2008/03/09(日) 16:49:24 ID:BZEq18rG]
>>514
ありがとうございます

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

516 名前:nobodyさん [2008/03/10(月) 01:54:10 ID: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さん mailto:sage [2008/03/10(月) 02:14:45 ID:???]
すみません。サブルーチンの中身を書いてなかったです。

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さん mailto:sage [2008/03/10(月) 02:20:25 ID:???]
>>516
softbankのチェックした機種は何?
多分表示側の問題だとは思うけど

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

519 名前:516 mailto:sage [2008/03/10(月) 02:40:11 ID:???]
機種はちょっと分からないんですよね。
ログ見てみたらソフトバンクだな、ってのが分かったというだけで。

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

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

520 名前:nobodyさん mailto:sage [2008/03/10(月) 02:58:57 ID:???]
ちょ,それはない

521 名前:nobodyさん mailto:sage [2008/03/10(月) 03:56:42 ID:???]
>>519
旧Vodafone機種とかにはまともに送れないのとかあるからねー
そこらへんが携帯対応のめんどくさい所

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

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



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

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

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

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

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

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

523 名前:nobodyさん mailto:sage [2008/03/10(月) 06:26:17 ID:???]
>>522
その手の質問きたら俺は毎回ここをオススメしてる
宣伝と思われそうだがw

www.phppro.jp/school/phpschool/

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

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

524 名前:nobodyさん mailto:sage [2008/03/10(月) 18:52:10 ID:???]
>>523
すごくよかったですm(_ _)m
私が買った本より説明が分かりやすく理解しやすかったです。

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

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

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

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



526 名前:nobodyさん mailto:sage [2008/03/11(火) 03:42:27 ID:???]
$obj->array

527 名前:nobodyさん [2008/03/11(火) 15:31:16 ID:xCa4blgr]
>>526
ありがとうございます。



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

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


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

530 名前:nobodyさん mailto:sage [2008/03/11(火) 23:38:41 ID:???]
そうそう、有名なプログラミングだよ。

531 名前:nobodyさん mailto:sage [2008/03/12(水) 01:15:12 ID:???]
PHP で HTML のブロックをコメントアウトコメントアウトするのって
↓でええんか?

<?php if(false){ ?>

<?php } ?>

532 名前:nobodyさん mailto:sage [2008/03/12(水) 01:22:22 ID:???]
<?php if(false): ?>
...
<?php endif; ?>

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

533 名前:nobodyさん mailto:sage [2008/03/12(水) 01:29:31 ID:???]
>>532
その書き方のメリットを教えてくれ

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

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

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

535 名前:nobodyさん mailto:sage [2008/03/12(水) 10:53:22 ID:???]
>>534
チェックの方法にもよると思うけど
file_existsかなんかでチェックしてるって事?


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

537 名前:nobodyさん mailto:sage [2008/03/12(水) 11:11:37 ID:???]
すみませんでした。補足します。

繰り返しアクセスしているのは外部のプログラムで、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さん mailto:sage [2008/03/12(水) 11:15:08 ID:???]
>>537
そのLoadパラメータとやらの書き方次第だと
多分問題は無いと思うけどねー


539 名前:nobodyさん mailto:sage [2008/03/12(水) 11:28:02 ID:???]
処理負荷にもよるけど2,3リクエスト/秒なんて余裕だから大丈夫かと

540 名前:534 mailto:sage [2008/03/12(水) 11:52:49 ID:???]
なるほど、助かります。ありがとうございました!
やはりPHPの性能はCGIとは比べものになりませんね。

541 名前:nobodyさん mailto:sage [2008/03/12(水) 17:51:48 ID:???]
phpで出力した内容をhtmlで出力するのって
普通にfwriteとかで作成すればいいのでしょうか?

542 名前:nobodyさん mailto:sage [2008/03/12(水) 19:13:32 ID:???]
file_put_contentsでおk

543 名前:nobodyさん mailto:sage [2008/03/12(水) 21:40:52 ID:???]
>>541
ファイルに書き出したいなら>>542のを使えば良い
表示させるだけならechoなりでhtml書いたのを表示すればいい

544 名前:nobodyさん mailto:sage [2008/03/13(木) 04:03:55 ID:???]
どうもありがとうございました、助かりました。

545 名前:nobodyさん [2008/03/14(金) 16:59:59 ID: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さん mailto:sage [2008/03/14(金) 17:41:35 ID:???]
>>545
print_rよりver_dumpのがオススメ

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

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


547 名前:nobodyさん [2008/03/14(金) 19:16:02 ID: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さん mailto:sage [2008/03/14(金) 19:34:29 ID:???]
最近は、YAMLとJSONばっかりで
XMLを使っていない。使おうとも思わない。

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

549 名前:nobodyさん [2008/03/14(金) 20:27:50 ID:i8C7NkG0]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="www.w3.org/1999/xhtml">
<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 = "***.com/gazou/01/" . $_GET['no'] . ".gif";
if(file_exists($image)){ print "<img src=\"$image\">"; }
?>
</div>
</body>
</html>

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






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<165KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef