Creating a login page in PHP

Reply

Join Date: Sep 2006
Posts: 116
Reputation: bhavna_816 is an unknown quantity at this point 
Solved Threads: 0
bhavna_816 bhavna_816 is offline Offline
Junior Poster

Creating a login page in PHP

 
0
  #1
Feb 16th, 2007
i want to make a PHP page which have username and password and this
username and password should be saved in MySql table and the page should
redirect to another page.
i want to use ODBC and PHP.
i am very new to PHP.
Can anybody having any clue for making such application?
this is my code
  1. <?php
  2. // Connects to your Database
  3. $connect = odbc_connect("bhavnadb", "root", "infini") or die(odbc_error());
  4. //This code runs if the form has been submitted
  5. if (isset($_POST['submit'])) {
  6. //This makes sure they did not leave any fields blank
  7. if (!$_POST['username'] | !$_POST['pass'] | !$_POST['pass2'] ) {
  8. die('You did not complete all of the required fields');
  9. }
  10. // checks if the username is in use
  11. if (!get_magic_quotes_gpc()) {
  12. $_POST['username'] = addslashes($_POST['username']);}
  13. $usercheck = $_POST['username'];
  14. $check = "SELECT username FROM logintable WHERE username = '$usercheck'";
  15. $check2 = odbc_num_rows($check);
  16. //if the name exists it gives an error
  17. if ($check2 != 0) {
  18. die('Sorry, the username '.$_POST['username'].' is already in use.');}
  19. // this makes sure both passwords entered match
  20. if ($_POST['pass'] != $_POST['pass2']) {
  21. die('Your passwords did not match. ');}
  22. // here we encrypt the password and add slashes if needed
  23. $_POST['pass'] = md5($_POST['pass']);
  24. if (!get_magic_quotes_gpc()) {
  25. $_POST['pass'] = addslashes($_POST['pass']);
  26. $_POST['username'] = addslashes($_POST['username']);}
  27. // now we insert it into the database
  28. $insert = "INSERT INTO logintable (username, password) VALUES ('".$_POST['username']."', '".$_POST['pass']."')";
  29. $add_member = odbc_exec($connect,$insert);
  30. ?>
  31. <!-- Now we let them know if their registration was successful -->
  32. <IMG SRC=\"\images\logo1.gif\">
  33. <h1>Registered</h1>
  34. <p>Thank you, you have registered - you may now login</a>.</p>
  35. <?php
  36. }
  37. else
  38. {
  39. ?>
  40. <!-- This is what they see before they have registered -->
  41. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  42. <table border="0">
  43. <tr><td>Username:</td><td>
  44. <input type="text" name="username" maxlength="60">
  45. </td></tr>
  46. <tr><td>Password:</td><td>
  47. <input type="password" name="pass" maxlength="10">
  48. </td></tr>
  49. <tr><td>Confirm Password:</td><td>
  50. <input type="password" name="pass2" maxlength="10">
  51. </td></tr>
  52. <tr><th colspan=2><input type="submit" name="submit" value="Register"></th></tr> </table>
  53. </form>
  54. <?php
  55. }
  56. ?>
  57.  
what's wrong with this code ?????????
it is showing error
Warning: odbc_num_rows(): supplied argument is not a valid ODBC result resource in C:\Inetpub\wwwroot\scripts\PHPCodes\testlogin.php on line 18
Warning: odbc_exec() [function.odbc-exec]: SQL error: [MySQL][ODBC 3.51 Driver][mysqld-5.0.22-community-nt]Data too long for column 'password' at row 1, SQL state S1T00 in SQLExecDirect in C:\Inetpub\wwwroot\scripts\PHPCodes\testlogin.php on line 35
Last edited by stymiee; Feb 16th, 2007 at 11:13 am. Reason: added code tags
Reply With Quote Quick reply to this message  
Join Date: Oct 2006
Posts: 232
Reputation: Rhyan is an unknown quantity at this point 
Solved Threads: 24
Rhyan's Avatar
Rhyan Rhyan is offline Offline
Posting Whiz in Training

Re: Creating a login page in PHP

 
0
  #2
Feb 16th, 2007
$check = "SELECT username FROM logintable WHERE username = '$usercheck'";
First error is here. I don't know witch version of PHP you're using, however there is some change since 4.x that does not allow when creating MySQL requests to user variables inside querries. Use it like this:

$check = 'SELECT username FROM logintable WHERE username ="'. $usercheck.';";

It will work like that.

2nd error is that your password, when encrypted, becomes more characters than you have assigned for the table. Run querry in mysql console "describe logintable;" and check for Password column how many chars are assigned. E.g. you should see something like this:

password varchar(45) not null;

If you're using UTF8 as encoding in order to store 45 chars, you should double the number, that is you should make it 90 chars.

