如果某人是注册会员,这意味着您很可能使用 $_SESSION['id_member'] 变量。
这会将客户端可以看到的cookie名称设置为'member'...
if (!headers_sent() && !isset($_SESSION))
{
session_name('member');
}
...然后当用户进行身份验证时分配一个会话变量及其权限...
$_SESSION['member_id'] = $mysql_row['id'];
$_SESSION['member_status'] = $mysql_row['id'];
这是一个您可能会使用或更改的状态层次结构,但它应该是一个很好的参考点...
10 - 超级管理员(仅限您)
9 - 管理员// 中级管理员
8 - 助理//限制性管理员
7 - 版主//不要将此状态授予任何混蛋
6 - 高级会员//他们给了你钱!
5 - 注册会员//正常账户状态
4 - 冻结帐户//没有被禁止但做错了什么,将“解冻”
3 - 未验证的电子邮件地址//已注册但未验证电子邮件
2 - 未注册的访客//人类
1 - 好机器人
0 - 禁止
一般先确定如何捕捉表格...
if ($_SERVER['REQUEST_METHOD']=='GET')
{
}
else if ($_SERVER['REQUEST_METHOD']=='POST')
{
if (isset($_POST['submit_button_name_value'])) {blog_post_ajax_comment();}
}
我添加了 name="value" 属性/值来提交按钮,为什么?有两个提交选项(例如预览和发布),您可能希望服务器触发一个功能或另一个,非常简单且有效的 (X)HTML。
您应该检查变量是否为 isset(记住权限)。
然后检查他们的用户权限是否足够,可以用一个简单的整数来表示。
然后将 isset 和权限 if 语句包装在两件事上,一是表单,二是确保在处理表单时使用这些条件。
我总是针对要拒绝的东西进行测试,并在数据库查询错误处理中投入一些额外的帮助...
//function module_method_ajax_purpose()
function blog_post_ajax_comment()
{
if (!isset($_SESSION['member'])) {http_report('403',__FUNCTION__,'Error: you must be signed in to do that.');}
else if ($_SESSION['member_status']<=4) {http_report('403',__FUNCTION__,'Error: permission denied; your account has been flagged for abuse.');}
else if (flood_control($datetime,'60')!=1) {http_report('403',__FUNCTION__,'Error: you can only post a comment once every X seconds.');}
else if (!isset($_POST['post_form_name_1']) || !isset($_POST['post_form_name_2'])) {http_report('403',__FUNCTION__,'Error: permission denied.');}
else
{
// NOW process
$query1 = "SELECT * FROM table";
$result1 = mysql_query($query1);
if ($result1)
{
//successful, increment query number for further queries
}
else {mysql_error_report($query1,mysql_error(),__FUNCTION__);}
}
错误报告功能非常强大,可用于 HTTP、JavaScript、PHP 和 MySQL。您还可以从我关于实时日志阅读的回答中受益:jQueryUI tabs and Firefox: getBBox broken?