スレッド表示 | フラット表示〕 全トピック 920 件中 908 番目 次≫ ≪前

---

created: 2003-02-06 14:52 | modified: 2003-02-10 12:09 | reply: 18

[96] ---

user: --- | created: 2003-02-06 14:52
--- 削除されました ---
reply: 98 99 返信 編集 削除

[98] 上手くいかないところが・・・。

user: ゆうじ | created: 2003-02-06 19:59
どこら辺がうまくいかないのかな?
ご質問のときは、
どこまで出来てて、
どこでうまくいかなくなるのかは
おしえてくださいね。

サンプルとのことでしたので、
得意のGoogleで検索した結果、
こんなの見つけました。
「単純でわかりやすい」サンプルスクリプトです。

▼ADDS PHP フォーラム
http://www.mac68k.com/php/phpBB/
ここの、PHPの使い方≫簡単なユーザー認証
にありました。いかがでしょ。
Parent: 96  返信 編集 削除

[99] なんとか上手くいきました!

user: sami | created: 2003-02-06 20:30
<?php
// 接続設定(サーバ/データベース/ユーザ/パスワード)
$val[0] = $HTTP_POST_VARS["uid"];
$val[1] = $HTTP_POST_VARS["name"];
$val[2] = $HTTP_POST_VARS["pass"];
// データベースに接続する
$conn = mysql_connect("localhost","user","pass") or die("接続エラー");
mysql_select_db(log) or die("接続エラー");

// データを取り出す
$result = mysql_query("select * from usr where uid='$val[0]' and pass='$val[2]'");
$usr = mysql_fetch_array($result);

if($usr){
 print "認証OK";
}else{
 print "認証NO";
}

// データベースから切断
mysql_close($conn);

?>
このようなログイン処理を作成しました。
認証されたら、
次のぺージへ進むようにしたいのですが、
どうすればいいのでしょうか?
アドバイスお願いします。
Parent: 96  reply: 100 返信 編集 削除

[100] 任意のページに飛ばすには

user: ゆうじ ホームページ | created: 2003-02-06 21:36
元の発言は基本的に変えないでくださいね。
第3者から見ると、
話がつながらなくなりますので、
宜しくお願いします。

さて、

}else{
 print "認証NO";
}

この部分に、やりたい処理を記述すればよいのですが、任意のページに飛ばすなら、

}else{
// 以下、OKだった時の処理

// http://hoge/ にジャンプする
header("Location: http://hoge/");
}

になりますね。
「http://hoge/」の部分を任意のURLに変えればOKです。

でもこれだと、ID&パスワードが一致したというだけで、
直接「http://hoge/」にアクセスされたら、
ID&パスワードを持たない人でも入られちゃいますね。
会員制のページなどを作成されるのでしたら
Basic認証やセッションあたりを調べられてはいかがでしょう。
Parent: 99  reply: 101 102 返信 編集 削除

[101] ありがとうございます

user: sami | created: 2003-02-06 23:25
なるほどー。アドバイスどうもありがとうございます。とても勉強になります。
Basic認証やセッションも調べてみます!
あと、
>元の発言は基本的に変えないでくださいね。
了解です。ごめんなさい〔;:〕
Parent: 100  reply: 108 返信 編集 削除

[108] header

user: hiroumi ホームページ | created: 2003-02-07 11:13
 私も以前つまづきました。header関数は<html>のヘッダーに置くか諦めてjavascriptで飛ばす必要が有ります。
 私は、両方できるようになりました。一応、私の商品購入した時のページに一瞬でるページがそうです。参考になるかどうかは、判りません。イメージ的には理解できると思います。
Parent: 101  reply: 112 114 返信 編集 削除

[112] えっと

user: sami | created: 2003-02-07 13:16
>header関数は<html>のヘッダーに置くか

とは、
<FORM ACTION="cs.php" METHOD="POST">
このような事ですか??
Parent: 108  返信 編集 削除

[114] javascript

user: hiroumi ホームページ | created: 2003-02-07 19:16
 う?ん。御免なさい。その部分はタイプミスです。
<html><head></head>の前ですね。更にゆうじ さんが言ってるエラーも含みます。
取り合えず、エラーの意味が
「画面に何か出力される前にheader関数を置いていないです。」意味だと思います。

<順番例>
   header関数//-----必ず以下の前。
 echo ("test");

java scriptの例です。
javascript 50/1000秒後にindex.phpに行く設定です。これだと javascript を有効にしてないページには問題ですけど画面に出力が可能です。

echo "<SCRIPT anguage=\"JavaScript\"> setTimeout('location.href=\".index.php?',50) </script>";
Parent: 108  reply: 117 返信 編集 削除

[117] 質問です!

user: sami | created: 2003-02-08 23:12
>取り合えず、エラーの意味が
>「画面に何か出力される前にheader関数を置いていないです。」意味だと思います。
>
><順番例>
>   header関数//-----必ず以下の前。
> echo ("test");

とありますが、

if($usr){
header("Location: http://localhost/so/ninsyo/Top.html";);
}else{
print "認証NO";
}

