2016-04-24 17 views
0

ユーザーがログインしていないWebサイトを作成しようとしています。私はそれを働かせましたが、私が理解できないように見えるのは、PHPやHTMLに異なるページからユーザー名を保存させる方法です。ユーザーがログインし、特定のユーザーに基づいて、私のウェブサイトは過去に完了した別のエクササイズを表示するだけでなく、将来的にエクササイズを追加できるようにします。私のウェブサイトでは、PHP、HTML、MySQLを使用してデータベースの異なるテーブルを検索し、結果を出力します。ユーザがウェブサイトにログインし、ユーザ名情報をPHP/HTMLに保存する方法を教えてください。

私はこのようなPHPのセッションなど、さまざまな解決策を試しましたが、うまくいきませんでした。各PHPページが最初にこれを持っている:

さらに下

session_start();

、その後、私が持っている:

$_SESSION["Username"] = $_POST['Username']; 

私はまた、HTMLの隠し入力値を試してみましたが、それは動作していないようでしたかなり正しい。各HTMLページには、このあります

<input type="hidden" name="Username" value="Cbartowski"> 

を私は私のWebページには、ユーザー名を保存し、私のページ全体でそのデータを使用していしようとする多くの方法を試してみましたが、私はすべての運を持っていませんでした。 PHPでのセッションが進むべきだろうか?またはHTMLの隠れた入力?それとも全く別のもの?

ご協力いただければ幸いです!

+0

'$ _SESSION'が動作するはずのに役立ちますか? – Panda

+0

あなたは書いた方法でそれをしました。 PHPに送られるHTML入力が必要です。たぶんあなたはあなたのページに(データを送信していなくても)すべての呼び出しの$ _SESSION変数を書いているので、変数値は常に空です(ヌル値で上書きされます) –

+0

セッションは間違いなく最も簡単な方法ですページ間のユーザー状態を維持します。この情報を送信するためにPOSTを使用しないすべてのページで '$ _SESSION [" Username "] = $ _POST ['Username'];'を使うと、セッション変数をduff/null情報で上書きするだけで、最初は – RamRaider

答えて

0

HTMLの非表示入力は、ブラウザのソースアクションを表示することで表示されるため、適切な方法ではありません。 あなたのセッションにはshureセッションファイルが保存されており、セッションIDはあなたのリンクに含まれていますか? ユーザーがリンクをクリックするたびにセッションが新しいセッションを開始しない場合、 リンクをクリックするたびに一時フォルダに一見があります。新しいセッションファイルが作成された場合は、セッションIDを忘れているためです。 それはおそらく問題です。

0
  • フォームの方法を確認してください:POST
  • は、使用して変数を確認する必要があります:

var_dump($_POST['Username']);

0

ので経験から、その優れたユーザ認証を行う際にPOSTメソッドを使用します。純粋にセキュリティ上の理由から。これに加えて、PHPのセッション変数を使用することも、あるページから別のページにユーザー情報を渡すための推奨される方法です。 あなたはセッション変数にユーザー名を保存したい場合は、ここであなたが

    は、セッション変数 session_start();
  • 名を使用してセッションを開始し、あなたが $_SESSION['what-ever-you-want-to-call-it']=$what-you want to store などをしたい情報を保存
  • 従うことができますいくつかのステップがあります。 $_SESSION['Username']=$_POST['Username']。一重引用符の使用に注意してください
  • $_SESSION['Username']を呼び出す前にセッションが開始されていることをPHPスクリプトのどこにでも呼び出せるようになりました。それはsession_start();です。

注意上のコード作業をばらばらにして、個々の部分が動作することを確認。例えば、ユーザー名を提供する投稿ですか?

1

まず、ユーザー名を保存するために隠れた入力を使用することは、あなたのウェブサイトにとって重大な脅威です。 ソースコードを見れば、ユーザーのユーザー名を簡単にチェックアウトできます。

PHPセッションを使用するとここにアクセスできます。私は理解している何

はあなたがすべてのページに

$_SESSION["Username"] = $_POST["Username"]; 

を初期化していることです。さて、2つのPHPページがあると考えてください。 一つはフォーム要求handler.phpであり、他方は、ユーザーがフォームを送信したときにユーザー名がフォーム - に上記のコードを使用してセッション変数に設定されます、今表示ユーザpreferences.php

ありますrequest-handler.phpページ。

ユーザーがdisplay-user-preferences.phpページを押すと、セッション変数の値が再び設定されます。しかし、Nullがセッション変数に保存され、データベースから必要な情報を取得することができないように、このページには投稿要求がありません。

したがって、投稿リクエストを処理しているどのPHPページでも、そこのセッション変数を初期化して他のページで使用するだけです。あなたが希望

session_destroy(); 

を呼び出さない限り

セッション変数はあなたに利用できるようになり、これはなぜそれがない、:)

関連する問題