我遇到显示用户名的问题。我的SQL无法记录添加评论的用户名....只显示当前的登录用户名...我该怎么办?我不希望客户在插入评论时再次输入他们的名字....
<?php
if ($_POST) {
$name = mysqli_escape_string($conn, $_POST['name']);
$supplier = mysqli_escape_string($conn, $_POST['supplier']);
$description = mysqli_escape_string($conn, $_POST['description']);
$remark = mysqli_escape_string($conn, $_POST['remark']);
$price = mysqli_escape_string($conn, $_POST['price']);
$image = mysqli_escape_string($conn, $_POST['image']);
$createdate = mysqli_escape_string($conn, $_POST['createdate']);
$author = ( isset( $_SESSION["username"] ) ? $_SESSION["username"] : "" );
$result = mysqli_query($conn, "INSERT INTO products (name, supplier, description, remark, price, image, createdate,author) VALUES('$name', '$supplier', '$description', '$remark', '$price', '$image', '$createdate','$author')");
if (!$result) {
exit(mysqli_error($conn));
}
redirect('comment.php'); } else { ?>
<?php } ?>
SUBMIT.PHP
<?php
include("common.php");
logincheck();
$action = (isset($_GET["action"]) ? $_GET["action"] : "");
$link = mysql_connect("localhost", "XX", "XX");
mysql_select_db("XX");
$name = $_POST["name"];
$supplier = $_POST["supplier"];
$description = $_POST["description"];
$remark = $_POST["remark"];
$price = $_POST["price"];
$image = '';
if ( isset( $_FILES['image']['name'] ) && trim( $_FILES['image']['name'] ) != "" )
{
$uploaddir = "Products/";
$image = $uploaddir . basename($_FILES['image']['name']);
if ( ! move_uploaded_file( $_FILES['image']['tmp_name'], $image ) ) {
die('Image cannot be uploaded');
}
}
switch($action) {
case "insert":
$sql = "insert into products (name, supplier, description, remark, price, image, createdate) values ('$name', '$supplier', '$description', '$remark', '$price', '$image', NOW())";
mysql_query($sql, $link);
break;
case "save":
$id = $_POST["id"];
$image2 = $_POST["image2"];
if ($image == '')
$image = $image2;
$sql = "update products set name='$name', supplier='$supplier', description='$description', remark='$remark', price='$price', image='$image' where id='$id'";
mysql_query($sql, $link);
break;
case "delete":
$id = $_GET["id"];
$sql = "delete from products where id=$id";
mysql_query($sql, $link);
break;
}
Header( "Location: comment.php" );
?>
答案 0 :(得分:1)
您可以在登录后使用$ _SESSION对象中的用户名。 然后你可以回显用户名;例如: echo $ _SESSION ['username'];
答案 1 :(得分:1)
这样您就可以设置会话。
<?php
// page1.php
session_start();
echo 'Welcome to page #1';
$_SESSION['favcolor'] = 'green';
?>
您可以看到此echo $_SESSION['favolor'];
会话,并会显示green
答案 2 :(得分:0)
在您的代码中,$conn
未在任何地方初始化。在尝试查询之前将其初始化为这样。
$conn = mysqli_connect("localhost", "my_user", "my_password", "world");
检查php manual是否正确使用。
希望有所帮助:)
答案 3 :(得分:0)
我的建议是session
,当用户登录时,将user_login会话设置为1,
和user_name
session
。
在每条评论之前,检查用户是否登录,
如果他没有从表格中获取名称,
如果是,则隐藏名称输入并将user_name session
保存在数据库中。
如果您对此答案使用session
评论有任何问题,我会解释,如果您需要
答案 4 :(得分:0)
在文件的第一行(即使在任何空格或新行之前),您必须 加上这个:
<?php session_start(); ?>
用户输入用户名和密码后, 你检查它们是否匹配, 你有:
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
如果用户名和密码与存储在数据库中的用户名和密码匹配, 这样做:
$_SESSION['username']=$username;
$_SESSION['log']=1;
然后,关于您的评论页面:
<?php if(!isset($_SESSION['log']) || $_SESSION['log']!=1) { ?>
Enter your name : <input type='text' name='user_name'>
<?php } ?>
现在,如果用户已登录,则无法输入他的名字。
我假设您的表单将数据发布到post.php
,
现在在post.php
你必须这样做:
<?php
if($_POST['user_name']) $name = $_POST['username']
else $name = $_SESSION['username']
?>
然后,注意:将<?php session_start() ?>
放在post.php
毕竟,您可以在数据库中插入用户的注释和名称。 祝你好运,如果我的回答对你有帮助,请将我的问题标记为已接受。