19. juli 2007 - 17:23Der er
16 kommentarer og 1 løsning
fejl i login funktion?
Hej, Jeg har nedenstående loginfunktion, men der er et eller andet forkert i den og jeg kan ikke finde fejlen. Jeg har brugt den før hvor den virker fint. Det mærkelige er at jeg har taget den der virker fint og kopieret direkte over, men nu vil den ikke virke! Meget mystisk!
php ser således ud: <?php require_once '../library/config.php'; require_once './library/functions.php';
$errorMessage = ' ';
if (isset($_POST['txtUserName'])) { $result = doLogin(); if ($result != '') { $errorMessage = $result; } } ?>
Selve login funktionen ser således ud: function doLogin() { // if we found an error save the error message in this variable $errorMessage = '';
$userName = $_POST['txtUserName']; $password = $_POST['txtPassword']; // first, make sure the username & password are not empty if ($userName == '') { $errorMessage = 'You must enter your username'; } else if ($password == '') { $errorMessage = 'You must enter the password'; } else { // check the database and see if the username and password combo do match $sql = "SELECT user_id FROM tbl_user WHERE user_name = '$userName' AND user_password = PASSWORD '$password')"; $result = dbQuery($sql); if (dbNumRows($result) == 1) { $row = dbFetchAssoc($result); $_SESSION['plaincart_user_id'] = $row['user_id']; // log the time when the user last login $sql = "UPDATE tbl_user SET user_last_login = NOW() WHERE user_id = '{$row['user_id']}'"; dbQuery($sql); // now that the user is verified we move on to the next page // if the user had been in the admin pages before we move to // the last page visited if (isset($_SESSION['login_return_url'])) { header('Location: ' . $_SESSION['login_return_url']); exit; } else { header('Location: index.php'); exit; } } else { $errorMessage = 'Wrong username or password'; } }
Den kommer hele tiden frem med "wrong username or password", selv om det er det rigtige. Det virker nærmest som om den ikke har forbindelse til database?! Håber der er der kan hjælpe. S
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Prøv at vis hvordan din config.php er sat op. Husk at fjern brugernavn og kodeord.
Synes godt om
Slettet bruger
19. juli 2007 - 23:19#2
require_once '../library/config.php'; require_once './library/functions.php'; Lægger disse 2 filer (config.php & functions.php) ikke i sammen mappe? Så skal du lige rette til, der er et punktum ved den ene og 2 ved den anden.
coldgate - Det er fordi der er en functions.php som høre til admin delen, hvor jeg skal bruge denne login ting, og så er der en overordnet config fil som bruge af både front og backend, så lige det med en eller to . er faktisk rigtig nok, men tak for det! :-)
starten af config filen ser således ud: <?php ini_set('display_errors', 'On'); //ob_start("ob_gzhandler"); error_reporting(E_ALL);
// setting up the web root and server root for // this shopping cart application $thisFile = str_replace('\\', '/', __FILE__); $docRoot = $_SERVER['DOCUMENT_ROOT'];
ja og det gør den ikke. Kan det være noget med opsætningen af serveren det ligger på? Jeg bruger det som sagt et sted hvor det virker, men på denne nye server virker det så ikke.
Ok nu har jeg prøvet at lave noget fejludskrift, men jeg er ikke sikker på det er helt som du mente! :-) Jeg satte dette ind: $errorMessage = 'Wrong username or password '.$result.' '.$sql.' '.dbNumRows($result);
Så funktionen kom til at se således ud: function doLogin() { // if we found an error save the error message in this variable $errorMessage = '';
// first, make sure the username & password are not empty if ($userName == '') { $errorMessage = 'You must enter your username'; } else if ($password == '') { $errorMessage = 'You must enter the password'; } else { // check the database and see if the username and password combo do match $sql = "SELECT user_id FROM tbl_user WHERE user_name = '$userName' AND user_password = PASSWORD('$password')"; $result = dbQuery($sql);
// log the time when the user last login $sql = "UPDATE tbl_user SET user_last_login = NOW() WHERE user_id = '{$row['user_id']}'"; dbQuery($sql);
// now that the user is verified we move on to the next page // if the user had been in the admin pages before we move to // the last page visited if (isset($_SESSION['login_return_url'])) { header('Location: ' . $_SESSION['login_return_url']); exit; } else { header('Location: index.php'); exit; } } else { $errorMessage = 'Wrong username or password '.$result.' '.$sql.' '.dbNumRows($result); }
}
return $errorMessage; }
Min $errorMessage ser så ud sådan her: Wrong username or password Resource id #10 SELECT user_id FROM tbl_user WHERE user_name = 'simon' AND user_password = PASSWORD('simon') 0
Der sker altså et eller andet forkert fra $result = dbQuery ($sql); til dbNumRows($result), men jeg forstår ikke hvad. Jeg er ved at lede efter noget om Resource id #, måske hjælper det? Det skal også lige sige at database forbindelsen fungere fint med alle de funktioner jeg bruger når man er logget ind!
Jeg fik en tekst streng på 41 tegn, men i min database havde jeg sat varchar til 32 tegn. Nu har jeg ændret det i min database og login virkede! FEdt! Men har du en ide til hvorfor det virkede på en anden server med samme opsætning i database som jeg bruger nu, og ikke virkede her? Sender du et svar? Tak for hjælp...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.