お世話になります。

このたび、php/MySQLを使用したID/PWによる
ログイン認証のシステムを開発しようとしています。
仕様としては1時間の自動ログイン機能付きです。
(1時間クッキーを有効にする)

ネット各所で調べてみると
良く巷のWebやブログで紹介されているものは、
盗聴+クッキーの改変で容易に突破されそうに思います。

良く例にある、クッキーにID/PWを入れるものですが
これでは盗聴とクッキー改変には耐えられそうもありません。
また非常に危険に思っています。

またPOSTしたID/PWをcrypt等で暗号化しても、
結局は暗号化したデータを盗聴されたら終わりな気がします。

何か良い仕組みがありましたら
お教え願えれば光栄です。

よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>それともフォーム送信後に


>いちいち使用したセッション変数のみを
>一つずつunset($_SESSION['hoge']);する必要があるのでしょうか?
それが面倒だというなら、$_SESSIONに配列で放り込んでおけば?

$_SESSION['hoge']=array('zip'='000-0000','tel'='090-0000-0000','name'='山田 太郎',
'address'='東京都港区○○1-1-1'・・・・・・・・・・・);

~~~~~~~~

unset($_SESSION['hoge']);
データが1000種類あっても、一発です。

もっとも、送信フォームの内容のようなものをSESSIONに放り込むなんて事、普通はしませんけど。

自分自身にPOSTして、冒頭でPOSTか否かで送信処理か、送信フォームの表示かを判定(さらに、ワンタイムチケットでも設定しておけばなお良し)。
送信内容のエラーチェックをして(必須項目が入力されていないなど)、オールOKなら『送信しました』ページにリダイレクト、ダメならそのまま送信フォームを表示(その際にエラーメッセージを表示する)ってな感じですかね。

適当だけど、以下のような感じかな。
テストもしてないし、エラー処理もXSS対策も入れてないけど。

<?php
$errors=array();
$hoge='';
$fuga='';

if (strtolower($_SERVER['REQUEST_METHOD'])=='post'){
if ($_POST['hoge']==''){
$errors['hoge_is_null']='HOGEが入力されていません';
}else{
$hoge=$_POST['hoge'];
}
if ($_POST['fuga']==''){
$errors['fuga_is_null']='FUGAが入力されていません';
}else{
$fuga=$_POST['fuga'];
}

if (0==count($errors)){
//送信処理

//送信完了ページにリダイレクト
header("Location: ./send_complete.php");
}
}
?>
<html>
~~~
<body>
<form action="" method="post"><!--actionを空白にすることで、自分自身に送信-->
<input type="text" name="hoge" value="<?php echo $hoge;?>" />
<?php if (isset($errors['hoge_is_null'])){echo $errors['hoge_is_null'];}?>
<input type="text" name="fuga" value="<?php echo $fuga;?>" />
<?php if (isset($errors['fuga_is_null'])){echo $errors['fuga_is_null'];}?>
<input type="submit" value="送信" />
</form>
</body>
</html>
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
なるほど!そのような方法があったのですね!

私が入門時に先輩から指導を受けた制作方法としては
-----------------------------------------------------
index.php...フォームページ(入力確認含む)
ses_index.php...入力チェック~送信・DB入力処理
index_end.php...入力完了画面
-----------------------------------------------------
の三部構成で制作を進め、
index.phpからses_index.phpへPOSTした際に

$_SESSION['hoge'] = $_POST['hoge'];

とPOSTした変数をセッションに格納し、
入力チェックに引っ掛かった変数については、

include("index.php");

でindex.phpにエラー内容を表示させて
入力を済ませていたフォームは

value = "<?php print($_SESSION['hoge']); ?>

で入力済みの値を表示させるという構造でした。

これが当たり前になっていたために
余り他の方法を模索しようとも思っていませんでした。

もう少し、色々と効率的な方法を
模索して見たいと思います。

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

お礼日時:2011/11/03 20:21

前の方も聞かれてますがSSLなんですか?


それであれば、盗聴に関してはそこまで意識する必要もなさそうな・・・
もちろん万全ではありませんが、そんな簡単に解析されるものではないですから

で、1時間の自動ログインというのはブラウザを閉じても有効なんですか?
(ブラウザって前提で聞いてますけど・・・)

もしそうならcookie以外には識別不能になるので、cookieを使う必要はあると思います。
ただし、cookieにIDやらパスワードを入れるのは論外です。

