我刚刚开始编写php代码。我想做一个用户登录和注册表单在同一个页面上。这两种代码都是单独工作的,但我在将它们放在一起时遇到了问题。有人能向我解释我哪里出了问题吗?
我遇到的两个问题是:
1)当我尝试登录时,它会提示错误,未定义的变量电子邮件(但不是当我注册时)。
2)在他们注册或登录后,我不会重定向到index.php。
头文件。
<?php
session_start();
include 'login.php';
include 'signup.php';
if (isset($_SESSION['user']))
{
$user = $_SESSION['user'];
$loggedin = TRUE;
}
else {
$loggedin = FALSE;
}
if ($loggedin)
{
//shows a bunch of code
}
else
{
echo "<div class='header'>" .
"<div class='logo'>" .
"<a href='login.php' " . "style='color: #FFF; text-decoration: none;'>$appname</a>" .
"</div> ";
echo "<div id='login'>
<fieldset>
<legend style='color:white;'>Login</legend>
<form method='post' action='login.php'>$error".
"<div class='row'>
Username:
<span class='form'>
<input type='text' maxlength='16' name='user' value='$user' />
</span>
</div> ".
"<div class='row'>
Password: 
<span class='form'>
<input type='password' maxlength='16' name='pass' value='$pass' />
</span>
</div>".
"<div class='row'>
<span class='form'>
<input type='submit' value='Login' />
</span>
</div>
</form>
</fieldset>
</div>
</div>";
echo "<div class='container'>
<form method='post' action='signup.php'>$error".
"<div class='row_signup'>
<span class='form_signup'>
<h3>Sign Up Today!</h3>
</span>
</div> ".
"<div class='row_signup'>
<span class='label_signup'>Username:</span>
<span class='form_signup'>
<input type='text' maxlength='16' name='user' value='$user' onBlur='checkUser(this)'/><br /><span id='info'></span>
</span>
</div> ".
"<div class='row_signup'>
<span class='label_signup'>Password: </span>
<span class='form_signup'>
<input type='password' maxlength='16' name='pass' value='$pass' />
</span>
</div>".
"<div class='row_signup'>
<span class='label_signup'>Email: </span>
<span class='form_signup'>
<input type='email' name='email' value='$email' />
</span>
</div>".
"<div class='row_signup'>
<span class='form_signup'>
<input type='submit' value='Sign Up' />
</span>
</div> ".
"</form>
</div>";
}
?>login.php
<?php
include_once 'header.php';
$error = $user = $pass = "";
if (isset($_POST['user']))
{
$user = sanitizeString($_POST['user']);
$pass = sanitizeString($_POST['pass']);
if ($user == "" || $pass == "")
{
$error = "Not all fields were entered<br />";
}
else
{
$query = "SELECT user,pass FROM members
WHERE user='$user' AND pass='$pass'";
if (mysql_num_rows(queryMysql($query)) == 0)
{
$error = "<span class='error'>Username/Password
invalid</span><br /><br />";
}
else
{
$_SESSION['user'] = $user;
$_SESSION['pass'] = $pass;
header("Location: index.php"); // redirect
}
}
}
?>符号up.php
<?php // Example 21-5: signup.php
include_once 'header.php';
$error = $user = $pass = $email = "";
if (isset($_SESSION['user'])) destroySession();
if (isset($_POST['user']))
{
$user = sanitizeString($_POST['user']);
$pass = sanitizeString($_POST['pass']);
$email = sanitizeString($_POST['email']);
if ($user == "" || $pass == "" || $email == "")
$error = "Not all fields were entered<br /><br />";
else
{
if (mysql_num_rows(queryMysql("SELECT * FROM members
WHERE user='$user'")))
$error = "That username already exists<br /><br />";
else
{
queryMysql("INSERT INTO members VALUES('$user', '$pass', '$email')");
$_SESSION['user'] = $user;
header("Location: index.php"); // redirects
}
}
}
?>发布于 2013-08-03 15:51:21
您正在将登录和注册页面包含到标题页面中,然后在每个登录和注册页面中包含标题页,这似乎是错误的。
要实现你的目标,请按照下面的步骤
创建一个html视图页面,其中您显示登录和注册表单,引用登录和注册php脚本。
因此,如果用户签名向上,那么将他重定向回登录视图
如果他登录,那么将他重定向到内容页面。
最好使用MVC模式,因为它保持布局整洁,调试简单。
希望这能有所帮助。
https://stackoverflow.com/questions/18034387
复制相似问题