Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php/Mysql如何使用post插入当前用户_Php_Mysql_Login_Insert - Fatal编程技术网

Php/Mysql如何使用post插入当前用户

Php/Mysql如何使用post插入当前用户,php,mysql,login,insert,Php,Mysql,Login,Insert,我对php和mysql比较陌生,但在过去的几周里我已经取得了很多成就。我目前有一个用户填写的表单,它存储他们提供的类别和内容 此外,为了创建用户,我遵循了本教程()并将工作用户帐户和安全性链接到页面。这可能是一个简单的问题,但我有点困惑于如何连接我需要的功能 简而言之,我希望我的send_post.php中的insert行检测当前登录的用户,并将其存储在名为“contributor”之类的行中 mysqli_query($connect,"INSERT INTO mytable (categor

我对php和mysql比较陌生,但在过去的几周里我已经取得了很多成就。我目前有一个用户填写的表单,它存储他们提供的类别和内容

此外,为了创建用户,我遵循了本教程()并将工作用户帐户和安全性链接到页面。这可能是一个简单的问题,但我有点困惑于如何连接我需要的功能

简而言之,我希望我的send_post.php中的insert行检测当前登录的用户,并将其存储在名为“contributor”之类的行中

mysqli_query($connect,"INSERT INTO mytable (category, contents, date)
VALUES ('$_POST[category]', '$_POST[contents]', NOW())");
因此,它显然需要(类别、内容、日期、贡献者),但我不确定如何提取当前登录的用户名,并在我的send_post.php中将其定义为“贡献者”

[通过本教程,用户名与数字ID、电子邮件、哈希密码和salt一起存储在名为“members”的单独表中。我知道如何调用这些信息,但不知道如何获取当前用户。]

这是完整的send_post.php

<?php
include 'db_connect.php';
include 'functions.php';
sec_session_start();
if(login_check($mysqli) == true) {

//Connecting to sql db.
$connect=mysqli_connect("localhost","mydbusername","mydbpass","mysqldb");

header("Location: http://mysite.com/1.php");

if (mysqli_connect_errno()) { echo "Fail"; } else { echo "Success"; }

//Sending form data to sql db.
mysqli_query($connect,"INSERT INTO mytable (category, contents, date)
VALUES ('$_POST[category]', '$_POST[contents]', NOW())");

} else {
   echo 'Access denied. <br/>';
}

?>

我将非常感激并投票支持任何帮助。谢谢

编辑,当前发送\ u post.php

编辑2,错误:(实际上我得到了3)

[07-Oct-2013 21:05:54]PHP致命错误:在第22行的/home2/mememe/public_html/mysite/send_post.PHP中调用未定义的方法mysqli_stmt::bind_params()

[07-Oct-2013 21:05:54]PHP警告:session_start()[function.session start]:无法发送会话缓存限制器-第12行/home2/mememe/public_html/mysite/functions.PHP中已发送的头(输出从/home2/mememe/public_html/mysite/index_3.PHP:7开始)

[07-Oct-2013 21:05:54]PHP警告:会话重新生成id()[function.session regenerate id]:无法重新生成会话id-标题已发送到第13行的/home2/mememe/public_html/mysite/functions.PHP中

编辑3:回显返回


数组([user_id]=>3[username]=>username[login_string]=>4EB86947C8007EF1D0BB658168A76AFA5C6666518D3B58D76BF3040DC36D7A399C6C110A8C7F0D9F03D2B4D63271BD1335C61311EDB152670F010F04583E7578等大量散列信息)

按照该教程,当前用户id存储在

$_SESSION['user_id']
本教程的登录功能包括

您需要在MySQL表中添加一个名为“mytable”的userid字段

然后执行这样的SQL语句

$stmt = $mysqli -> prepare('INSERT INTO mytable (category, contents, date, userid) 
                            VALUES (?,?,NOW(),?)');
$stmt -> bind_param('ssi', $_POST['category'], $_POST['contents'], $_SESSION['user_id']);
$stmt -> execute();
编辑

在阅读了更多教程之后,他们在执行
login\u check($mysqli)
时清除了
$\u会话['user\u id']
,因此在调用插入之前

$userId = $_SESSION['user_id'];
您的代码应该是这样的

<?php
include 'db_connect.php';
include 'functions.php';
sec_session_start();

$userId = $_SESSION['user_id'];
if(login_check($mysqli) == true) {

//Connecting to sql db.
$connect=mysqli_connect("localhost","mydbusername","mydbpass","mysqldb");

header("Location: http://mysite.com/1.php");

if (mysqli_connect_errno()) { echo "Fail"; } else { echo "Success"; }

//Sending form data to sql db.
$stmt = $mysqli -> prepare('INSERT INTO mytable (category, contents, date, userid) 
                            VALUES (?,?,NOW(),?)');
$stmt -> bind_param('ssi', $_POST['category'], $_POST['contents'], $userId);
$stmt -> execute();
$stmt -> close();

} else {
   echo 'Access denied. <br/>';
}

?>


Firstable您对SQL注入非常开放。第二:我没有听说sec_session_start()函数。它是干什么的?第三:标题(“位置:);将您重定向到另一个页面,因此下面的代码永远不会运行。首先,您需要将
sec\u session\u start();
替换为
session\u start();
-I例如,我从未听说过
sec\u session\u start();
和“IT”“需要包含在所有文件中,包括文件。我还没有学会santise,一旦我理解了其中的一些核心概念,我会尽快学习。sec_session_start是一种自定义的安全方式,用于启动我链接的教程中的php会话。标题链接到表单所在的页面。当用户提交类别和内容时,页面将刷新,并在提交后立即显示在同一页面的表格上。很好用吗?对于我询问的问题以及如何处理
标题(“位置:http://mysite.com/1.php");再次强调,“sec_session_start”只是在我发布的教程中的big functions.php中创建的自定义安全会话函数。谢谢,我现在正在测试这个函数!这似乎打破了我实施它的方式。我用您的代码完全替换insert语句是错误的吗?现在它只是刷新,表中没有任何内容。请确保在MySQL中添加一个新字段。您必须在数据库中的表中添加
userid
,我正在尝试粘贴当前代码,但注释部分不允许有那么多字符。(对堆栈溢出有点新)添加了编辑,新的userid字段也在mysql中/正在阅读您的编辑(顺便说一句,我非常感谢您的帮助)
<?php
include 'db_connect.php';
include 'functions.php';
sec_session_start();

$userId = $_SESSION['user_id'];
if(login_check($mysqli) == true) {

//Connecting to sql db.
$connect=mysqli_connect("localhost","mydbusername","mydbpass","mysqldb");

header("Location: http://mysite.com/1.php");

if (mysqli_connect_errno()) { echo "Fail"; } else { echo "Success"; }

//Sending form data to sql db.
$stmt = $mysqli -> prepare('INSERT INTO mytable (category, contents, date, userid) 
                            VALUES (?,?,NOW(),?)');
$stmt -> bind_param('ssi', $_POST['category'], $_POST['contents'], $userId);
$stmt -> execute();
$stmt -> close();

} else {
   echo 'Access denied. <br/>';
}

?>