我目前正在为学校的最后一年做一个网络应用项目。我更像是一个网页设计师,而不是一个网络开发者,所以我需要尽可能多的帮助!
对于我的项目,我创建了一个非常类似于博客网站的网站。
我想要实现的第一个函数在用户注册时运行,我想要signUp.php(html form)/ doSignUp.php(php将数据发布到数据库)以防止用户使用已经存在的用户名数据库中。
例如,database有username =“happy”。 User1填写表格 用户名中的signUp.php填写“happy”并将表单提交到 doSignUp.php。 doSignUp.php检查数据库是否 username =“happy”在里面。如果它在里面,它将不会发布数据 再次进入内部,以防止双重进入,而是REDIRECT回到 signUp.php并通知用户“用户名是 在使用“。
对于第一个函数,我有以下想法:
$selectUser = executeSelectQuery("SELECT username FROM user WHERE username="$username")
if ($selectUser==0) {
$doRegister = executeInsertQuery("INSERT INTO user (Name,Username, Email,
Password, DOB_Date, DOB_Month, DOB_Year, Gender,admin, Country) VALUES
('$Name','$Username','$Email',SHA1('$Password'),'$DOB1','$DOB2','$DOB3','$Gender','$role' ,
'$Country')");
} else {
<// redirect codes here to signUp.php with message "user name is in used">
}
我要实现的第二个函数涉及login.php(登录表单),doLogin.php(检查发布的数据是否与登录表单中输入的数据匹配)和memberPage.php(如果他是,则将用户重定向到memberPage)成员并为他创建一个会话,否则重定向到login.php,如果他不是向他显示某些消息的成员)。
至于第二个函数,我真的不知道如何为我的登录实现post-redirect-get方法。我尝试使用谷歌进行演示尝试,但无济于事。如果可以的话请帮忙!提前致谢:D
答案 0 :(得分:0)
要重定向的代码:
header("Location: signUp.php?message=" . urlencode("user name is in use"));
在signUp.php中,要打印错误,请打印$_GET['message']
。
答案 1 :(得分:0)
在您的情况下,使用header()
函数重定向到您的注册显示页面(signUp.php)并显示一条消息将起作用,但是我经常不鼓励这种多文件尝试进行表单处理。<登记/>
更吸引人的东西(至少对我来说)是将处理逻辑放在显示表单的文件的顶部。这个逻辑需要包装在支票中,以确保表格已经提交。如果出现任何问题,它会将错误存储在稍后可能在文件中显示的变量中。看一下这个例子:
<?php
if($_POST['submit'] == 'Submit') {
if(!$userNameIsUnique) { //Mysql Processing - duplicate check here
$message = "Username has already been used.";
}
//Check other fields for duplicates or invalid data
if(!isset($message)) {
//Form submit successful send info to data
mail(); //Send confirmation email
die('Check your email to verify your account!'); //Display success message
}
}
?>
<html>
<head><title>Signup</title></head>
<body>
<?php if(isset($message)) echo '<p>'.$message.'</p>'; ?>
<form action="" method="post">
<input name="username" />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
在这种情况下,您仍然可以将视图和控制器逻辑(包含文件包含)分开,但是当有一个文件时,您可以避免使用两个文件并强制执行两个请求(一个用于表单提交,另一个用于重定向到表单)输入错误。