やるのであれば、DBを使うようなので「ログイン中テーブル」のようなものをつくればよいのではないでしょうか。
ログイン認証を通過した時点でsession_idのような推測されないランダムな文字列をDBにINSERT。
それと同時にcookieにも同じ値をセットすれば認証済みという判定は出来ると思います。

よりデリケートにやるのであれば、キーと値のペアをどちらもランダムな値で持つのもいいと思いますし、通信のたびに値を書き換えるワンタイムトークンのような使い方もよいかもしれません。

他の方も回答されているとおり、cookieの生存時間だけではなく、「ログイン中テーブル」にデータをINSERT(UPDATE)した時間を持たせればそれで判定もできます。

> 本題の質問とは外れてしまいますが、ログインチェック用のセッションとその他のフォーム用のセッションに分けて使用する方法はありませんでしょうか?
>
> それともフォーム送信後にいちいち使用したセッション変数のみを一つずつunset($_SESSION['hoge']);する必要があるのでしょうか?
>
> もしそのようなことに関する情報がありましたら
お教え願えれば光栄です。

SESSIONはそれなりに奥が深かったりもしますが、そんなにとっつきにくいものではないと思います。
よっぽどcookieよりも扱いやすいと私は思います。

$tmp = $_SESSION[login];
session_destroy();
$_SESSION[login] = $tmp;

これじゃだめですか?というか $_SESSIONすべてを破棄する必要がないなら連想配列でわけるだけで済むと思いますが・・・

> またPOSTしたID/PWをcrypt等で暗号化しても、結局は暗号化したデータを盗聴されたら終わりな気がします。

復号される前提の暗号はどこまで行っても安全ではないですよ。(不可逆でもそうですけどね)
ある程度のセキュリティは保つべきですが、終りのない世界なので・・・
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
> で、1時間の自動ログインというのはブラウザを閉じても有効なんですか?
これはブラウザを閉じても有効と言うことになります。

お教えいただいた情報と、自分で調べた情報を参考に
初回ログイン時にランダム文字列のキーを作成し、それをDBに格納、
それをクッキーにも持たせて認証という方法で制作しました。
そのキーはブラウザを閉じてからの自動ログイン時に
再度書き換えられるように設定しました。
これでかなりパフォーマンスは上がったと思っています。

また問題になっていたセッションの問題ですが、

$tmp = $_SESSION[login];
session_destroy();
$_SESSION[login] = $tmp;

上記の方法で問題なく対応できています。

色々とご丁寧にありがとうございました。
奥の深い部分でこれがゴールと言うものはないと思いますが、
日々精進を続けてまいります。

お礼日時:2011/11/03 20:10

>盗聴+クッキーの改変で容易に突破されそう



まずはhttpsで処理することは前提でよいですね?
クッキーの生存期間で時間を区切るのはNGです。
1時間と決めるのであれば、サーバー側でDBなりでユーザー管理が必須でしょう。
そのうえで、各ページにログイン情報のチェッカーを埋め込めば
最低限時間+ユーザーを指定したログインシステムは構築できそうです。
ただセッションハイジャックの問題などもあるので、
完璧にやりたいということであれば、より厳密な個体を判断するような
仕組みを組み込まなくてはいけません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
当初はセッションによる管理を考えていましたが、
私のセッションに関する知識が乏しいため、
下記のような問題により、
ログイン認証ではセッションを使用していません。

ログインチェックで
例えば$_SESSION['login']に
ログインチェック関係の変数を入れるとします。

これを使用したプログラムを全てのページに埋め込めば
確かにログインチェックができるかと思います。

ところがログイン後のページの各所で
登録フォームや送信フォームが多数あり、
その中で多数のセッション変数を使用しています。

それらのフォームの送信完了後に、
そのフォームで使用したセッション変数のみをクリアしたいのですが、
session_unsetやsession_destroyなどを使用すると、
ログインチェック用のセッション変数までクリアしてしまうため、
この辺りがうまくいかずにログイン認証にはセッションを使用していませんでした。

本題の質問とは外れてしまいますが、
ログインチェック用のセッションとその他のフォーム用のセッションに
分けて使用する方法はありませんでしょうか?

それともフォーム送信後に
いちいち使用したセッション変数のみを
一つずつunset($_SESSION['hoge']);する必要があるのでしょうか?

もしそのようなことに関する情報がありましたら
お教え願えれば光栄です。

