如果我发现fname和lname不存在,它会弹出一条消息说他们从未登录过,我怎么能把这个脚本放到哪里呢。
<?php
session_start();
include_once("connect.php");
date_default_timezone_set("America/Winnipeg");
$date = ("m-d-Y");
$timeout = date("g:i:s a");
if ("SELECT EXISTS(
SELECT *
FROM signin_out
WHERE
lname='" . $_POST['lastname'] . "'
AND fname='" . $_POST['firstname'] . "'
AND date='" . $date . "')"
) {
mysql_query("
UPDATE signin_out
SET timeout='" . $timeout . "'
WHERE
lname='" . $_POST['lastname'] . "'
AND fname='" . $_POST['firstname'] . "'
AND timeout=''
");
header("Location: ../index.html");
} else {
echo "<script type='text/javascript>'";
echo "alert('<p>Oops! You never signed in!</p><br><p>Please contact a
Librarian</p>');'";
echo "</script>'";
header('Location: ../index.php?notsignedin');
}
?>
这是高中的内部网站。
答案 0 :(得分:2)
$sql = "SELECT COUNT(*) signedin FROM signin_out
WHERE lname = '" . mysql_real_escape_string($_POST['lastname']) . "'
AND fname = '" . mysql_real_escape_string($_POST['lastname']) . "'
AND date = '$date'";
$result mysql_query($sql) or die(myqsl_error());
$row = mysql_fetch_assoc($result);
if ($row['signedin'])) {
// update table
} else {
// Report not signed in
}
但是,您真的应该切换到mysqli或PDO,这样您就可以使用参数化查询而不是连接字符串,因此您不必担心转义它们。
答案 1 :(得分:0)
这只是答案的一部分,@ Barmar给你如何处理查询本身。
更改
echo "<script type='text/javascript>'";
echo "alert('<p>Oops! You never signed in!</p><br><p>Please contact a
Librarian</p>');'";
echo "</script>'";
header('Location: ../index.php?notsignedin');
要
echo "<script type='text/javascript>'";
echo "alert('Oops!\nYou never signed in!\nPlease contact a
Librarian');'";
echo "window.location.href='../index.php?notsignedin';";
echo "</script>'";
原因:
echo
在作为包发送到浏览器之前进入Web服务器缓冲区的字符串
这可能会导致您的代码到达并执行header
命令,然后您将立即重定向,或者在“...输出后无法发送标题...”的行中收到错误消息/ p>
并认真考虑每个人对PDO / Mysqli的建议,并使用更集中/抽象的方式来使用数据库。
答案 2 :(得分:0)
检查查询返回的行数,如果大于1,然后数据库中存在fname
和lname
,您也可以使用count(*)
但我不会更改您的查询:
$result = mysql_query("SELECT * FROM signin_out WHERE lname='".$_POST['lastname']."' AND fname='".$_POST['firstname']."' AND date='".$date);
$num_rows = mysql_num_rows($result);//count number of rows returned by query
if($num_rows >=1) {
//Update here
}
else {
//alert and redirect here
}
我了解您的网站仅供内网使用,但我建议您使用PDO
或Mysqli