0

我有显示用户名的问题。我的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 } ?>

提交.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" );  
?>
4

5 回答 5

1

一旦他们登录,您可以使用将用户名放在 $_SESSION 对象中。然后您可以回显用户名;例如:echo $_SESSION['username'];

于 2013-08-11T10:19:04.847 回答
1

这样您就可以设置会话。

<?php
// page1.php

session_start();

echo 'Welcome to page #1';

$_SESSION['favcolor'] = 'green';


?>

你可以看到这样的会话echo $_SESSION['favolor'];,它会显示green

http://php.net/manual/en/function.session-start.php

于 2013-08-11T10:43:10.483 回答
0

在您的代码中,$conn未在任何地方初始化。在尝试查询之前像这样初始化它。

$conn = mysqli_connect("localhost", "my_user", "my_password", "world");

检查php手册是否正确使用。

希望有帮助:)

于 2013-08-11T10:17:58.187 回答
0

我的建议是session,当用户登录时,将 user_login 会话设置为 1 ,

user_name session用户名。

在每条评论之前,检查用户是否登录,

如果他没有从表格中得到名字,

如果是,隐藏名称输入并将用户名保存session在数据库中。

如果您session对此答案的评论有任何问题,如果您愿意,我会解释

于 2013-08-11T10:20:37.443 回答
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

毕竟,您可以在数据库中插入用户的评论和名称。祝你好运,如果我的回答对你有帮助,请将我的问题标记为已接受。

于 2013-08-11T10:55:52.180 回答