| | |
Creating a login page in PHP
Please support our PHP advertiser: PostgreSQL or MySQL? Compare and contrast the two most popular open source databases
![]() |
•
•
Join Date: Sep 2006
Posts: 116
Reputation:
Solved Threads: 0
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
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
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)
<?php // Connects to your Database $connect = odbc_connect("bhavnadb", "root", "infini") or die(odbc_error()); //This code runs if the form has been submitted if (isset($_POST['submit'])) { //This makes sure they did not leave any fields blank if (!$_POST['username'] | !$_POST['pass'] | !$_POST['pass2'] ) { die('You did not complete all of the required fields'); } // checks if the username is in use if (!get_magic_quotes_gpc()) { $_POST['username'] = addslashes($_POST['username']);} $usercheck = $_POST['username']; $check = "SELECT username FROM logintable WHERE username = '$usercheck'"; $check2 = odbc_num_rows($check); //if the name exists it gives an error if ($check2 != 0) { die('Sorry, the username '.$_POST['username'].' is already in use.');} // this makes sure both passwords entered match if ($_POST['pass'] != $_POST['pass2']) { die('Your passwords did not match. ');} // here we encrypt the password and add slashes if needed $_POST['pass'] = md5($_POST['pass']); if (!get_magic_quotes_gpc()) { $_POST['pass'] = addslashes($_POST['pass']); $_POST['username'] = addslashes($_POST['username']);} // now we insert it into the database $insert = "INSERT INTO logintable (username, password) VALUES ('".$_POST['username']."', '".$_POST['pass']."')"; $add_member = odbc_exec($connect,$insert); ?> <!-- Now we let them know if their registration was successful --> <IMG SRC=\"\images\logo1.gif\"> <h1>Registered</h1> <p>Thank you, you have registered - you may now login</a>.</p> <?php } else { ?> <!-- This is what they see before they have registered --> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <table border="0"> <tr><td>Username:</td><td> <input type="text" name="username" maxlength="60"> </td></tr> <tr><td>Password:</td><td> <input type="password" name="pass" maxlength="10"> </td></tr> <tr><td>Confirm Password:</td><td> <input type="password" name="pass2" maxlength="10"> </td></tr> <tr><th colspan=2><input type="submit" name="submit" value="Register"></th></tr> </table> </form> <?php } ?>
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
•
•
•
•
$check = "SELECT username FROM logintable WHERE username = '$usercheck'";
$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.
•
•
Join Date: Sep 2006
Posts: 116
Reputation:
Solved Threads: 0
•
•
•
•
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.
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
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
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
•
•
Join Date: Sep 2006
Posts: 116
Reputation:
Solved Threads: 0
•
•
•
•
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
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.
•
•
•
•
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.
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
![]() |
Similar Threads
- How to create one login page in ASP.NET using C# (C#)
- Login Page Database connection to MSAccess (VB.NET)
- Creating Login Page (ASP.NET)
- Creating a Login Page (ASP)
- Creating a login page (ASP)
Other Threads in the PHP Forum
- Previous Thread: how to paginate and get the information
- Next Thread: youtube
| Thread Tools | Search this Thread |
apache api array beginner binary body broken buttons cakephp checkbox class cms code cron curl database date date/time display dynamic ebooks echo email error file files folder form forms function functions global google href htaccess html image include insert ip javascript joomla limit link list login mail mediawiki menu mlm msqli_multi_query multiple mycodeisbad mysql number oop parameter paypal pdf php phpincludeissue problem query radio random recourse recursion regex remote script search seo server sessions sms source sp space speed sql static subdomain syntax system table tag tutorial update upload url validator variable vbulletin video web webdesign white wordpress xml youtube





