[FX.php List] Results of FMNew()

andy at fmpug.com andy at fmpug.com
Mon Dec 12 07:59:10 MST 2005


Chuck -

Here is an example login system that should work for you.

<?php
//Set the variables to NULL.
$Username = NULL;
$Password = NULL;

$Username =$_REQUEST['Username'];
//Create a new variable for the username search that escapes out the @ character
$UsernameSearch = str_replace('@','\@',$Username); 
$Password=$_REQUEST['Password'];

Check to see if the username AND password have content. If either are empty then redirect to a login failed page
if (strlen($Username) <=0 or strlen ($Password) <= 0 ) {
		header ("Location:login_failed.php");
		exit();
}

$checklogin=new FX($serverIP,$webCompanionPort);
$checklogin->SetDBData('filename','layout');
$checklogin->SetDBPassword('password','accountname');

$checklogin->AddDBParam('username', $UsernameSearch ,"eq");
$checklogin->AddDBParam('password', $Password, "eq");
$checkloginResult=$checklogin->FMFind();

?>

This requires that BOTH the username AND password are filled in. Also requires that both the fields match for a single record (no partial matches here)

Let me know how you get on with this one. I know this one works as we just implimented it for a client.

Regards

Andy
andy at fmpug.com
http://www.fmpug.com

>
>Andy,
>
>> I believe an operator of 'eq' on both would find what you wish.
>
>That's what I tried first. My Logins table has a single record.  
>EmailAddress = "chivalry at mac.com", Password = "1234". Here's the line  
>of code that sets the database parameters:
>
>   $search->AddDBParam('Password', $Password, 'eq');
>   $search->AddDBParam('EmailAddress', $EmailAddress, 'eq');
>
>Searching for EmailAddress = "chiv", Password = "1234" successfully  
>brings up the record when it shouldn't. Change the code:
>
>   $search->AddDBParam('Password', '=='.$Password);
>   $search->AddDBParam('EmailAddress', '=='.$EmailAddress);
>
>Now it doesn't find the record when it should. Searching for  
>EmailAddress = "chivalry at mac.com" and Password = "1234" does not  
>bring up the record. Change:
>
>   $search->AddDBParam('Password', '=='.$Password, 'bw');
>   $search->AddDBParam('EmailAddress', '=='.$EmailAddress, 'bw');
>
>Also doesn't find the record when it should. Maybe the @ symbol is  
>causing problems because FM considers it a wildcard character. Change:
>
>   $search->AddDBParam('Password', '=="'.$Password.'"', 'bw');
>   $search->AddDBParam('EmailAddress', '=="'.$EmailAddress.'"', 'bw');
>
>Searching for "chivalry at mac.com", "1234" works correctly, but the  
>record is also found when searching for "chivalry", "1234";  
>"hivalry", "1234". Change:
>
>   $search->AddDBParam('Password', '=="'.$Password.'"', 'eq');
>   $search->AddDBParam('EmailAddress', '=="'.$EmailAddress.'"', 'eq');
>
>I'm just trying randomly now. This one never finds the record.
>
>> We use a strict login system for both fields on FMPug (which in  
>> case you were wondering is entirely FileMaker and FX.PHP driven.  
>> Even our new footer banners are coming out of FileMaker Pro on a  
>> rotating banner schedule) and in the new year will also be making  
>> this case sensitive for both username and password.
>>
>> We also ensure that both fields have been filled in first. If they  
>> have not then we use a header redirect to a login failed page  
>> before we even try to connect to the FileMaker database.
>
>Any hopes of seeing the way you do your login system? Right now, I'm  
>leaving the code in the second to last state above, as at least it  
>allows me to fake the login system working correctly so I can move  
>onto other features.
>
>Thanks,
>Chuck
>_______________________________________________
>FX.php_List mailing list
>FX.php_List at mail.iviking.org
>http://www.iviking.org/mailman/listinfo/fx.php_list


More information about the FX.php_List mailing list