ちなみに、ID/PWはcryptで暗号化して、
DBに格納されており、ログイン時のみ比較を行っています。

お礼日時:2011/11/02 22:08

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q多重ログインを禁止にしたいのですが…。

多重ログインを禁止にしたいのですが…。

C♯、ASP.NET、DBはPostgresSQLという環境です。

WEBを作っているのですが、ログイン周りで悩んでいるので教えてください。
要件としては、多重ログインは許可しない、同一IDでログインに成功した場合、
先に入ったほうは強制ログアウトという話です。
たとえば、ユーザAがログインした後、別の端末からまたユーザAでログインすると、
最初にログインしたほうはログアウト状態になります。

ログイン情報を管理するテーブルを用意して、ログイン成功時に、そのユーザが
ログイン中のステータスだったら…とか考えてみたんですが、強制ログアウトへ
もって行く仕組みが思いつかず…。

何か手がかりや、参考サイト、またはサンプルなどアドバイスいただけないでしょうか。
宜しくお願いします。

Aベストアンサー

クッキーにログイン時刻を書き込めばいけると思いますよ。

-----------------------
15:00 A端末でユーザーIDを"hoge"でログイン
→A端末クッキーにログイン時刻15:00と書き込み
→DBに"hoge"のログイン時刻15:00と書き込み
-----------------------

A端末で画面を開く際にクッキーのログイン時刻(15:00)="hoge"のDBログイン時刻(15:00)を比較して同一なので操作継続

-----------------------
15:30 B端末でユーザーIDを"hoge"でログイン
→B端末クッキーにログイン時刻15:30と書き込み
→DBに"hoge"のログイン時刻15:30と書き込み
-----------------------

A端末で画面を開く際にクッキーのログイン時刻(15:00)="hoge"のDBログイン時刻(15:30)を比較してDBログイン時刻が15:30へ更新されていて一致しないのでログアウト処理実行

B端末で画面を開く際にクッキーのログイン時刻(15:30)="hoge"のDBログイン時刻(15:30)を比較して同一なので操作継続
-----------------------
というロジックを今思いつきました。
参考程度にどうぞ

クッキーにログイン時刻を書き込めばいけると思いますよ。

-----------------------
15:00 A端末でユーザーIDを"hoge"でログイン
→A端末クッキーにログイン時刻15:00と書き込み
→DBに"hoge"のログイン時刻15:00と書き込み
-----------------------

A端末で画面を開く際にクッキーのログイン時刻(15:00)="hoge"のDBログイン時刻(15:00)を比較して同一なので操作継続

-----------------------
15:30 B端末でユーザーIDを"hoge"でログイン
→B端末クッキーにログイン時刻15:30と書き込み
→DBに"ho...続きを読む

Q会員専用ページへのログインで、ログイン認証ページでメールアドレスとパス

会員専用ページへのログインで、ログイン認証ページでメールアドレスとパスワードを入力し、ログインをすると1度目は入れず、トップページに飛ばされ、再度ログイン認証ページに戻り、メールアドレスとパスワードを入力しログインすると2度目以降は入れる現象が起きています。


下記の自動的にログイン(php)のチェックボックスを導入する前は問題なくログインできていましたが、今回下記のチェックボックスをつけたことにより、上記の現象が発生しています。
http://oshiete.goo.ne.jp/qa/6100117.html

システム会社はかなり苦戦しているようなのですが、上記の素人が言う内容で、システム会社にアドバイスできることがあれば、教えていただけませんでしょうか?

Aベストアンサー

オートログイン機能をどのように実装したのかがわからないのでなんとも言えませんが、
前の質問の回答のようにCookieに記述されている内容を見て、適時リダイレクト等行っているのであれば、
Cookieを読みに行く処理と、ログインIDとパスをチェックする処理がバッティングしているのかもしれませんね。

------------------------------
入力されたID/PASSをチェック

正しかったのでSESSIONを発行

会員向けのTOPページへリダイレクト処理
-------------------------------

というのがまず普通のログインページですよね。
このページに、「次回自動的にログインする」とかボタンを付けた場合、

--------------------------------
入力されたID/PASSをチェックし、「自動ログインのチェック」を確認

正しかったのでSESSIONを発行、「自動ログインのチェック」が外れていたので、自動ログイン用Cookieを削除

会員向けのTOPページへリダイレクト処理
--------------------------------

という流れになりますよね。

