2016-05-26 3 views
0

私はphpで新しく、まだPHPでセッションを学習しています。私はログイン後にユーザープロフィールを表示したい。私はセッションを使用します。だから、ユーザーのログイン時に、ユーザーは彼女のプロフィールを見ることができます。私は試しても、まだ傾けることができます。私を助けてください。ログイン後のユーザープロファイルの表示

これは、ログインprocess.php

<?php 

    session_start(); 

     require_once("connection.php"); 

     $email = $_POST['email']; 
     $password = $_POST['password']; 
     $name = $_POST['name']; 
     $nname = $_POST['nname']; 
     $bln = $_POST['bln']; 
     $gender = $_POST['gender']; 


     $cekuser = mysql_query("SELECT * FROM user WHERE email = '$email'"); 
     $jumlah = mysql_num_rows($cekuser); 
     $hasil = mysql_fetch_array($cekuser); 


     if($jumlah == 0) { 
      echo "<script>alert('Email belum terdaftar!'); window.location = 'index.php'</script>"; 
     } else { 
      if($password > $hasil['password']) { 
      echo "<script>alert('Password Salah!'); window.location = 'index.php'</script>"; 
      } else { 

      $_SESSION['email'] = $email; 
      $_SESSION['password'] = $password; 
      $_SESSION['name'] = $name; 
      $_SESSION['nname'] = $nname;  
      $_SESSION['bln'] = $bln;  
      $_SESSION['gender'] = $gender; 

      header('location:index.php'); 
      } 
     } 
    ?> 

ですこれはあなたのif()声明に何か問題がありましたindex.phpの

<?php 

if (session_status() == PHP_SESSION_NONE || session_id() == '') { 
     session_start(); 
    } 

    require_once("connection.php"); 
    include("lib_function.php"); 
?> 

<---header---> 

<?php 
    include "connection.php"; 
    $sql = "SELECT name, email, nname, bln, gender e FROM user WHERE email = '" . $_SESSION['email'] . "'"; 
    $result = mysql_query($sql); 
    if ($result !== false) { 
     $row = mysql_fetch_array($result); 
     echo "Hello, " . $row['name'] . " <br> " . $row['nname'] ."<br> " . $row['bln'] . " <br> " . $row['gender'] . "(" . $row['email'] . ")."; 
    } else { 
     // an error has occured 
     echo mysql_error(); 
     die; 
      } 
?> 
+0

を働くことを願っていますか? –

+0

なぜwindow.locationとヘッダリダイレクトを設定しますか?パスワードチェックも同様にうまくいっています。あなたは "Else"ブロックに入るのですか? – nv1t

+0

[Little Bobby](http://bobby-tables.com/)によると*** [あなたのスクリプトはSQLインジェクション攻撃の危険にさらされています。](http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-in-php)***。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! –

答えて

1

です。それはif $password is greater than $hasil['password']を伝えていました。しかし、それは平等でなければならず、配列からそれを収集しようとしています。だから、この文は次のようになります。

Process.php:あなたは$_SESSION変数が定義されている第二のファイルについては、if $password is not equal to $jumlah["password"]

を、その収集する必要はありません。

if($password != $jumlah["password"]) { 

この行は述べていますの情報を再入力してください(リアルタイムの詳細が必要な場合を除き、削除する必要があるものだけがinclude行です。これは二重線です)。をに置き換えてください。

セッションが存在するかどうかを確認したいので、私はそれを確認するための少しの例を書いています。私は、これはPDOを使用し、

:-) MySQLは、PHPの新しいバージョンでは廃止されていることを注意し、あなたの問題を解決することを願っています

<?php 
if(session_status() == PHP_SESSION_NONE || session_id() == '') { 
    session_start(); 
} 
require_once("connection.php"); 
include("lib_function.php"); 
?> 

<---header---> 

<?php 
# Check if session 'name' exists 
if(isset($_SESSION["name"])) { 
    echo "Hello, " . $_SESSION['name'] . " <br> " . $_SESSION['nname'] ."<br> " . $_SESSION['bln'] . " <br> " . $_SESSION['gender'] . "(" . $_SESSION['email'] . ").";\ 

}else{ 
    // Do an action to show the user that there is no session. 
} 
?> 

index.phpのは次のようになります。代わりにMySQLiとしてください。また、あなたのコードがSQLXSS注射に対して脆弱に見える

0

:-) PHPで学びながら、それが

は、あなたの中にsession_start()関数の間に余分な空白行を削除するに動作するはずですあまりにもセキュリティについて学ぶことが重要ですこの

<?php 
session_start(); 

//codes here 

?> 

<?php 
if (session_status() == PHP_SESSION_NONE || session_id() == '') { 
    session_start(); 
} 


// codes here 

?> 
0

使用この

よう process.php & index.php
<?php 
$cekuser = mysql_query("SELECT * FROM user WHERE email = ".mysql_real_escape_string($email) "AND password = ".mysql_real_escape_string($password)); 
$jumlah = mysql_num_rows($cekuser); 
if($jumlah > 0) { 
    $_SESSION['email'] = $email; 
    $_SESSION['password'] = $password; 
    $_SESSION['name'] = $name; 
    $_SESSION['nname'] = $nname;  
    $_SESSION['bln'] = $bln;  
    $_SESSION['gender'] = $gender; 

    header('location:index.php'); 
} else { 
    echo "<script>alert('Password Salah!'); window.location = 'index.php'</script>"; 
} 
?> 

それはこの

のようなものを試してみてくださいmysqlの注射からあなたに

を防ぎ、それは

感謝uは$ _SESSION [ 'メール']を設定しない

+0

*** [mysql_ *関数の使用をやめる](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)*** [これらの拡張機能](http://php.net/manual/en/migration70.removed-exts-sapis.php)がPHP 7で削除されました。[prepared](http://en.wikipedia.org/wiki/Prepared_statement)について学んでください。 )[PDO](http://php.net/manual/en/pdo.prepared-statements.php)と[MySQLi](http://php.net/manual/en/mysqli.quickstart.prepared- statements.php)、PDOを使用することを検討してください。[これは本当に簡単です](http://jayblanchard.net/demystifying_php_pdo.html)。 –

+0

[Little Bobby](http://bobby-tables.com/)によると*** [あなたのスクリプトはSQLインジェクション攻撃の危険にさらされています。](http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-in-php)***。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! –

+0

潮を回して、冗長で危険なコーディングを教える/伝播させないようにします。準備ができていない文章を投稿した場合[投稿する前にこれを考慮する](http://meta.stackoverflow.com/q/344703/)。さらに[もっと貴重な答えは、正しい方法をOPに示すことから来ている](https://meta.stackoverflow.com/a/290789/1011527)。 –

関連する問題