1

私はPHPを学んでおり、可能であれば少し助けが必要です.

私は単純なものが欠けていることを知っていますが、それを理解することはできません.ユーザー名とパスワードを入力したばかりのページから、homepage.php. このスクリプトはセッション名を生成する必要がありますが、それを付けるべきかどうかはわかりません。

次に、ユーザーが表示できるようにページをロードする前に、ユーザー名とパスワードが正しいことを確認するために、PHP の小さな部分が必要です。これは理にかなっていますか?

<?php 
$host="localhost"; // Host name
$username="root"; // username
$password=""; // password
$db_name="gotswapuser"; // Database name
$tbl_name="users"; // Table name


mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");


$myusername=mysql_real_escape_string($_POST['myusername']);
$mypassword=mysql_real_escape_string($_POST['mypassword']);

$sql="SELECT * FROM $tbl_name WHERE name='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){
    header("location:homepage.php");
} else {
  header("location:subscriptionpage.php");
}
?>
4

4 に答える 4

2

MySQL コマンドは減価償却されています。Mysqli または PDO を検討する必要がありますが、それ以外は if 句内でセッションを開始する必要があります

         if(found){
             session_start();
             $_SESSION['username'] = $myusername;
              redirect user
           }
          rest of code.....
于 2012-10-27T22:02:28.117 に答える
2

データベース アクセスには mysql ではなくPDOを使用する必要があります。Mysql は廃止される過程にあり、良い習慣ではありません。

ただし、質問に答えるには:

あなたが持っているコードを使用して、「成功した」ログインに数行を追加したいだけです:

 if($count==1) {  
     session_start();  
     $_SESSION["logged_in"] = 1;  
     header("location:homepage.php");  
 } else {  
   header("location:subscriptionpage.php");  
 }  

次に、ユーザーがログインするページで、次のようにします。

 session_start();
 if ( ! isset($_SESSION["logged_in"]) || ! $_SESSION["logged_in"]) {
      header("location:signin.php");
      exit;
 }
于 2012-10-27T22:01:24.253 に答える
0

まず、セッションを開始する必要があります。下記参照:

session_start();

セッションを開始したら、$_SESSION スーパーグローバルを使用して変数を保存および取得できます。下記参照:

$_SESSION['me'] = 'John Doe';
$_SESSION['you'] = 'Jane Doe';
$_SESSION['us'] = 'Doe Family';

echo $_SESSION['us'];

常に session_start(); を使用するようにしてください。これらの変数にアクセスする前に。PHP.net の詳細については、こちらをご覧ください: http://php.net/manual/en/function.session-start.php

session_start() が実行されると、session_id() 関数を使用してセッション ID を簡単に取得できます。session_start() を使用していない場合は、null が返されます。下記参照:

echo session_id(); // Returns session ID.

お役に立てれば!あなたのプロジェクトで頑張ってください。

于 2012-10-27T22:01:07.893 に答える
0

あなたはほとんどそこにいます。必要なことは次のとおりです。1、セッションが開始されていることを確認しますsession_start(); 。2、ユーザー名のセッション変数を作成します。$_SESSION['username'] = $result[0]['username'];

if($count==1){
    $_SESSION['username'] = $result[0]['username'];
    header("location:homepage.php");
} else {
  header("location:subscriptionpage.php");
}

提案するいくつかのこと。mysql ステートメントを呼び出した後、セッションのユーザー名を取り込むことができるように、行またはオブジェクトをフェッチします。

于 2012-10-27T22:01:30.727 に答える