その際、「会員向けTOPページへリダイレクト処理」を行う部分、
ここは、当然、SESSIONが発行されていない人が、会員向けTOPページのURLを叩いたら、
ログイン画面にリダイレクトさせる処理が必要ですよね。

「自動ログイン」がなければ、単純にSESSIONが発行されているかを見ればよいのですが、
それがある場合、
「SESSIONが発行されているか」+「SESSIONが発行されていないけど自動ログイン用のCookieが存在するか」
というチェックをかける事になるわけですが、
そこら辺の振り分け時に優先順位とかミスって不具合出してる、とかはあるかもしれないですね。


そこら辺を意識しつつ、チェックボックスがONの時どうなるか、OFFの時どうなるかとか
適当にまとめてみてはいかがでしょう。

正直、システム会社さんにも面子とかもあると思いますし、素人の意見を聞いたり採用したりというのもなかなか難しいこともあるのかもしれないなぁと思いますので、
アドバイスというより、
簡単にどの様な手順で動作しているのか、とか聞いてみるのもいいかもしれませんね。
大体、聞かれたことに答えてみたりすると、何か間違ってるところをふと思い出したりするものですし。

オートログイン機能をどのように実装したのかがわからないのでなんとも言えませんが、
前の質問の回答のようにCookieに記述されている内容を見て、適時リダイレクト等行っているのであれば、
Cookieを読みに行く処理と、ログインIDとパスをチェックする処理がバッティングしているのかもしれませんね。

------------------------------
入力されたID/PASSをチェック

正しかったのでSESSIONを発行

会員向けのTOPページへリダイレクト処理
-------------------------------

というのがまず普通のログインペー...続きを読む

Qログアウト後の再ログインができない

ユーザID、ログインパスワ-ドログイン後、合言葉を後で設定で一度目はログインできましたが、ログアウトして再度ログインしようとしたとき、又前回と同様に不正な操作が行われました。
ログインID、パスワ-ドは間違っていないことを確認しました。すみませんがもう一度教えてください。
また、ログアウトを忘れてイ-バンクのサイトを終了した場合、どのようにすれば、ログインできるでしょうか?

Aベストアンサー

どれくらいはわからないのですが
イーバンクは正しくログアウトしないと
一定期間ログインできないはずですので
しばらくまってからログインしてください

Q【PHP + MySQL】ログインの

ただいまPHP + MySQLにて、会員ログインシステムを導入した会員サイトを運営しておりますが、ログイン時にまったく別のユーザーでログインしてしまうという現象がおきて困っております。

たとえば、Aというユーザーが自分のIDとパスワードを使ってログインすると、ごく稀にBというユーザーでログインされてしまうということです。何かの間違いかと思い、会員データの編集画面を表示してもBの会員情報が表示されてしまい、ログアウトするまで、Bというユーザーでログインされているという状況です。

ID、パスワードの重複かと思いそちらもしらべましたが、
AはID、パスワードともに数字のみ
BはIDが英数字 パスワードが数字
になっており、重複や入力ミスではないようです。

ちなみにWORDPRESSを用いてサイト構築を行っています。
ログインの処理自体はWordpressnのプラグインなどは用いていません。
一度キャッシュを制御するプラグインを用いて、ログインした状態のページをキャッシュしてしまう事はありましたが、そちらは今回とは関係ないのではないかと思っております。
また、現在そのプラグインは使用しておりません。

ログイン処理などを何度も見直しましたが、
間違ってログインされるような事は起こりえないと思うのですが、
何かサーバーの問題などでこのような事は起こるのでしょうか?

大変困っておりまして、お答えいただけるととてもありがたいです

ただいまPHP + MySQLにて、会員ログインシステムを導入した会員サイトを運営しておりますが、ログイン時にまったく別のユーザーでログインしてしまうという現象がおきて困っております。

たとえば、Aというユーザーが自分のIDとパスワードを使ってログインすると、ごく稀にBというユーザーでログインされてしまうということです。何かの間違いかと思い、会員データの編集画面を表示してもBの会員情報が表示されてしまい、ログアウトするまで、Bというユーザーでログインされているという状況です。

ID...続きを読む

Aベストアンサー

おそらく、ログイン処理部ではなく、セッション処理部の問題でしょう。

