添加注释时显示用户名我的SQL无法记录用户名,只显示当前登录用户

时间:2013-08-11 10:07:00

标签: php mysql forms

我遇到显示用户名的问题。我的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" );  
?>

5 个答案:

答案 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

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

答案 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

的第一行

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