Make the changes and advise if solved your problems.
Reply With Quote Quick reply to this message  
Join Date: Sep 2006
Posts: 116
Reputation: bhavna_816 is an unknown quantity at this point 
Solved Threads: 0
bhavna_816 bhavna_816 is offline Offline
Junior Poster

Re: Creating a login page in PHP

 
0
  #3
Feb 19th, 2007
Originally Posted by Rhyan View Post
First error is here. I don't know witch version of PHP you're using, however there is some change since 4.x that does not allow when creating MySQL requests to user variables inside querries. Use it like this:

$check = 'SELECT username FROM logintable WHERE username ="'. $usercheck.';";

It will work like that.

2nd error is that your password, when encrypted, becomes more characters than you have assigned for the table. Run querry in mysql console "describe logintable;" and check for Password column how many chars are assigned. E.g. you should see something like this:

password varchar(45) not null;

If you're using UTF8 as encoding in order to store 45 chars, you should double the number, that is you should make it 90 chars.

Make the changes and advise if solved your problems.
my php version is 4.4.4 and mysql is 5.0

and now when i changed this
password varchar(45) not null;
then its working fine but still there is an error in
$check = "SELECT username FROM logintable WHERE username = '$usercheck'";
$check2 = odbc_num_rows($check);
and the error is
Warning: odbc_num_rows(): supplied argument is not a valid ODBC result resource in \testlogin.php on line 18
Last edited by bhavna_816; Feb 19th, 2007 at 9:34 am. Reason: problem edited
Reply With Quote Quick reply to this message  
Join Date: Oct 2006
Posts: 232
Reputation: Rhyan is an unknown quantity at this point 
Solved Threads: 24
Rhyan's Avatar
Rhyan Rhyan is offline Offline
Posting Whiz in Training

Re: Creating a login page in PHP

 
0
  #4
Feb 19th, 2007
The num_rows function does not execute the query, but returns how many rows have been affected by your query...

I have never used the PHP odbc libraries, however, I think, that first you should run the query using smth like this:
[php] $query = odbc_mysql_query($check);
$check2 = odbc_num_rows($query); [/php]

If this does not work, try substituting the ($query) with your linkg identifier - e.g. you hsould have something like $connect = mysql_connect('localhost', 'user', 'pass');
So substitute the ($query) with ($connect).

Hope it will work for you
Reply With Quote Quick reply to this message  
Join Date: Sep 2006
Posts: 116
Reputation: bhavna_816 is an unknown quantity at this point 
Solved Threads: 0
bhavna_816 bhavna_816 is offline Offline
Junior Poster

Re: Creating a login page in PHP

 
0
  #5
Feb 20th, 2007
Originally Posted by Rhyan View Post
The num_rows function does not execute the query, but returns how many rows have been affected by your query...

I have never used the PHP odbc libraries, however, I think, that first you should run the query using smth like this:
[php] $query = odbc_mysql_query($check);
$check2 = odbc_num_rows($query); [/php]

If this does not work, try substituting the ($query) with your linkg identifier - e.g. you hsould have something like $connect = mysql_connect('localhost', 'user', 'pass');
So substitute the ($query) with ($connect).

Hope it will work for you
no both the things are not working!
actually mysql_connect('localhost', 'user', 'pass');
is written when we use mysql database only but i want to use ODBC so this syntax would not work.ofcourse my database is mysql.
Reply With Quote Quick reply to this message  
Join Date: Oct 2006
Posts: 232
Reputation: Rhyan is an unknown quantity at this point 
Solved Threads: 24
Rhyan's Avatar
Rhyan Rhyan is offline Offline
Posting Whiz in Training

Re: Creating a login page in PHP

 
0
  #6
Feb 20th, 2007
Originally Posted by bhavna_816 View Post
no both the things are not working!
actually mysql_connect('localhost', 'user', 'pass');
is written when we use mysql database only but i want to use ODBC so this syntax would not work.ofcourse my database is mysql.
I am not familiar with the ODBC ways to connect to MySQL. Still the logic is always the same:

1. Connect to DB
2. Select DB
3. Enter query
4. Get results from query
5. Close connection

You should follow these steps whatever way of connection you use with the DB.

so, you should do smth like this:
[php]
//1. Connect
$connect = odbc_connect(database, user, pass);
//2. I assume that for ODBC database selection is done with the connect opiton...Still you have to check more in detail the php manual.
//3.Enter query
$query = 'SELECT STATEMENT GOES HERE';
$runquery = odbc_exec($connect, $query);
//4. Retrieve information
$rowsAffected = odbc_num_rows($runquery);
for ($i=0; $i<$rowsAffected; $i++)
{
$result[$i]=odbc_fetch_array($runquery);
}
[/php]

You should be able then to read the $result[] array to retrieve data. Note that result[0] will hold another array what may be accessed using the column name for each item. E.G. if your table column name is 'username' you can access the data in the array like this:
[php]
$resultrow = $result[0];
echo $resultrow['username'];
[/php]

Good luck
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:


Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC