gpt4 book ai didi

javascript - 将备忘录标记为已读

转载 作者:行者123 更新时间:2023-11-29 13:29:55 25 4
gpt4 key购买 nike

我正在建立一个处理 H&S 备忘录的网站,我需要成员确认他们已阅读他们的备忘录。我研究了处理此问题的方法,它们基于假设成员上次登录时已阅读备忘录。我无法使用此方法,因为我需要向他们的公司保证他们的员工已阅读他们的安全备忘录。

我尝试了各种方法来做到这一点,但没有一个效果足够好。

主要问题是为他们点击的已阅读的备忘录选择正确的 ID 号,然后将详细信息更新到 memo_read 表中。非常感谢任何指示、解决方法或解决方案。

这是我到目前为止所拥有的:

<?php
$user_id = $user_data['user_id'] ;
$company_id = $user_data['company'];
$nothing = '';

$result1 = mysql_query ("SELECT `user`, `memo_id` FROM`memo_read` WHERE `user`= '$user_id '") or die(mysql_error());
$memo_id_query = '';
while($row = mysql_fetch_array($result1)){
$memo_id_query .= " AND `id`!= '".$row['memo_id']."'";
}

?>
<div id="memo">
<h7>These are your unread memos!</h7>
<table class="bit">
<thead><tr><th>Title</th><th>Author</th><th>Time/Date</th><th>Memo</th></tr></thead>
<?php
$result = mysql_query ("SELECT `id`, `memos`, `author`, `time`, `title` FROM `memo` WHERE `worker`= 1 AND `company`='$company_id' ".$memo_id_query) or die(mysql_error());
while($row = mysql_fetch_array($result)) {

$id = $row['id'];
$memo = $row['memos'];
$author = $row['author'];
$time = $row['time'];
$title = $row['title'];
global $id;
?>
<tbody><tr><td><?php echo $title; ?></td>
<td><?php echo $author; ?></td>
<td><?php echo $time;?></td>
<td id="mem"><a class="toggle" href="#.bit" >read/hide</a>
<div class="hiddenDiv" ><?php echo $memo; ?><br>
<form id="tickmemo" action="" method="post">
<input type="submit" name="submit" value="mark as read">
</form>
</div></td></tr><tbody>
<?php
}
if (empty($_POST['submit']) === false) {
$q=("INSERT INTO `memo_read` VALUES ('$nothing', '$user_id', '$id') ");
$result = mysql_query($q) or die(mysql_error());
}
?></table></div>

(编辑)现在效果很好,如果其他人需要它或者您可以建议任何周,我会将其放在这里!

<?php
$user_id = $user_data['user_id'] ;
$company_id = $user_data['company'];
$nothing = '';
$result1 = mysql_query ("SELECT `user`, `memo_id` FROM`memo_read` WHERE `user`= '$user_id '") or die(mysql_error());
$memo_id_query = '';
while($row = mysql_fetch_array($result1)){
$memo_id_query .= " AND `id`!= '".$row['memo_id']."'";
}
if (isset($_GET['success']) && empty($_GET['success'])) {
echo 'You have marked that memo as read!<br>We will send you back in 3 seconds!';
header("Refresh: 3; url=\"http://www.testbed1.tk/login/index.php\"");
} else {
?>
<div id="memo">
<h7>These are your unread memos!</h7>
<table class="bit">
<thead><tr><th>Title</th><th>Author</th><th>Time/Date</th><th>Memo</th></tr></thead>
<?php
$result = mysql_query ("SELECT `id`, `memos`, `author`, `time`, `title` FROM `memo` WHERE `worker`= 1 AND `company`= '$company_id' ".$memo_id_query) or die(mysql_error());
while($row = mysql_fetch_array($result)) {

$id = $row['id'];
$memo = $row['memos'];
$author = $row['author'];
$time = $row['time'];
$title = $row['title'];
?>
<tbody><tr><td><?php echo $title; ?></td>
<td><?php echo $author; ?></td>
<td><?php echo $time;?></td>
<td id="mem"><a class="toggle" href="#.bit" >read/hide</a>
<div class="hiddenDiv" ><?php echo $memo; ?><br>
<form id="tickmemo" action="#" method="post">
<input type="hidden" name="id" value="<?php echo $id;?>" />
<input type="submit" name="submit" value="mark as read">
</form>
</div></td></tr><tbody>
<?php
}
$id = $_POST['id'];
if (empty($_POST['id']) === false) {
$q=("INSERT INTO `memo_read` VALUES (''".mysql_real_escape_string($nothing)."'','".mysql_real_escape_string($user_id)."','".mysql_real_escape_string($id)."') ");
$result = mysql_query($q) or die(mysql_error());
header('Location: worker.php?success');
}
?></table></div>
<?php } ?>

最佳答案

这里有很多方面可供评论:

  1. 您的表单中没有输入字段“id”,因此提交表单的人无法传达他们想要标记为已读的 ID

  2. 您假设寄存器全局变量已打开,以便变量 $id 填充一个值。而是使用 $_POST['id']

  3. 您的数据库查询很容易受到 SQL 注入(inject)攻击,因为您不检查任何输入。保存到数据库时至少使用intval($_POST['id'])

  4. mysql_query 将在 PHP5.5 中关闭,我认为,转向 PDO

  5. 在一个文件中完成所有操作并没有什么问题,但良好的编程风格是将操作逻辑放在顶部,输出放在底部。

  6. 如果您需要将“读取”表扩展到 100000 行,请使用 this

  7. 我认为商业案例也有缺陷。这可能会导致人们在阅读时点击备忘录,最好的情况是让他们实际阅读,但不理解和内存。最好创建一个点对点测验系统来记住备忘录。

关于javascript - 将备忘录标记为已读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19622299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com