944,051 Members | Top Members by Rank

Ad:
  • PHP Discussion Thread
  • Unsolved
  • Views: 20630
  • PHP RSS
Feb 16th, 2007
0

Creating a login page in PHP

Expand Post »
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
php Syntax (Toggle Plain Text)
  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
Similar Threads
Reputation Points: 10
Solved Threads: 0
Junior Poster
bhavna_816 is offline Offline
116 posts
since Sep 2006
Feb 16th, 2007
0

Re: Creating a login page in PHP

Quote ...
$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.
Reputation Points: 21
Solved Threads: 26
Posting Whiz in Training
Rhyan is offline Offline
240 posts
since Oct 2006
Feb 19th, 2007
0

Re: Creating a login page in PHP

Click to Expand / Collapse  Quote originally posted by Rhyan ...
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
Reputation Points: 10
Solved Threads: 0
Junior Poster
bhavna_816 is offline Offline
116 posts
since Sep 2006
Feb 19th, 2007
0

Re: Creating a login page in PHP

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
Reputation Points: 21
Solved Threads: 26
Posting Whiz in Training
Rhyan is offline Offline
240 posts
since Oct 2006
Feb 20th, 2007
0

Re: Creating a login page in PHP

Click to Expand / Collapse  Quote originally posted by Rhyan ...
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.
Reputation Points: 10
Solved Threads: 0
Junior Poster
bhavna_816 is offline Offline
116 posts
since Sep 2006
Feb 20th, 2007
0

Re: Creating a login page in PHP

Click to Expand / Collapse  Quote originally posted by bhavna_816 ...
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
Reputation Points: 21
Solved Threads: 26
Posting Whiz in Training
Rhyan is offline Offline
240 posts
since Oct 2006

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in PHP Forum Timeline: how to paginate and get the information
Next Thread in PHP Forum Timeline: Simple delete problems.





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC