Php 如何检测用户是否已接受条款?

Php 如何检测用户是否已接受条款?,php,mysql,sql,Php,Mysql,Sql,基本上,我正在编写一个PHP和MYSQL脚本,用于检查用户是否接受了条款和条件。在数据库中,每个已注册的当前用户都被设置为“未接受”。当他们登录到所指向的第一个页面时,应该有一个scirpt,用于检测users表中tos列的状态是否设置为“已接受”或“未接受”。如果它被接受,他们可以继续,如果它不是他们将被迫去一个页面,并接受他们之前,他们可以继续使用我的网站的其余部分。这是目前为止的代码,但它似乎不起作用。任何建议都有帮助 <?php $username=$_SESSION['user

基本上,我正在编写一个PHP和MYSQL脚本,用于检查用户是否接受了条款和条件。在数据库中,每个已注册的当前用户都被设置为“未接受”。当他们登录到所指向的第一个页面时,应该有一个scirpt,用于检测
users
表中
tos
列的状态是否设置为“已接受”或“未接受”。如果它被接受,他们可以继续,如果它不是他们将被迫去一个页面,并接受他们之前,他们可以继续使用我的网站的其余部分。这是目前为止的代码,但它似乎不起作用。任何建议都有帮助

<?php

$username=$_SESSION['username'];
$connect = mysql_connect('**', '**', '**', '**');
if (!$connect) 
{
    die('Could not connect: ' . mysql_error());
}
if (!mysql_select_db('**')) 
{
    die('Could not select database: ' . mysql_error());
}
$toschecker = mysql_query("SELECT `tos` FROM `users` WHERE `username` = '$username'");
if (!$toschecker) 
{
    die('Could not query:' . mysql_error());
}
mysql_close($connect);
$unaccepted='unaccepted';

if ($toschecker === $unaccepted)
{
    header('Location: accepttos.php');
}    
?>


出于某种原因,这并没有将他们引导到accepttos.php页面。提前感谢。

$toschecker
是一个资源,请在
mysql\u query
行下尝试以下操作以查看查询结果,您可以使用它重定向acceptos.php等

if( $row = mysql_fetch_assoc($toschecker)) {
    var_export($row['tos']);
}

您需要访问数据库字段中的信息。这里有一个例子

$toschecker = mysql_query($sql);

$row = mysql_fetch_array($toschecker);

$tos = $row['tos'];

if($tos == 'accepted'){
     // go to regular page
}else {
     // go to accept terms page
}

将MySQL更改为MySQLi。评论中有解释

<?php

$username = $_SESSION['username'];
$connect = mysqli_connect('Host', 'Username', 'Password', 'Database');
if (!$connect) 
{
    die('Could not connect: ' . mysql_error());
}

$toschecker = mysqli_query($connect,"SELECT `tos` FROM `users` WHERE `username` = '$username'"); /* SELECT TOS COLUMN */

while ($row = mysqli_fetch_array($toschecker)) 
{
    $tos = $row['tos']; /* STORE TO A VARIABLE THE FETCHED TOS */
}

$unaccepted = 'unaccepted';

if ($tos == $unaccepted) /* COMPARE THE TOS VARIABLE IF UNACCEPTED */
{
    header('Location: accepttos.php');
}

else {
    header('Location: acceptedTOS.php'); /*  IF TOS IS ACCEPTED. CHANGE THE LOCATION */
}

mysqli_close($connect);

?>

mysql\u查询正在返回一个资源(不是
tos
的值)。这与任何东西相比都没有意义。请养成清理输入内容的习惯,您可能应该拥有
$username=mysql\u real\u escape\u字符串($\u SESSION['username')
但是你真的应该在准备好的语句中使用
PDO
。我需要把它们放在网页的哪个部分?它在房间里吗?不!只是身体的一部分。它似乎在检测“else”而不是“if”。可能是因为数据不是不可接受的。检查数据库中用户名的TOS。嗯,不。在数据库中将其设置为“未接受”。即使我将语句更改为if=='accepted',它仍然会转到else语句。