if(!isset($_POST['submit'])){
exit('非法访问!');
}
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
//注册信息判断
if(!preg_match('/^[\w\x80-\xff]{3,15}$/', $username)){
exit('错误:用户名不符合规定。返回');
}
if(strlen($password) < 6){
exit('错误:密码长度不符合规定。返回');
}
if(!preg_match('/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/', $email)){
exit('错误:电子邮箱格式错误。返回');
}
//包含数据库连接文件
include('conn.php');
//检测用户名是否已经存在
$check_query = mysql_query("select uid from user where username='$username' limit 1");
if(mysql_fetch_array($check_query)){
echo '错误:用户名 ',$username,' 已存在。返回';
exit;
}
//写入数据
$password = MD5($password);
$regdate = time();
$sql = "INSERT INTO user(username,password,email,regdate)VALUES('$username','$password','$email',
$regdate)";
if(mysql_query($sql,$conn)){
exit('用户注册成功!点击此处 登录');
} else {
echo '抱歉!添加数据失败:',mysql_error(),'
';
echo '点击此处 返回 重试';
}
?>
求教为什么一直显示非法访问(PHP)
答案:2 悬赏:0 手机版
解决时间 2021-02-05 23:21
- 提问者网友:最爱你的唇
- 2021-02-05 04:53
最佳答案
- 五星知识达人网友:狂恋
- 2021-02-05 05:04
需要从登录页面访问此数据处理页面,不然它会一直提示“非法访问”,因为直接访问的话,isset($_POST['submit']的值为假
全部回答
- 1楼网友:刀戟声无边
- 2021-02-05 06:43
例子代码:
$user="sdafdsg";
if(preg_match("/^[0-9a-za-z]{4,21}$/",$user)){
echo "ok";
}
下面是php官方对 preg_match函数的介绍
preg_match
(php 4, php 5)
preg_match — 执行一个正则表达式匹配
说明
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
搜索subject与pattern给定的正则表达式的一个匹配.
参数
pattern
要搜索的模式,字符串类型。
subject
输入字符串。
matches
如果提供了参数matches,它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本, $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推。
flags
flags可以被设置为以下标记值:
preg_offset_capture
如果传递了这个标记,对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符串的)。 注意:这会改变填充到matches参数的数组,使其每个元素成为一个由 第0个元素是匹配到的字符串,第1个元素是该匹配字符串 在目标字符串subject中的偏移量。
offset
通常,搜索从目标字符串的开始位置开始。可选参数 offset 用于 指定从目标字符串的某个未知开始搜索(单位是字节)。
note:
使用offset参数不同于向preg_match() 传递按照位置通过substr($subject, $offset)截取目标字符串结果, 因为pattern可以包含断言比如^, $ 或者(?<=x)。 比较:
以上例程会输出:
array
(
)
当这个示例使用截取后传递时
将会产生匹配
array
(
[0] => array
(
[0] => def
[1] => 0
)
)
返回值
preg_match()返回 pattern 的匹配次数。 它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后 将会停止搜索。preg_match_all()不同于此,它会一直搜索subject 直到到达结尾。 如果发生错误preg_match()返回 false。
更新日志
版本
说明
5.3.6 如果 offset 比 subject 的长度还要大则返回 false。
5.2.2 命名子组可以接受(?), (?'name') 以及(?p)语法。之前版本仅接受(?p)语法。
4.3.3 增加了参数offset.
4.3.0 增加了标记preg_offset_capture。
4.3.0 增加了参数flags。
范例
example #1 查找文本字符串"php"
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