↑これでは
画面に何か出力される前にheader関数を置いてあるのにはならないのでしょうか?
Parent: 114  reply: 118 返信 編集 削除

[118] 確かめ方

user: hiroumi ホームページ | created: 2003-02-09 06:33
 確かめ方も以下に示しました。テスト的に変数の値を用意しておいて、変数のない場合はコメントに入れてしまう事で if文の動作が確認できます。
 また、if文は 条件に合わないものを無視します。但し、構文エラーが無ければの話ですよ。

//確認用//
$usr="dfgas";
if($usr){
header("Location:./index01.php");
}else{
print "認証NO";
}
他に、セキュリティーまで考えると、DBやFTPのIDとPASSの番号を直接入力は厳禁ですよ。
 もし、ネット上に置く場合は 別 のIDとパスワードで一致すれば認証される方法がお勧めです。ファームでの入力はcookeiに残るのが普通です。また、パスワードも別に設定した場合、別の人が任意のパスワードを管理画面で変更も可能になります。
 取り合えず、違うIDとPASSWORDで入る方法まで考えてみてください。ここまで理解してれば出来てれば簡単にできますよ。認証の流れを理解するには、今までのモノで十分ですよ・・。
 セキュリティーの話に成るとおくが深いのでここまでにしますね。
Parent: 117  reply: 119 返信 編集 削除

[119] なるほどー

user: sami | created: 2003-02-10 12:09
勉強になります。
どうもありがとうございます。
がんばってみます☆
Parent: 118  返信 編集 削除

[102] ちょっと質問です

user: sami | created: 2003-02-06 23:29
>「http://hoge/」の部分を任意のURLに変えればOKです。
とありますが、
ninsyou.php
に進みたい場合は、
「http://localhost/ninsyou.php」
とすればいいのですよね?
Parent: 100  reply: 103 返信 編集 削除

[103] 正解!

user: ゆうじ ホームページ | created: 2003-02-06 23:52
その通り!
自分で確かめてくださいね。
Parent: 102  reply: 104 返信 編集 削除

[104] 訂正

user: ゆうじ ホームページ | created: 2003-02-07 00:13
なんかココのBBS変です。
投稿した記事が文字化けしてます。

header("Location: http://hoge/");
                    ↑
ダブルクォーテーションの後ろにあるセミコロンは不要です。
Parent: 103  reply: 105 返信 編集 削除

[105] がんばります

user: sami | created: 2003-02-07 02:25
ありがとうございます。
自分で試してみます!
Parent: 104  reply: 106 返信 編集 削除

[106] うーん・・・

user: sami | created: 2003-02-07 09:59
if($usr){
header("Location: http://localhost/so/ninsyo/Top.html");
}else{
print "認証NO";
}

このようにして実行してみたのですが、
以下のようなエラー表示が返ってきました。


Warning: Cannot add header information - headers already sent by (output started at c:\apache group\apache\htdocs\sotukentest\ninsyo\sano.php:14) in c:\apache group\apache\htdocs\sotukentest\ninsyo\sano.php on line 29

どこか間違っていますか??
Parent: 105  reply: 110 返信 編集 削除

[110] Warning: の原因

user: ゆうじ | created: 2003-02-07 11:39
先ず、記事[100]で私が示したソースは、
if?else? の関係が反転しておりました。
混乱をまねいてしまい申し訳ありませんでした。
正しくは、記事[106]で示された通りです。


さて、本題です。

まず、header("Location:・・・"); の次の行に、
exit(); を書き加えてください。
すみません。説明不足で・・・。

それから、PHPマニュアルに次のようなことが書かれています。
このあたりが Warning: の原因では無いでしょうか。

「header() 関数は、通 常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の出 力の前にコールする必要があることです。」(PHPマニュアルより抜粋)

▼参考・PHPマニュアル・header
http://www.php.net/manual/ja/function.header.php
Parent: 106  reply: 111 返信 編集 削除

[111] 質問ばかりでごめんなさい。

user: sami | created: 2003-02-07 13:12
>「header() 関数は、通 常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の出力の前にコールする必要があることです。」(PHPマニュアルより抜粋)

とありますが、

>すべての実際の出力の前にコールする必要があることです。

↑どう言う意味なのでしょう??
Parent: 110  reply: 113 返信 編集 削除

[113] header() よりも前に記述できないもの

user: ゆうじ | created: 2003-02-07 14:01
言い換えると、
header() 関数よりも前には、
何も出力してはいけない、
何か出力する関数は記述できないってことになりますね。

例)
print() や echo()などの表示関数
include()、require() include_once()、require_once() などの外部ファイルのインクルード

これらの関数や制御構造は、header() 関数よりも前には書けません。(実体験済み)
また、上記以外にも書いてはいけない関数があるかもしれません。
勉強不足で申し訳ありません。

今、
PHP-ML全文検索で「header」を検索すると
関係ありそうな記事が出てましたよ。
▼PHP-ML全文検索
http://ns1.php.gr.jp/search.html
Parent: 111  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 908 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