Login Retreive lost passwordRegister
Search

Forum Index / NL Forum / Doorgaan naar nieuw form na goede invoer

[ This topic is solved ]

  Erik Pasman 01 August 05 / 21:55  
Ik heb een form gemaakt waarin een login en password worden gecheckt via een validatie functie. Als er een foutief wachtwoord wordt ingevoerd krijg in een melding dat de login foutief is, werkt super!

Na een goede login wil ik nu dat er een nieuw form gestart wordt, die in een andere php-file staat. Hoe bouw ik dit nu in? In de oude situatie werd dit aangeroepen vanuit het action-gedeelde, maar als ik dit doe bij het aanmaken van het Form-object dan werkt de validatie niet meer.

  Mels van Kooten 01 August 05 / 22:04  
Kan je niet een php header meegeven of met javascript een 'location' aanroepen? Zoek aub even in het forum. Er zijn meerdere voorbeelden gegeven.

Mocht dit niet werken, dan hebben we graag een stukje code met waar het precies fout gaat.

  Erik Pasman 02 August 05 / 11:54  
Hierbij een stukje code. Bij foutieve invoer krijg ik een melding, maar bij juiste invoer kom ik steeds terug op dezelfde pagina, terwijl hij zou moeten doorstarten naar newpage.php. Wat doe ik fout?


<?php
$form
->textField("Login naam""login"FH_STRING,10,10);
$form->PassField("Wachtwoord""password"FH_PASSWORD,8,8);
    
$form->HiddenField("controle""""LoginOk");      
                  
// submitbutton
$form->submitButton("Log in");
$form->cancelButton("Annuleren""home.php");
     
// set the handler
$form->onCorrect("doRun");
          
// flush it
$form->flush();      
              
function 
LoginOk($val) {
    global 
$form;

    
$query="SELECT * FROM members WHERE Loginnaam = '".trim($form->Value("login"))."' and Wachtwoord = '".trim($form->Value("password"))."'";

    
$result=mysql_query($query);
    if (
mysql_num_rows($result)==0) {
        echo 
"Login incorrect";       
    }
}
     
function 
doRun($data) {
    print 
"<script language='javascript'>"
    print 
"location = newpage.php'";              
    print 
"</script>";  
}
?>


  Teye Heimans (Founder) 02 August 05 / 19:33  
Verander de doRun functie eens in dit:
<?php

function doRun($data) { 
    
$url "newPage.php";
    echo
    
"<script language='javascript'>\n".
    
"document.location.href='".$url."';\n".
    
"</script>\n";

?>

  Erik Pasman 03 August 05 / 13:29  
Helaas, ook met deze aanpassing werkt het nog niet. Als ik bij goede login en wachtwoord op "Login" klik, krijg ik weer hetzelfde formulier in beeld, met daarbij de ingevulde loginnaam in beeld en het veld wachtwoord weer leeggemaakt.

  Teye Heimans (Founder) 03 August 05 / 14:30  
ik kijk vanmiddag ff voor je

  Teye Heimans (Founder) 04 August 05 / 08:36  
Ah, ik zie het al. Het probleem is je controle functie. Als je een nieuwe controle functie maakt moet je formhandler laten weten of het resultaat goed is of niet. Dat doe jij niet.

Probeer het volgende script maar eens:

<?php 

include("FH3/class.FormHandler.php");

$form = new FormHandler();

$form->textField("Login naam""login"FH_STRING,10,10); 
$form->PassField("Wachtwoord""password""LoginOk",8,8);     
                
// 2 fields per row 
$form->setMask
  
"  <tr>\n"
  
"    <td>&nbsp;</td>\n"
  
"    <td>&nbsp;</td>\n"
  
"    <td>%field% %field%</td>\n"
  
"  </tr>\n",
  
false 
); 

// submitbutton 
$form->submitButton("Log in"); 
$form->cancelButton("Annuleren""home.php"); 
      
// set the handler 
$form->onCorrect("doRun"); 
           
// flush it 
$form->flush();       
               
// controleer of er correct is ingelogd...
function LoginOk($password) { 
    
// is het wachtwoord wel goed?
    
if( ! Validator::IsPassword$password ) ) {
        return 
false;
    } else {
        global 
$form

        
// check de database...
        
$query
        
"SELECT COUNT(1) FROM members ".
        
"WHERE Loginnaam = '".trim($form->Value("login"))."' ".
        
"AND Wachtwoord = '".trim($password)."' "
        
$result mysql_query$query ) or die( mysql_error() ); 
    
        
// zijn er records gevonden?
        
if( mysql_result$result) == ) {
            return 
"Login incorrect";        
        } else {
            return 
true;
        }
    }


// wat moet er gebeuren als de login correct was?
function doRun($data) {  
    
$url "newPage.php"
    echo 
    
"<script language='javascript'>\n"
    
"document.location.href='".$url."';\n"
    
"</script>\n"

?>



Ik heb de check voor het wachtwoord en je login check bij elkaar gevoegd. Dit omdat een hidden field geen error message weer kan geven. (althans, niet zonder echo).

  Erik Pasman 05 August 05 / 17:42  
Bedankt, nu werkt het perfect!

  Top


powered by PHP-GLOBE   © 2004 - 2010 FormHandler. All rights reserved.   -   Open source license