【发布时间】:2020-06-01 14:07:57
【问题描述】:
我对 PHP 和 JavaScript 非常陌生,但我被困住了。到目前为止,我花了整整 7 个小时试图弄清楚这一点,但我只是不知道该怎么做或怎么做。所以在我的应用程序中,当您尝试向我的表中添加新行时,我有一个 html 表单来获取数据。当你在表单中输入数据,然后按提交时,它会提示输入密码,如果输入正确的密码,它会提交表单。它可以按我的意愿工作,这就是我所拥有的:
<button onclick="password()" type="button">Create New Hero</button>
<div>
<a id="discl">*-Required Fields</a>
</div>
<script>
function password(){
var password = prompt("Please Enter the Admin Password");
if(password != "shaun"){
alert("Wrong Password");
}
else{
if(validation()){
document.getElementById("form_id").submit();
}
else{
alert("One or more required fields were left empty, or tried to use <script>");
}
}
}
function validation(){
var f = document.getElementById("f_name").value;
var l = document.getElementById("l_name").value;
var d = document.getElementById("dob").value;
var a = document.getElementById("alias").value;
if(f == "" || l == "" || d == "" || f.includes("<script>") || l.includes("<script>") || a.includes("<script>")){
return false;
}
else{
return true;
}
}
</script>
现在我的桌子上也有一个编辑和删除。我的问题是,对于编辑和删除,它们位于带有 href 的标签中,而不是按钮。这是它们在不要求密码的情况下工作时的最初外观:
echo "<a href='./edit.php?id={$row['id']}'>edit</a>";
因此,根据它所在的表的哪一行,您单击编辑或删除的位置,根据数据库中该行的 ID,它会编辑或删除该表。现在我的问题是我不知道如何正确设置该功能,因此它要求输入密码并重定向到正确的 url。这就是我现在拥有的:
foreach($results as $row){
echo "<tr>";
echo "<td>{$row['first_name']}</td>";
echo "<td>{$row['last_name']}</td>";
echo "<td>{$row['date_of_birth']}</td>";
echo "<td>{$row['alias']}</td>";
echo "<td>{$row['active']}</td>";
echo "<td>{$row['hero']}</td>";
echo "<td>";
echo "<a href='./edit.php?id={$row['id']}'>edit</a>";
echo " | ";
echo "<a href='javascript: password()'>delete</a>";
echo "</td>";
echo "</tr>";
}
?>
<script type="text/javascript">
function password(){
var password = prompt("Please Enter the Admin Password");
if(password != "shaun"){
alert("Wrong Password");
}
else{
window.location.replace("./delete.php?id=<?php echo $row['id']; ?>");
}
}
</script>
这样做的问题是,无论我在表上单击哪个删除,它总是会删除最后一个,因为它在 url 之后得到的 ID 是我数据库中最后一个可用的 ID。我不确定我是否只是错过了一些小东西,或者我完全走错了路,但任何帮助都将不胜感激,因为我非常迷茫。谢谢
【问题讨论】:
-
您真的在 Javascript 中验证密码 - 其中包含硬编码的密码吗?
-
您知道密码可以通过 chrome 上的 Ctrl + U 从页面轻松复制。
-
if(password != "shaun")in JS - 爱它! -
旁注:我在任何地方都看不到
password_verify(),所以这对我来说,建议您将密码存储为纯文本,这是不应该的。 -
@mitkosoft 是的,我知道这不安全,也不应该如何处理密码或登录,但这仅适用于一个小项目。而且我确实在重定向的密码()函数中传递了 $row['id'] ,但正如我所说,该值始终是最后一个 id 并且它不响应我单击删除的表的哪一行
标签: javascript php database passwords