質問者さんがどのように作られているのかはわかりませんので、ある程度想像になりますが、
おそらく、
・最初に、ユーザーIDとパスワードを入れて認証
・セッション管理で、ユーザー認証成功したらその情報を入れる
・セッション情報に「認証成功」という情報が入っていたら、認証済として、その会員のデータを表示する
といった仕組みになっているかと思います。

ここで、もし、異なるユーザーが同じセッションを共有してしまっていたら、
セッション情報が他人のユーザーIDで認証済ということになってますから、「別のユーザーの情報が見れる」ということになってしまいます。


あとは、セッション管理をどうやっているのかによって話は変わってきます。
PHPのセッション管理関数を使ってるなら、まず重複することはありませんが、
独自の方法でセッション管理しているのなら、その部分で動作が一番あやしいかと思います。

QXPでユーザーを新規に作成後、Administratorでログインでき

XPでユーザーを新規に作成後、Administratorでログインできない

「コンピュータの管理」で「test」というユーザーを新規に作成しました

再起動後、ログイン画面で、ログインするユーザを選択し、ログインするのかと思いましたが、
自動でtestユーザーでログインするようになり、Administratorでログインができなくなりました。

Administratorでログインする方法を教えてください。

Aベストアンサー

「XP Administrator ログイン」、「XP Administrator 表示」などで検索すればヒットします。

一時的にAdminでログインしたい。
http://allabout.co.jp/computer/windows/closeup/CU20051108B/

ようこそ画面にAdminを表示したい。(レジストリをいじる)
http://trendy.nikkeibp.co.jp/article/tec/winxp/20021004/102171/

あと、「ファイル名を指定して実行」で"control userpasswords2"と入力して実行すれば、Windows2000まで使用していたアカウント設定画面が出るので、XPのアカウント設定画面よりも詳しく設定できます。

QPHPのログイン認証管理について

PHPのログインシステムを開発することになったのですが、一般的に
どういった手法がとられているのかお伺いしたくこちらに書き込ませて
いただきました。

私が現在実装しているものは、下記となります。

■ログインフォームからの入力値と照合させ、通った場合、下記の
  ようにsession_idをセッションに保存

  $_SESSION['authentication'] = sha1(session_id());

■ログイン後はDBとの通信はせず、上記で保存されたセッション
  情報を照合させることにより、認証させる。

if($_SESSION['authentication'] == sha1(session_id())){
  認証成功処理
}
else{
  認証エラー処理
}

なにか足りない点や、セキュリティ等の考え方から根本的に誤りが
ある場合は、ご指摘いただけますと幸いです。

よろしくお願いいたします。

Aベストアンサー

何もフレームワークを使用しない環境でしたら、
ログイン後にログインユーザー情報をセッションに保存して、
サーバーにアクセスする度にセッション内にユーザー情報があるか、
確認するのが一般的ではないでしょうか。

ちなみにセッション内にセッションIDを保存しても意味がないと思います。

Qログインしたら他からログインできないようにしたい

PHP+MySQLで会員サイトを作っています。

1. 誰か一人がログインしていたら、そのログイン会員と同じIDとパスワードでログインしようとするとログインできないようにするか、元のログインしていた人が強制的にログアウトするようにしたい。

2. 一人のユーザーが複数アカウントを作って会員サイトを使いたい放題にするのを阻止したい。
そのため、「PC1台からは必ず1ユーザーのみしかログインできないようにしたい」です。
(複数PCを使われたら仕方ないかもしれません・・・)

よく銀行サイトのようにログイン中に他のブラウザや端末からログインしようとすると「すでにログイン中です。ログインし直しますか?」のようになりますが、1.はこんな感じを考えています。

仕組みとしてはどのようにするのが良いのでしょうか?

1. ログイン時にセッションIDを作り、データベースにそのセッションIDとIPアドレスを記憶しておいて、Web上で何か操作するたびにブラウザ側のセッションIDとデータベース側のセッションIDを比べて同じなら操作を実行し、違うなら操作できないようにする。

2. ログイン中に別のブラウザからログインしようとすると、データベース側に保存されているセッションIDが違うのでログインできないようにする。

3. 同じIPアドレスですでにログイン中の場合、同じPCからは他のアカウントでログインできないようにする。

こんな感じでしょうか?
何か問題点やそもそもこの仕組は間違っていて常套手段があるなどありましたらお教えください。
なんとなく、IPアドレスのチェックはWiMAXなどは時間とともに変わったりするのであまり良くはないかもしれません。

どうぞよろしくお願い致します。

