我正在编写一个php脚本来批准在我的页面上注册的用户,但当我想批准他们时,我遇到了一个小问题。这是我能到达的最远的地方。
表:
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("activation") or die(mysql_error());
//User Approval Script
$result2 = mysql_query("SELECT * FROM userinfo WHERE status='0'")
or die(mysql_error());
echo "<table border='1'>";
echo "<tr> <th>Name</th> <th>Action</th> <th>Hours</th> <th>Approve</th> </tr>";
while($row = mysql_fetch_array( $result2 )) {
// Print out the contents of each row into a table
echo "<tr><td>";
echo $row['first_name'];
echo "</td><td>";
echo $row['last_name'];
echo "</td>";
echo "<td>";
echo $row['email'];
echo "</td><td>";
echo "<form action='"approve.php'" method='"post'"><input name='"approve[]'" type='"checkbox'">";
echo "</td></tr>";
}
echo "</table>";
echo "<input type='"submit'" value='"Approve'"></form>";
?>
approve.php
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("activation") or die(mysql_error());
$ticked = $_POST['approve'];
foreach($ticked as $id) {
mysql_query("UPDATE status SET approved = '1' WHERE `ID` = '$id'");
}
unset($id);
?>
我也想知道如何向每个被批准的用户发送电子邮件。。。
提前感谢大家!
编辑:
approve.php上的页面全部为空,状态没有得到更新。
你能试试吗,将<form>
标签从复选框附近移到顶部,并用$row["id"]
添加复选框值
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("activation") or die(mysql_error());
//User Approval Script
$result2 = mysql_query("SELECT * FROM userinfo WHERE status='0'")
or die(mysql_error());
echo "<form action='"approve.php'" method='"post'"><table border='1'>";
echo "<tr> <th>Name</th> <th>Action</th> <th>Hours</th> <th>Approve</th> </tr>";
while($row = mysql_fetch_array( $result2 )) {
// Print out the contents of each row into a table
echo "<tr><td>";
echo $row['first_name'];
echo "</td><td>";
echo $row['last_name'];
echo "</td>";
echo "<td>";
echo $row['email'];
echo "</td><td>";
echo "<input name='"approve[]'" type='"checkbox'" value='".$row["id"]."' >";
echo "</td></tr>";
}
echo "</table>";
echo "<input type='"submit'" value='"Approve'"></form>";
?>
在approve.php中,
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("activation") or die(mysql_error());
$ticked = $_POST['approve'];
foreach($ticked as $id) {
mysql_query("UPDATE status SET approved = '1' WHERE `ID` = '$id'");
$message ='Approved message';
mail('to email address', 'Your Subject', $message);
}
?>
注意:使用mysqli_*函数或PDO代替使用mysql_*函数(已弃用)
您试图在循环while
中打开表单,但在复选框中错过了属性value
。
更改
echo "<form action='"approve.php'" method='"post'"><input name='"approve[]'" type='"checkbox'">";
到
echo '<input name="approve" type="checkbox" value='.$row["id"].'>';
然后将echo "<form action ='approve.php' method='post'>";
置于while($row = mysql_fetch_array( $result2 )) {
之上
你应该有一个大表单,有很多复选框(我想这就是你的第二个页面所基于的),但复选框是<input>
s,而不是<form>
s。你的最终HTML应该看起来像:
<form>
<table>
...
<td><input type="checkbox" name="approve[]" value="USERIDTHATYOUWANTTOAPPROVE"></td>
...
<td><input type="checkbox" name="approve[]" value="OTHERUSERIDTHATYOUWANTTOAPPROVE"></td>
...
</table>
</form>
还有
- 您的代码非常容易受到SQL注入的影响。请参阅如何防止PHP中的SQL注入?为什么我不应该在PHP中使用mysql_*函数
- 您应该使用准备好的语句来卸载代码中的工作(您只发送一次查询,每次都更改参数)