我目前正在尝试将数据库中的用户名输入我的网页并显示它。我运气不错,这是我到目前为止的代码。应该工作,但是$ username变量是未定义的,不确定原因。
<?php
/* Database Information */
$server = '127.0.0.1';
$database = 'nicedevelopment';
$dbuser = 'root';
/* Database Connection */
$connect = mysql_connect("$server", "$dbuser")
OR die(mysql_error());
mysql_select_db("$database", $connect);
/* Escape String */
$username = mysql_real_escape_string($connect);
/* Find and get row*/
$getit = mysql_query("SELECT * FROM users WHERE username='$username'",$connect);
$row = mysql_fetch_array($getit);
$username = $row['username']
?>
<nav>
<div class="nav-wrapper">
<a href="#" class="brand-logo center"><?php echo $row['username']; ?></a>
这是我的登录页面!
<?php
require('connect.php');
session_start();
// If form submitted, insert values into the database.
if (isset($_POST['email'])){
$email = $_POST['email'];
$password = $_POST['password'];
$email = stripslashes($email);
$email = mysql_real_escape_string($email);
$password = stripslashes($password);
$password = mysql_real_escape_string($password);
//Checking is user existing in the database or not
$query = "SELECT * FROM `users` WHERE email='$email' and password='".md5($password)."'";
$result = mysql_query($query) or die(mysql_error());
$rows = mysql_num_rows($result);
if($rows==1){
$_SESSION['email'] = $email;
header("Location: dashboard.php"); // Redirect user to index.php
}else{
echo "<div class='form'><h4>Email/password is incorrect.</h4><br/>Click here to <a href='index.php'>Login</a></div>";
}
}else{
?>
答案 0 :(得分:3)
更新了答案
由于用户只能使用他们的电子邮件登录,因此您无法使用session
显示其用户名(除非您想要显示他们的电子邮件!)。你最好的选择是使用一个查询,从一个表中选择用户名,其中电子邮件等于他们用来登录的电子邮件:
<?php
$email = $_POST['email'];
$query = "SELECT * FROM users WHERE email='$email'"
$row = mysql_fetch_array($query);
$username = $row['username'];
echo $username;
?>
原始答案
根据您的查询,您尝试从数据库中选择等于$connect = mysql_connect("$server", "$dbuser")
的用户名 - 这根本没有意义。
您首先要将用户登录,如下所示:
<?php
session_start();
if(isset($_POST['submit'])) {
$_SESSION['username'] = $_POST['username'];
}
<form method="post">
<input type="text" name="username">
<input type="password>
<input type="submit" name="submit">
</form>
然后显示用户名,只需使用以下两行代码:
session_start();
echo $_SESSION['username];
注意:这是一个非常基本的脚本。它不会阻止任何形式的SQL注入攻击并且不会验证用户名和密码 - 它只是让您走上正确轨道的一个示例。
答案 1 :(得分:0)
<强>更新强>
尝试此代码,填写密码字段,让我知道输出。虽然不清楚你的$ username变量来自哪里。
编辑:我看到你更新了你的问题,所以我根据它修改了代码。 我还根据提问者的反馈编辑了代码。
<?php
$dbservername = "127.0.0.1";
$dbusername = "root";
$dbpassword = "password";
$dbname = "nicedevelopment";
// Create connection
$conn = new mysqli($dbservername, $dbusername, $dbpassword, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$post_email = mysqli_real_escape_string($conn, $_POST['email']);
$sql = "SELECT * FROM users WHERE email='$post_email'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
$row = $result->fetch_assoc();
echo "username: " . $row['username'] . "<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>