PHP+MySQLで会員サイトを作っています。

1. 誰か一人がログインしていたら、そのログイン会員と同じIDとパスワードでログインしようとするとログインできないようにするか、元のログインしていた人が強制的にログアウトするようにしたい。

2. 一人のユーザーが複数アカウントを作って会員サイトを使いたい放題にするのを阻止したい。
そのため、「PC1台からは必ず1ユーザーのみしかログインできないようにしたい」です。
(複数PCを使われたら仕方ないかもしれません・・・)

よく銀行サイトのようにログイン中...続きを読む

Aベストアンサー

何件か参考になるQ&Aがありました。

【Google検索結果】
https://www.google.co.jp/search?q=php+%E5%A4%9A%E9%87%8D%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3+%E9%98%B2%E6%AD%A2

「ログアウトせず、ブラウザを閉じたりするとログイン情報がが残り、最終アクセス日時からタイムアウト時間が経過するまでログインできません。」

これは大問題です。基本的に "操作出来ないようにする" という方針はやめたほうがいいです。 そうではなくて、新しくログインしようとしたときに "既存のセッションを終了させる" という方法を採ればすんなり解決できます。実際、私がやっていたネットゲームではこの方法が採られていましたww

IPアドレスに関してですが…いわゆるガラケーであれば個体識別番号というものがありましたが、現状ほとんどのデバイスではそういったものは存在せず、ユーザーに特別なソフトウェアをインストールしてもらわない限り、IPアドレスで判別するしかありません。これは妥協すべき点だと思います。

逆に…ガラケーにも対応させるのであれば、IPアドレスだけでのチェックは不十分です。何故ならば、複数のユーザーが同一のプロキシサーバーを経由してインターネットにアクセスするため、ユーザーが違ってもIPアドレスが一致するケースが大いにあるからです。個体識別番号が環境変数に存在しているかどうかを調べ、存在していればそれを使用し、存在しないならばIPアドレスを使用する、といった工夫が必要になります。


今回の件とは直接関係ないですが参考にどうぞ↓

Qiita - PHPでデータベースに接続するときのまとめ
http://qiita.com/mpyw/items/b00b72c5c95aac573b71

何件か参考になるQ&Aがありました。

【Google検索結果】
https://www.google.co.jp/search?q=php+%E5%A4%9A%E9%87%8D%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3+%E9%98%B2%E6%AD%A2

「ログアウトせず、ブラウザを閉じたりするとログイン情報がが残り、最終アクセス日時からタイムアウト時間が経過するまでログインできません。」

これは大問題です。基本的に "操作出来ないようにする" という方針はやめたほうがいいです。 そうではなくて、新しくログインしようとしたときに "既存のセッションを終了させる" とい...続きを読む

QPHPでのログイン機能でのメール認証

教則本のログイン機能実装では、MySQLで1つのテーブルを作って、画面と対応させて、新規登録より、メールとパスワードを登録して、ログインするシンプルなのが多いのですが、実際にサイトでは、新規登録画面より、メールアドレスを入力し、そのメールアドレスに認証用のURLが送られてきて、そこから登録する場合がほとんどです。
このようにメールで認証する為には、どのうよにプログラムすればよいのでしょうか? 抽象的でもよいので教えてください。よろしくお願いします。
また、参考になるwebサイトがありましたら教えてください。よろしくお願いします。

Aベストアンサー

>メールで認証する為には、どのうよにプログラムすればよいのでしょうか?

サーバー自体のメールサーバー機能もしくは外部のメールサーバーへのアクセスを担保する必要があります。
あとは仮IDに対して仮キーをRDB側に登録しておき、突合して本登録すればよいでしょう
また有効期間を設定しておいて定期的にゴミデータをクリアする必要はあります

QSkypeのログイン状態について

最新バージョンのスカイプを使い始めました。

以下、箇条書きになってしまいますがSkypeに詳しい方お願いします。

1.自分のログイン状態をリストの人に対して個別に変える事は出来ませんよね?
  マイクロソフトメッセンジャーなどでは出来ましたけど。(外部ツールなどで可能?)

2.前回のログイン状態でログインしてしまうのでしょうか?
  前回ログアウトする際に「取り込み中」なら次回ログインした時には「取り込み中」でログイン、
  「ログイン状態を隠す」に変更しても、一瞬相手にはログインしたことが分かってしまう?

