Re[4]: [PHP] setting request variables
| From: | Tom Rogers | Date: | Thu, 04 Mar 2004 11:27:52 +0000 |
| Subject: | Re[4]: [PHP] setting request variables | ||
| References: | 1 2 3 4 5 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-179428@lists.php.net to get a copy of this message | ||
Hi,
Thursday, March 4, 2004, 8:11:16 PM, you wrote:
mo> Thanks for your reply,
mo> I am still a bit confused though as the var error is never set! i.e. in your
mo> code example below $error is never going to be set! Basically I have 2 pages
mo> as follows:
mo> page1.php - login form page
mo> page2.php - validation page
mo> page2.php checks the usernae and password against database and if all is
mo> well it sends to the members area. If there was an error then it sends back
mo> to the login page. When there is an error on page2.php I want to set a
mo> request variabel called "$someError" with a value representing the error
mo> that occured i.e. "Please enter a username" or "Please enter a password"
mo> or
mo> "Invalid username" or "invalid password" etc.. Then on page1.php just
mo> before
mo> the login form I would do:
mo> if (!empty($_POST('someError'))) {
mo> echo $_POST('someError');
mo> }
mo> //display login form.
mo> So my question is how do I add the variable $someError to the request with
mo> the value "invalid usernam" and disaply this on page1.php
mo> $error = ''; //assume no errors
mo> if(isset($_PHP['password'] && !empty($_POST['username']){
mo> $sql = "SELECT id FROM members WHERE
mo> username = '".$_POST['username']."'
mo> AND password = '".$_POST['password']."'";
mo> $result = mysql_query($sql);
mo> if(!$mysql_num_rows($result) > 0){
mo> $error = '<font color="red"><b>Error:</b> Invalid
mo> password</font>';
mo> include('login.php');
mo> exit;
mo> }
mo> //password ok
mo> echo 'Welcome '.$_POST['username'].'<br>';
mo> }else{
mo> //first pass and $error is still empty
mo> include('login.php');
mo> }
mo> ----- Original Message -----
mo> From: "Tom Rogers" <trogers@kwikin.com>
mo> To: "matthew oatham" <m.oatham@ntlworld.com>
mo> Cc: <php-general@lists.php.net>
mo> Sent: Thursday, March 04, 2004 2:02 AM
mo> Subject: Re[2]: [PHP] setting request variables
But you are not posting to the login page ...you are including it so
all the variables are available. $error only gets filled if there is
an error, thats why in login.php we do a check to see if it is
!empty() which would indicate something has gone wrong.
Try this simplified code to demonstrate the flow:
(validate.php)
<?php
if(isset($_POST['submit'])){
$error = '';
if($_POST['username'] != 'Fred'){
$error = '<font color="red"><b>Error: </b>You did
not enter Fred</font>';
include('./login.php');
exit;
}else{
?>
<html>
<head>
<title>Success</title>
</head>
<body>
<h1> Welcome Fred</h1>
</body>
</html>
<?php
}
}else{
include('./login.php');
}
?>
(login.php)
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="validate.php" method="post">
<table border="1">
<tr>
<td>Login</td>
</tr>
<?php if(isset($error) && !empty($error)):?>
<tr>
<td><?php echo $error?></td>
</tr>
<?php endif?>
<tr>
<td><input type="text" name="username"
value=""></td>
</tr>
<tr>
<td><input type="submit" name="submit"
value="submit"></td>
</tr>
</table>
</form>
</body>
</html>
Then go to validate.php or login.php it won't matter :)
--
regards,
Tom