如何在PHP登录后回复客户详细信息?

时间:2015-02-28 07:37:35

标签: php

我有一个客户登录信息,客户使用电子邮件和应用程序代码登录。当客户正确登录时,它将转到PROFILE.PHP。在该配置文件中,我只需要获取并回显该客户的详细信息。

我已经尝试过这个错误了。

PROFILE.PHP

<?php
include("session.php");
$email = $_POST['email'];
$code = $_POST['code'];
$sql = mysql_query("SELECT firstname, lastname, mobileno FROM `loanapp`   WHERE code = '$code' AND email = '$email'");
while ($row = mysql_fetch_array($sql)) {
echo $row['firstname'].'<br>';
echo $row['lastname'].'<br>';
echo $row['mobileno'].'<br>';
}
?>

session.php文件

<?php
include('config.php');
session_start();
$check=$_SESSION['login_code'];
$session=mysql_query("SELECT code FROM `loanapp` WHERE code='$check' ");
$row=mysql_fetch_array($session);
$login_session=$row['code'];
if(!isset($login_session))
{
header("Location:../index.php");
}
?>

当客户正确登录时,需要回显该客户的所有细节。

3 个答案:

答案 0 :(得分:1)

我同意ByteHamster, 您的代码易受SQL注入攻击 - &gt; http://www.w3schools.com/sql/sql_injection.asp

始终使用prepare语句。 这是一个快速登录代码:

try {
        $conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);

        $conn->exec("SET CHARACTER SET utf8");      // Sets encoding UTF-8
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


        $stmt = $conn->prepare("SELECT * FROM users WHERE userID = :usr AND userPass = :pas;");
        $stmt->bindParam(':usr', $user);
        $stmt->bindParam(':pas', $pass);

        $stmt->execute();


        if($stmt->rowCount() > 0){

            echo "User Exists"; // You can retrieve the user data now


        } else {

            echo "non existant";    // wrong username or password       

        }

        $conn = null;  // Disconnect

    }

    catch(PDOException $e) {

        echo $e->getMessage();

    }

答案 1 :(得分:0)

profile.php

<?php
session_start()
include("session.php");
$email = $_POST['email'];
$code = $_POST['code'];
$sql = mysql_query("SELECT firstname, lastname, mobileno FROM `loanapp`   WHERE code = '$code' AND email = '$email'");
while ($row = mysql_fetch_array($sql)) {
  $_SESSION['firstname'] = $row['firstname'];
  $_SESSION['lastname'] = $row['lastname'];
  $_SESSION['mobileno'] = $row['mobileno'];
}
?>

然后你可以随时使用它们 例如,

<div><?php echo $_SESSION['firstname'];?></div>

答案 2 :(得分:0)

首先,我建议你不要在profile.php中启动session_start()会话,因为你已经在页面中包含了session.php,并且已经在session.php中启动了会话。 / p>

另外我建议在页面开头使用该功能,包括config.php,或者你也可以使用config.php中的会话功能。

以下是非常简单的解释代码。

<?php
// Defining variables of values
$email = $_POST['email'];
$code = $_POST['code'];

// Select the data using mysql query
$sql = mysql_query("SELECT * FROM `loanapp` WHERE code = '$code' AND email = '$email'");

// Looping to get all the data into session
while ($row = mysql_fetch_assoc($sql)) {
  $_SESSION['firstname'] = $row['firstname'];
  $_SESSION['lastname'] = $row['lastname'];
  $_SESSION['mobileno'] = $row['mobileno'];
}
?>

我在代码中做了哪些更改:

  • 根据我的上述建议删除了profile.php中的session_start()
  • 在查询中使用*,以防您需要更多详细信息 未来所以你需要用$ row添加密钥。但使用*是 建议您的表格是否有有限的字段
  • mysql_fetch_assoc()用于关联数组,以便获取数组 使用键名称字段名称,而不是任何额外的数字键
  

注意:如果您在查询中指定字段,则可以轻松创建   所有带有字段名称的会话都使用foreach循环。

我希望它也能帮助你理解概念点。