Avatar billede budwieser Nybegynder
29. marts 2010 - 13:53 Der er 18 kommentarer og
1 løsning

Php login vil ikke logge in

Hej, jeg er igang med at lave forspørgelsessystem med login. Men når jeg har tilføjet mit brugernavn og kode i mysql databasen, så vil den ikke logge ind, som om brugernavn eller kode ikke passer.

Jeg har kørt systemet på localhost uden problemer også nu her skal det ud på WWW. Men efter at have ændret de nødvendige ting(database, host m.m.) så giver den forkert brugernavn eller kode. Jeg tror jeg har set mig træt på det her.. Nogen der har en frisk ide eller problem shooting??

Dette er scriptet der behandler inputtet fra personen der logger ind.

<?PHP
$user = addslashes($_POST['username']);
$pass = md5($_POST['password']);

if(!isset($_POST['login'])) {
    header("location: login.html");
}
else {

$dbHost        =    "enhost";
$dbUser        =    "enbruger";
$dbPass        =    "passwordet";
$dbDatabase    =    "database";


$db = mysql_connect("$dbHost", "$dbUser", "$dbPass") or die ("Error connecting to database.");

mysql_select_db("$dbDatabase", $db) or die ("Couldn't select the database.");

$result=mysql_query("select * from users where username='$user' AND password='$pass'", $db);



$rowCheck = mysql_num_rows($result);
if($rowCheck > 0){
while($row = mysql_fetch_array($result)){


  session_start();
  $_SESSION['username'] = $user;


  echo 'Success!';


  header( "Location: inde_x.php" );

  }

  }
  else {



  echo 'Forkert brugernavn eller kodeord.';
 
  } }
  ?>
Avatar billede michael_stim Ekspert
29. marts 2010 - 14:23 #1
Nu har jeg ikke "nærkigget" koden igennem, men falder over denne:
session_start();

Den SKAL stå længst oppe i dit script.

<?php
session_start();

//anden kode...
Avatar billede michael_stim Ekspert
29. marts 2010 - 14:40 #2
Ellers prøv at udskrive din sql og sammenlign data med den du har i basen:

$sql="select * from users where username='". $user ."' AND password='". $pass ."'";

echo $sql;
//$result=mysql_query($sql);
Avatar billede budwieser Nybegynder
30. marts 2010 - 09:17 #3
Hej michael_strim jeg har først set på det nu og går straks igang for at se om det kan løse mit problem. Jeg vender tilbage senere med en update.
Avatar billede budwieser Nybegynder
30. marts 2010 - 09:26 #4
Angående session_start(); så skal den jo kun gå i gang hvis password og brugernavn er korrekt. Har også prøvet at rykke den op i toppen uden held. Har så smidt den tilbage igen. Jeg ved ikke om det er fordi jeg har brugt md5(); til at kryptere password?

Da jeg udskriver det viser den at passwordet er:
37eabff983469823dc7069fd372264b8 (md5(); krypteret)
og i i databasen skriver den:
19e9ce83410f12cc.

Har du en løsning på hvad der er gået galt?

På forhånd tak for hjælpen (:
Avatar billede budwieser Nybegynder
30. marts 2010 - 09:29 #5
Nu har jeg prøvet at ændre koden til en simpel ikke krypteret kode og den viser stadig samme problem.. Jeg forstår det simpelhen ikke, for den connecter til database og tabel uden problemer.
Avatar billede budwieser Nybegynder
30. marts 2010 - 09:36 #6
Okay, jeg har fået løst mit problem ved at fjerne md5(); funktionen til at kryptere. Men jeg vil jo helst have denne funktion på. Så hvis du har en løsning kunne det være fint ellers så skal du have din points (:
Avatar billede michael_stim Ekspert
30. marts 2010 - 09:47 #7
Du kan prøve at kryptere i sql'en i stedet. Altså bruge MySQL's MD5 kryptering. Ved ikke hvilken du bruger når du smider data i basen.
Avatar billede budwieser Nybegynder
30. marts 2010 - 09:50 #8
Jeg bruger følgende folspørgerse til at sætte min admin ind:

INSERT INTO users (username,password) VALUES('admin',md5('kodeordet'))
Avatar billede michael_stim Ekspert
30. marts 2010 - 10:02 #9
OK, så brug MySQL's MD5:

$sql="select * from users where username='". $user ."' AND password=md5('". $pass ."')";

Og glem ikke at fjerne den i PHP'en.

$pass = md5($_POST['password']);
Skal så være:
$pass = $_POST['password'];
Avatar billede budwieser Nybegynder
30. marts 2010 - 10:55 #10
Jeg forstår det simpelthen ikke. Forkert kode eller brugernavn.
Nu har jeg sat printf(); ind for at se hvad den bruger af kode:
printf("md5%s", md5($_POST['password'].$_POST['username']));

Resultat:
Forkert brugernavn eller kodeord.md59cf56fa6b73db710c6265a66b7802023

Her er hvad der står i databasen:

37eabff983469823dc70

Det er da ikke samme kryptering?
Er der forskel fra om man indsætte password via php md5(); eller hvis man bruger en mysql command ?
Avatar billede michael_stim Ekspert
30. marts 2010 - 11:06 #11
Udskriv din sql i stedet.

Der udskriver du jo noget helt andet (både password og bruger).
Avatar billede michael_stim Ekspert
30. marts 2010 - 11:20 #12
Skriv til admin. Det er svært at få fat i dem, men skriv at det er vigtigt.
Avatar billede budwieser Nybegynder
30. marts 2010 - 11:23 #13
Nej det er da ikke noget de reklamere med at de har admins..
Avatar billede michael_stim Ekspert
30. marts 2010 - 11:27 #14
http://www.eksperten.dk/profil/lars_pcworld.dk

Han er co_admin. Du kan evt. sende et mail til ham.
Avatar billede budwieser Nybegynder
31. marts 2010 - 12:30 #15
Hej michael, vil du ikke have nogle points for din hjælp? Jeg har ikke løst problemet, men jeg vil gerne takke for hjælpen ved at give dig points
Avatar billede michael_stim Ekspert
31. marts 2010 - 12:55 #16
Samler ikke på point. Skal vi ikke se om vi kan få det løst. Send din nuværende kode (uden password ;o)).
Avatar billede budwieser Nybegynder
08. april 2010 - 12:12 #17
Hej sorry for vente tiden. Jeg har et problem:

Hvordan kan det være at et php script kan køre så ganske fint på ens localhost også bare
falde fra hinanden når det bliver rykket over på net host side??

Så jeg har kørt en error report for at se om jeg får samme fejl begge steder, men det gør
jeg ikke. På localhost logger den ind og gør som den skal, hvor den på internet hosten
kommer med error:
Error: [8] Undefined index: logged_in

Lad os se hvad den brokker sig over.

if ($_SESSION['logged_in'] == true) {
    // If user is already logged in, redirect to main page
    redirect('../index.php');

Det er da underligt da logged_in bliver defineret i min funktion:
function check_login_status() {
    // If $_SESSION['logged_in'] is set, return the status
    if (isset($_SESSION['logged_in'])) {
        return $_SESSION['logged_in'];
    }
    return false;
}

Hvis der er mere i vil undersøge kan i se tutorial'en her:
http://dev.thatspoppycock.com/index.php/Creating_a_Simple_PHP_and_MySQL-Based_Login_System
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester