View Full Version : PHP/Mysql Login Script
Markpyro
01-23-2006, 10:35 AM
Im a bit rusty, and Im not sure what's wrong with my script. It gives me an error on line 71, which is the first "setcookie"
$username = ($_POST['username']);
$password = ($_POST['password']);
$login = mysql_query("SELECT name FROM users") or die("Database error.");
while($item = mysql_fetch_array($login,MYSQL_ASSOC))
{
if ($username == $item['name'])
{
$psswrd = mysql_query("SELECT password,level FROM users WHERE name == $username") or die("Database error.");
while($chkpass = mysql_fetch_array($psswrd,MYSQL_ASSOC)) {
if ($password == $chkpass['password']
{
setcookie("uname", $username, time()+9000);
setcookie("level", $chkpass['level'], time()+9000);
}
else
{
echo "Password is incorrect";
}
}
}
else
{
echo "username not recognised";
}
}
echo '<a href="index.php">continue</a>'
Thanks,
MP
You didn't close the parenthesis on the if statement on the previous line. :)
Markpyro
01-23-2006, 2:54 PM
Aha! I was looking through all the syntax and making myself go insane, turns out its just a parenthesis.
Thanks TimP
Black.Ice
01-23-2006, 3:12 PM
Here's a good coding style that I learned that helped me solve some syntax errors. (It wouldn't have worked for this specific parenthesis issue, but it might help in the future)
public class MarkPyro extends WarboardsMember
{
String name_;
public MarkPyro(String name)
{
name_ = name;
}//constructor
public void sampleMethod(boolean sample)
{
if(sample == true)
{
System.out.println("Yo, Markpyro");
}//if
}//sampleMethod
}//WarboardsMember
The primary difference is the comments after each bracket. It really helps in long programs.
Markpyro
01-23-2006, 5:00 PM
I've been trying to tab all my lines a bit more, but the comment thing is new. I'll try it.
Oh, and, I've been learning Java as well. I'll have to bug you for help on IRC sometime :P
Markpyro
01-23-2006, 9:09 PM
here is another part of the script im working on, for the user to register (im not looking for anything advanced, by the way, Im just trying to write something simple). I keep getting an error.
(Its a script for a WoW clansite)
$user1 = strlen($_POST['username']);
$pass1 = strlen($_POST['password']);
$userlower = strtolower($_POST['username']);
$passlower = strtolower($_POST['password']);
$passlower2 = strtolower($_POST['password2']);
if ($user1 < 5 || $user1 > 20) {
echo "Your username needs to be at least 4 characters long, but less than 20 characters. ";
}
else {
if ($pass1 < 5 || $pass1 > 20){
echo "Your password needs to be at least 4 characters long, but less than 20 characters";
}
else {
if ($passlower != $passlower2){
echo "Your passwords do not match";}
else{
if (isset($_post['main'] == false)
{
echo "Please go back and enter your main character's name";
}
else{
if (isset($_post['secondary'] == false)
{
mysql_query("INSERT INTO users (name, password, email, char1) VALUES ($userlower . $passlower . $_POST['email'] . $_POST['char1'] )") or die("Database error!");
echo "You are now registered. Login to set your prefrences";
}
else{
mysql_query("INSERT INTO users (name, password, email, char1, char2) VALUES ($userlower . $passlower . $_POST['email'] . $_POST['char1'] . $_POST['char2'] )") or die("Database error!");
echo "You are now registered. Login to set your prefrences.";
}}}}}
}
You're missing closing parenthesis after isset in two cases. You also need commas when you insert those values.
Markpyro
01-24-2006, 5:52 PM
$user1 = strlen($_POST['username']);
$pass1 = strlen($_POST['password']);
$userlower = strtolower($_POST['username']);
$passlower = strtolower($_POST['password']);
$passlower2 = strtolower($_POST['password2']);
if ($user1 < 5 || $user1 > 20) {
echo "Your username needs to be at least 4 characters long, but less than 20 characters. ";
}
else {
if ($pass1 < 5 || $pass1 > 20){
echo "Your password needs to be at least 4 characters long, but less than 20 characters";
}
else {
if ($passlower != $passlower2){
echo "Your passwords do not match";}
else{
if (isset($_post['main']) == false)
{
echo "Please go back and enter your main character's name";
}
else{
if (isset($_post['secondary']) == false)
{
mysql_query("INSERT INTO users (name, password, email, char1) VALUES ($userlower, $passlower, $_POST['email'], $_POST['char1'] )") or die("Database error!");
echo "You are now registered. Login to set your prefrences";
}
else{
mysql_query("INSERT INTO users (name, password, email, char1, char2) VALUES ($userlower, $passlower, $_POST['email'], $_POST['char1'], $_POST['char2'] )") or die("Database error!");
echo "You are now registered. Login to set your prefrences.";
}}}}}
}
Black.Ice
01-24-2006, 6:38 PM
Can you post the error message that you get?
Markpyro
01-26-2006, 12:56 PM
Sorry this took me so long, I thought I already posted it.
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /www/d/deathbycontr/dwarvenlegion/htdocs/regproc.php on line 123
where line 123 is
mysql_query("INSERT INTO users (name, password, email, char1) VALUES ($userlower, $passlower , $_POST['email'] , $_POST['char1'] )") or die("Database error!");
Black.Ice
01-26-2006, 1:03 PM
SQL is my weak point, but I used to have the same problem when I was inserting data into the table for the first time. Usually if you have an auto-increment field (primary key), it causes problems if you don't have data in there. Using phpMyAdmin (if you have access to it), try inserting some fake data and then try the script again.
Also, you can change your database die to die (mysql_error());
That function should produce a more useful error message regarding the problem.
Graeme
01-27-2006, 12:48 PM
Try setting the post data as temporary variables and then setting the mysql query to:
...
mysql_query("INSERT INTO users (name, password, email, char1) VALUES ($userlower , $passlower , $tempvar1 , $tempvar2)") or die("Database error!");
echo "You are now registered. Login to set your prefrences";
}
else{
mysql_query("INSERT INTO users (name, password, email, char1, char2) VALUES ($userlower , $passlower , $tempvar1 , $tempvar2 , $tempvar3)") or die("Database error!");
echo "You are now registered. Login to set your prefrences.";
...
where $tempvar1-3 are the variables you set earlier. Gluck.
vBulletin® v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.