3.複数のアカウントを所有している場合は、それぞれのIDの最後の状態でログインしてしまう。
  

4.取り込み中の人にチャットを送った場合、相手に届くのは「取り込み中」か「オフライン」以外
  である。「ログイン状態を隠す」では届く。

よろしくお願いします

Aベストアンサー

> 1.自分のログイン状態をリストの人に対して個別に変える事は出来ませんよね?

できません。
Skype名を複数登録して使い分けるしかないですね。Skypeを多重起動しれば、同時に複数のSkype名でログインする事もできます。

> 2.前回のログイン状態でログインしてしまうのでしょうか?
>   前回ログアウトする際に「取り込み中」なら次回ログインした時には「取り込み中」でログイン、
>   「ログイン状態を隠す」に変更しても、一瞬相手にはログインしたことが分かってしまう?

取り込み中の表示は、ログインしてから手動で状態を変更しないと表示できません。
従って、取り込み中のままパソコンの電源を落とした(休止状態など)場合にその様になりますね。

> 3.複数のアカウントを所有している場合は、それぞれのIDの最後の状態でログインしてしまう。

ログインしたままパソコンの電源を切った(休止状態など)場合の話ですね。

> 4.取り込み中の人にチャットを送った場合、相手に届くのは「取り込み中」か「オフライン」以外
  である。「ログイン状態を隠す」では届く。

そうなりますね。

> 1.自分のログイン状態をリストの人に対して個別に変える事は出来ませんよね?

できません。
Skype名を複数登録して使い分けるしかないですね。Skypeを多重起動しれば、同時に複数のSkype名でログインする事もできます。

> 2.前回のログイン状態でログインしてしまうのでしょうか?
>   前回ログアウトする際に「取り込み中」なら次回ログインした時には「取り込み中」でログイン、
>   「ログイン状態を隠す」に変更しても、一瞬相手にはログインしたことが分かってしまう?

取り込み中の表示は、ロ...続きを読む

QPHPでMYSQLを使ったログイン

PHPでMYSQLを使いってログインフォームを作ったのですが
画像の上の方ようなテーブルを作りPHP側のログインフォームでログインしてもらい
画像のusernameの[S]でログインしたらIDとFirst NameとLast NameをPHPで
画像の下の方のように表示するようにしたいのですが

echo "<tr><th>ID</th><th>USERNAME</th><th>First Name</th><th>Last Name</th></tr>";
$st = ("select * from kd3musers where username='$username'");
(この間)
echo "<tr><td>$id</td><td>$username</td><td>$first_name</td><td>$last_name</td></tr>";

(この間)の中身がわかりません。
別の書き方や、わかる方がいましたらよろしくお願いします

Aベストアンサー

PHPでデータベースに接続するときのまとめ
http://qiita.com/mpyw/items/b00b72c5c95aac573b71

【サンプルコード】

<?php

function h($str) {
return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
}

$username = 's';

try {

$dsn = 'mysql:dbname=test;host=localhost;charset=utf8';
$dbuser = 'root';
$dbpass = '';
$options = array(
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
);

$pdo = new PDO($dsn, $dbuser, $dbpass, $options);
$stmt = $pdo->prepare('SELECT * FROM kd3musers WHERE username = ?');
$stmt->execute($username);

} catch (PDOException $e) { }

header('Content-Type: text/html; charset=utf-8');

?>
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<?php if (isset($e)): ?>
<p>Error: <?php echo h($e->getMessage()) ?></p>
<?php else: ?>
<table border="1">
<tr>
<th>ID</th>
<th>USERNAME</th>
<th>First Name</th>
<th>Last Name</th>
</tr>
<?php foreach ($stmt as $row): ?>
<tr>
<td><?php echo h($row['id']); ?></td>
<td><?php echo h($row['username']); ?></td>
<td><?php echo h($row['first_name']); ?></td>
<td><?php echo h($row['last_name']); ?></td>
</tr>
<?php endforeach; ?>
</table>
<?php endif; ?>
</body>
</html>

PHPでデータベースに接続するときのまとめ
http://qiita.com/mpyw/items/b00b72c5c95aac573b71

【サンプルコード】

<?php

function h($str) {
return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
}

$username = 's';

try {

$dsn = 'mysql:dbname=test;host=localhost;charset=utf8';
$dbuser = 'root';
$dbpass = '';
$options = array(
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULAT...続きを読む


人気Q&Aランキング

おすすめ情報