[表示 : 全て 最新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/

421 名前:nobodyさん mailto:sage [2008/02/21(木) 08:00:49 ID:???]
This version is for Mac OS X 10.4 (Intel&PPC) and higher.

422 名前:420 [2008/02/21(木) 15:40:03 ID:uBvv/k1H]
ガーン。。。ということはXAMPPは使えないのですネ。
ありがとうございました。。。

423 名前:nobodyさん mailto:sage [2008/02/21(木) 20:36:09 ID:???]
xamppなんて使うなや

424 名前:nobodyさん mailto:sage [2008/02/21(木) 21:13:13 ID:???]
それをいうのなら、Macなんて使うなよ。が正しい。

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

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

このサイトを参考にしてます。
www.phppro.jp/phptips/archives/vol35/1

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

426 名前:nobodyさん mailto:sage [2008/02/21(木) 22:17:02 ID:???]
Winよりはマシだけどな(PHPインストール環境として)

427 名前:nobodyさん mailto:sage [2008/02/21(木) 22:19:36 ID:???]
>>425
文字コードを変換しなされ

428 名前:nobodyさん [2008/02/21(木) 22:29:31 ID:FbPK8kbc]
>>427

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

429 名前:nobodyさん mailto:sage [2008/02/21(木) 22:37:31 ID:???]
意味がわからん



430 名前:nobodyさん mailto:sage [2008/02/21(木) 22:40:10 ID:???]
つ mb_decode_mimeheader, mb_internal_encoding

431 名前:nobodyさん [2008/02/21(木) 22:56:44 ID: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さん mailto:sage [2008/02/21(木) 23:00:32 ID:???]
本文ならmimeheaderじゃねーし。
header見て文字コードが何か確かめてSJISに変換しなされ

433 名前:nobodyさん mailto:sage [2008/02/21(木) 23:10:41 ID:???]
あとスクリプトSJISで書くのは今すぐやめろ

434 名前:nobodyさん [2008/02/21(木) 23:14:40 ID:FbPK8kbc]
SJISで書いちゃ駄目なんですか!?
すみません!!

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


435 名前:nobodyさん [2008/02/21(木) 23:57:05 ID:FbPK8kbc]
自己解決できました。
ご迷惑欠けて申し訳ありませんでした。

436 名前:nobodyさん mailto:sage [2008/02/26(火) 00:15:23 ID:???]
>>431
可能です。
以上。
はい、次。

437 名前:nobodyさん [2008/02/26(火) 22:29:16 ID:8JcMjBPY]
for ($i=0, $n=100000000; $i<$n; $i++ ) {
$str = $i;
}

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

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


439 名前:nobodyさん mailto:sage [2008/02/27(水) 00:33:52 ID:???]
for ($i='a', $n='zzzzzzzz'; $i<=$n; $i++ ) {
$str[] = $i;
}



440 名前:nobodyさん mailto:sage [2008/02/27(水) 04:32:26 ID:???]
>>473
パスワード総当り攻撃の相談でつか?

441 名前:nobodyさん mailto:sage [2008/02/27(水) 04:36:01 ID:???]
1桁増やすごとに計算量が莫大に増加していく恐怖を味わうとよいわ

442 名前:nobodyさん mailto:sage [2008/02/27(水) 13:31:31 ID:???]
>>439
ネタかと思ってやってみたら本当に動きました
文字列をプラスするとこういうことになるんですね
ありがとうございました

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

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

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

よろしくお願いします。

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

445 名前:nobodyさん mailto:sage [2008/02/27(水) 19:12:22 ID:???]
444>>
なるほど、設定が必要なんですね。
助かりました。
ありがとうございます。

446 名前:nobodyさん mailto:sage [2008/02/27(水) 20:15:02 ID:???]
>>445
SSIって手もあるよ

447 名前:nobodyさん mailto:sage [2008/02/27(水) 20:37:33 ID:???]
>>446
ありがとうございます。
勉強してみます!

448 名前:nobodyさん mailto:sage [2008/02/28(木) 00:23:44 ID:???]
ど素人の質問です。
以下の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さん 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設計は色々と勉強した方が良いよ








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

前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