0

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

此外,为了创建用户,我遵循了本教程(http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL)并链接了工作用户帐户和安全性与页面。这可能是一个简单的问题,但我对如何链接我需要的功能有点困惑。

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

mysqli_query($connect,"INSERT INTO mytable (category, contents, date)
VALUES ('$_POST[category]', '$_POST[contents]', NOW())");

所以它显然需要(类别,内容,日期,贡献者),但我不确定如何提取当前登录的用户名并将其定义为我的 send_post.php 中的“贡献者”

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

这是完整的 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/>';
}

?>

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

编辑,当前 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","myusername","mypassword","mysqldb");

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

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

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


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

?>

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

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

[2013 年 10 月 7 日 21:05:54] PHP 警告:session_start() [function.session-start]:无法发送会话缓存限制器 - 标头已发送(输出开始于 /home2/mememe/public_html/mysite/index_3。 php:7) 在第 12 行的 /home2/mememe/public_html/mysite/functions.php

[2013 年 10 月 7 日 21:05:54] PHP 警告:session_regenerate_id() [function.session-regenerate-id]:无法重新生成会话 ID - 标头已在 /home2/mememe/public_html/mysite/functions.php 中发送第 13 行

编辑 3:回声返回

Array ( [user_id] => 3 [username] => THEUSERNAME [login_string] => tons of hash infor like 4eb86947c8007ef1d0bb658168a76affa5c666518d3b58d76bf3040dc36d7a399c6c110a8c7f0d9f03d2b4d63271bd1335c61311edb152670f010f04583e7578 )

4

1 回答 1

1

通过遵循该教程,您当前的用户 ID 存储在

$_SESSION['user_id']

教程的登录功能在这里

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

然后执行这样的 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();

编辑

$_SESSION['user_id']在阅读了更多教程之后,他们在执行时清除了,login_check($mysqli)所以在你调用那个插入之前

$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/>';
}

?>
于 2013-10-08T01:57:48.827 回答