Avatar billede langkiller Nybegynder
07. august 2010 - 16:34 Der er 26 kommentarer og
1 løsning

login fejl ?

Står med et problem i forb. med login. Det har virket tidligere, men nu er der noget der går galt..

Den bliver ved med at udskrive:
Password passer ikke sammen med email

Ved ikke hvor fejlen ligger..

[code]
$email = $_POST["email"];
$pass = $_POST["password"];
$error = "";

$userQuery = mysql_query("SELECT id,email,password FROM users WHERE email='$email'");


if(mysql_num_rows($userQuery) != 1)
{
    $error .= "Du eksisterer ikke i databasen.<br>";

}
else
{
    $userArray = mysql_fetch_array($userQuery);

    if($userArray["password"] != MD5($pass))
    {
        $error .= "Password passer ikke sammen med email.<br>";
    }
}


if($error != "")
{
    echo $error . "<a href=\"java script:history.back(-1);\">Tilbage</a>";
}

else
{
    $_SESSION["logged_in"] = 1;
    $_SESSION["user_id"] = $userArray["id"];

    print "<p>&nbsp;</p> Du er nu logget ind med emailen <a href=\"privat.php\">" . $userArray["email"] . "</a> og kan benytte vores service.
            <p>
            <a href=\"index.php\">Gå til forsiden</a>
            ";

}[/code]
Avatar billede langkiller Nybegynder
07. august 2010 - 16:35 #1
Prøver lige igen :)


$email = $_POST["email"];
$pass = $_POST["password"];
$error = "";

$userQuery = mysql_query("SELECT id,email,password FROM users WHERE email='$email'");


if(mysql_num_rows($userQuery) != 1)
{
    $error .= "Du eksisterer ikke i databasen.<br>";

}
else
{
    $userArray = mysql_fetch_array($userQuery);

    if($userArray["password"] != MD5($pass))
    {
        $error .= "Password passer ikke sammen med email.<br>";
    }
}


if($error != "")
{
    echo $error . "<a href=\"java script:history.back(-1);\">Tilbage</a>";
}

else
{
    $_SESSION["logged_in"] = 1;
    $_SESSION["user_id"] = $userArray["id"];

    print "<p>&nbsp;</p> Du er nu logget ind med emailen <a href=\"privat.php\">" . $userArray["email"] . "</a> og kan benytte vores service.
            <p>
            <a href=\"index.php\">Gå til forsiden</a>
            ";

}
Avatar billede olsensweb.dk Ekspert
07. august 2010 - 17:40 #2
er du sikker på at MD5 er med stort ??
den i manualen er med småt :), http://dk.php.net/md5
Avatar billede langkiller Nybegynder
07. august 2010 - 17:51 #3
Der er noget galt med md5 i hvert fald.. prøvede at køre systemet uden den.. det gik fint, men det virker heller ikke hvis det står med småt...
Avatar billede olsensweb.dk Ekspert
07. august 2010 - 19:11 #4
umildbart bliver jeg logget ind, med rigtigt brugernavn og password, og afvist hvis det er forkert pass
mit umildbare gæt kunne være felterne i databasen ikke hedder det du tror, eller du ikke poster det rigtige brugernavn/pass

du kunne jo prøve at echo det ud

vær opmærksom på det må IKKE være blanke tegn i starten/slutningen af username/password,

trim er din ven http://dk2.php.net/trim

$email = trim($_POST["email"]);
$pass = trim($_POST["password"]);


<?php
/* 
-- phpMyAdmin SQL Dump
-- version 3.2.4
-- http://www.phpmyadmin.net
--
-- Vært: localhost
-- Genereringstid: 07. 08 2010 kl. 18:41:30
-- Serverversion: 5.1.41
-- PHP-version: 5.3.1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Database: `test`
--

-- --------------------------------------------------------

--
-- Struktur-dump for tabellen `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `email` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

--
-- Data dump for tabellen `users`
--

INSERT INTO `users` (`id`, `email`, `password`) VALUES
(1, 'test@test.dk', '098f6bcd4621d373cade4e832627b4f6');
*/



$conn = mysql_connect ("localhost", "root", "", true);
if (! $conn )     die( 'Could not connect: ' . mysql_error ());
mysql_select_db("test") or die('Could not select database ');


// kun til test
$email = "test@test.dk";
$pass = "test";


/* gider ikke lige lave en login form
$email = $_POST["email"];
$pass = $_POST["password"];
*/
$error = "";
$sql = "SELECT id,email,password FROM users WHERE email='$email'";
// echo $sql;  // pkt 1, vær opmærksom på at feltnavne er case sensetive på unix systemer, så ID er IKKE det sammen som id
$userQuery = mysql_query($sql, $conn);

if(mysql_num_rows($userQuery) != 1){
    $error .= "Du eksisterer ikke i databasen.<br>";
}
else{
    $userArray = mysql_fetch_array($userQuery);
    if($userArray["password"] != md5($pass)){
        $error .= "Password passer ikke sammen med email.<br>";
    }
}

if($error != ""){
    echo $error . "<a href=\"java script:history.back(-1);\">Tilbage</a>";
}

else{
    $_SESSION["logged_in"] = 1;
    $_SESSION["user_id"] = $userArray["id"];
    print "<p>&nbsp;</p> Du er nu logget ind med emailen <a href=\"privat.php\">" . $userArray["email"] . "</a> og kan benytte vores service.<p><a href=\"index.php\">Gå til forsiden</a>";
    // print_r($_SESSION);
}
?>
Avatar billede olsensweb.dk Ekspert
08. august 2010 - 11:08 #5
prøv at tilføje print_r i din else sætning, så ser vi om du har en db connection, og den rigtige post.
opret evt en testbruger, feks ham her
email = 'test@test.dk'
password = '098f6bcd4621d373cade4e832627b4f6'
via phpmyadmin, så du ikke kompromiterer sikkerheden på dit system, ved at vise data her.

///////////////////////////////////////

else{
    $userArray = mysql_fetch_array($userQuery);   

///////// tilføj print_r, til test
    print_r($userArray); // test check om man henter den rigtige post i databasen
   
    if($userArray["password"] != md5($pass)){
        $error .= "Password passer ikke sammen med email.<br>";
    }
}
Avatar billede langkiller Nybegynder
11. august 2010 - 23:19 #6
hmm den kan ikke lide linje 41..
som er denne:
  if($userArray["password"] != md5($pass))


Parse error: syntax error, unexpected T_IF

?
Avatar billede olsensweb.dk Ekspert
12. august 2010 - 09:10 #7
>Parse error: syntax error, unexpected T_IF
er typisk pga man mangler at afslutte linjen ovenover med et semikolon (;).
du har ændret noget merer ellers kan det ikke passe at  <if($userArray["password"] != md5($pass))> skulle værer linje 41, i den du har posted i #1 er det linje 17, og i min rettet udgave, er vi også langt fra linje 41.
hvis det ikke er det semikolon der mangler må du lige poste din nuværende code
Avatar billede langkiller Nybegynder
12. august 2010 - 10:36 #8
det er fordi jeg ikke har postet hele min kode..

Her er den

<?php
session_start();
mysql_connect("*****","*****","*****");
mysql_select_db("*****");




require("menu.php");

print "
<html>
<head><title> Clich Net - Find the companies or persons you seek</title><link rel=\"stylesheet\" href=\"style.css\"></head>
<body topmargin=\"0\" leftmargin=\"0\" rightmargin=\"0\">
";

topmenu();

menuall();



$email = $_POST["email"];
$pass = $_POST["password"];
$error = "";

$userQuery = mysql_query("SELECT id,email,password FROM users WHERE email='$email'");


if(mysql_num_rows($userQuery) != 1)
{
    $error .= "Du eksisterer ikke i databasen.<br>";

}
else
{
    $userArray = mysql_fetch_array($userQuery);

    if($userArray["password"] != md5($pass))
    {
        $error .= "Password passer ikke sammen med email.<br>";
    }
}


if($error != "")
{
    echo $error . "<a href=\"java script:history.back(-1);\">Tilbage</a>";
}

else
{
    $_SESSION["logged_in"] = 1;
    $_SESSION["user_id"] = $userArray["id"];

    print "<p>&nbsp;</p> Du er nu logget ind med emailen <a href=\"privat.php\">" . $userArray["email"] . "</a> og kan benytte vores service.
            <p>
            <a href=\"index.php\">Gå til forsiden</a>
            ";

}






print "


</body>
</html>
";

?>
Avatar billede olsensweb.dk Ekspert
12. august 2010 - 19:39 #9
jeg har kørt den senest kopiret code, (Skrevet tor. d. 12. august 2010 kl. 10:36:01| #8) uden problemer, jeg har selvføgelig udkommenteret linjerne 9, 17, 19, da jeg ikke har din menu.php

udkommenter linje 9  require("menu.php");
udkommenter linje 17  topmenu();
udkommenter linje 19  menuall();
for at sikre at det ikke er en af disse filer der laver kludder
require bør være require_once alle steder, så filen ikke includerets flerer gange.

<if($userArray["password"] != md5($pass))>, hvis dette skulle værer linje 41 så mangler der 2 linjer, du har vel ikke blanke linjer ovenover php i toppen, det giver problemer med sessions, da de outputter til skærmen

du bør overveje at rette:
mysql_connect("localhost","root","");
mysql_select_db("test");

til

$conn = mysql_connect ("localhost", "root", "", true);
if (! $conn )     die( 'Could not connect: ' . mysql_error ());
mysql_select_db("test") or die('Could not select database ');

jeg læste dette spørgsmål "bruger opret med aktiveringskode fejl ?" ( http://www.eksperten.dk/spm/915307 )
der kan jeg se du også bruger MD5 med stort, og hvis det krypterer på en anden måde end md5 md småt, så kommer du aldrig ind, jeg har aldrig set det med stort

får du dit login fra http://clich.net/ ??,
$email = $_POST["email"]; // skulle så værer $email = $_POST["brugernavn"];
$pass = $_POST["password"];

hvornår afsluttes eksamens opgaven ??
Avatar billede langkiller Nybegynder
12. august 2010 - 23:15 #10
Jeg har ændret require til require_once alle steder nu. Tror dog ikke det har noget at sige da det bare er en menu lavet i html osv.

ang. linje 41 altså <if($userArray["password"] != md5($pass))> har du ret.. det var 2 linjer længere nede. jeg tog fejl det er denne:

$error .= "Password passer ikke sammen med email.<br>";


Har også ændret den del i toppen der skaber forbindelse til db'en

Får stadig samme fejl.. ved ikke hvad du selv har gjort siden du kunne få det til at fungere ?

Siden Clich.net er min ja, men den side der ligger der er en eksamensopgave fra hhx her for et par måneder siden.. Login systemet virker fint der.. og da det er det samme system jeg bruger nu her igen forstår jeg ikke hvad problemet er. Det virkere uden md5 fandt jeg ud af..
Avatar billede langkiller Nybegynder
12. august 2010 - 23:17 #11
Jeg har ændret MD5 til md5 siden den gamle tråd med oprettelse osv..
Avatar billede langkiller Nybegynder
13. august 2010 - 01:06 #12
http://clich.net/projekt/loginform.php

er den aktuelle login form
Avatar billede langkiller Nybegynder
13. august 2010 - 01:11 #13
Kom til at lægge filerne op det forkerte sted..
fejl meddelelsen er nu:

Parse error: syntax error, unexpected $end in /var/www/clich.net/public_html/projekt/login.php on line 75

linje 75 er den sidste altså "?>"
Avatar billede olsensweb.dk Ekspert
13. august 2010 - 09:01 #14
>Parse error: syntax error, unexpected $end in /var/www/clich.net/public_html/projekt/login.php on line 75
du har noget der ikke er afsluttet i filen
http://www.eksperten.dk/spm/909532 har haft sammen problem

læs dette http://en.kioskea.net/faq/3377-parse-error-syntax-error-unexpected-end

hvis du udkommenterer disse 3 linjer vil det nok virker
udkommenter linje 9  require("menu.php");
udkommenter linje 17  topmenu();
udkommenter linje 19  menuall();

alternativt poste hele coden til menu.php, jeg tror du har en syntax fejl der

jeg prøvede at oprette mig selv som bruger, men man kan ikke lave en verify på oprettet bruger

på tilsendte mail, verify af bruger vireker ikke
The requested URL /verify.php was not found on this server.

en valid bruger der ikke er verificeret
Parse error: syntax error, unexpected $end in /var/www/clich.net/public_html/projekt/login.php on line 75
Avatar billede langkiller Nybegynder
13. august 2010 - 11:23 #15
Du har ret. Manglede en } til sidst.. ved ikke hvorfor den var blevet slettet.. Nu får jeg så den fejl medd. du har tilføjet til toppen: "Could not connect:"

Men der er da ikke fejl i password eller adresse e.l. når der skal skabes forbindelse til db.

Jeg udkommenteret de 3 linjer, hvilket ikke gjorde nogen forskel.

Ang. The requested URL /verify.php was not found on this server.
skyldes at jeg flyttede det hele over i en mappe kaldet "projekt"
Linket der sendes til mailen skulle i stedet være projekt/verify.php og derfor kan den ikke findes

Men om man er aktiveret eller ej har ingen betydning for login endnu. Det venter jeg med at tilføje..
(det der sker når man klikke på linket er at den laver en UPDATE af et felt i db'en, verify erstattes af activated)
Avatar billede olsensweb.dk Ekspert
13. august 2010 - 11:50 #16
>Nu får jeg så den fejl medd. du har tilføjet til toppen: "Could not connect:"
det var dog herligt, vi har IKKE forbindelse til databasen,
du har ikke angivet den rigtige, dbhost, dbbruger, dbpassword, her
$conn = mysql_connect ("localhost", "root", "", true);
Avatar billede langkiller Nybegynder
13. august 2010 - 13:04 #17
har rettet det.. nu er der forbindelse, men nu mener den ikke at password og email passer sammen.. igen :S

Tror det er noget med den kryptering der (eller hvad man kalder det). md5.. ?
Avatar billede olsensweb.dk Ekspert
13. august 2010 - 14:03 #18
jeg tror snarrer der står noget forkert i databasen

prøv at tilføje print_r($userArray);, efter $userArray = mysql_fetch_array($userQuery); i linje 38

$userArray = mysql_fetch_array($userQuery);
print_r($userArray); // kunne også være interessant, check om man henter den rigtige post i databasen
    if($userArray["password"] != md5($pass))
    {
        $error .= "Password passer ikke sammen med email.<br>";
    }


den vil udskrive:
Array ( [0] => 1 [id] => 1 [1] => test@test.dk [email] => test@test.dk [2] => 098f6bcd4621d373cade4e832627b4f6 [password] => 098f6bcd4621d373cade4e832627b4f6 )
+ besked om man er logget ind eller afvist
Avatar billede langkiller Nybegynder
13. august 2010 - 22:08 #19
Må indrømme at jeg ikke rigtig forstår det den udskriver.

Array ( [0] => 60 [id] => 60 [1] => mads275o@hotmail.com [email] => mads275o@hotmail.com [2] => 6512bd43d9caa6e02c99 [password] => 6512bd43d9caa6e02c99 ) Password og brugernavn passer ikke sammen.

Siger det noget om hvor fejler ligger ?
Avatar billede olsensweb.dk Ekspert
14. august 2010 - 10:42 #20
>Må indrømme at jeg ikke rigtig forstår det den udskrive
60 er dit id i databasen
mads275o@hotmail.com er dit login navn
6512bd43d9caa6e02c99 er dit password krypterede.

dette skriver den på min login
Array ( [0] => 57 [id] => 57 [1] => eksperten@olsensweb.dk [email] => eksperten@olsensweb.dk [2] => 098f6bcd4621d373cade [password] => 098f6bcd4621d373cade )

hov
098f6bcd4621d373cade
skulle skrive
098f6bcd4621d373cade4e832627b4f6

det vil sige den trunkerer mit pw,  dit pw felt i data basen er for lille.
dit pw felt er på 20 karakterer, og skal værer på min 32 karakterer.

hvilke bekræftiges af http://www.eksperten.dk/spm/915307 #35


1) udvid password feltet i databasen til mindst 32 karakterer jeg bruger typisk 50, gøres i phpmyadmin

2) du kan godt rette mit til 098f6bcd4621d373cade4e832627b4f6
du kan se hvad dit eget skal blive her http://www.md5encrypter.com/

de andre brugere, autogenerer et nyt pw til brugeren, og send til bruger, derefter skal det md5's og ligges i databasen.

der må bør lave en / har måske allerede en admin function der hedder "reset pw" der sender brugeren et nyt pw, og opdaterer brugerens pw felt,


[citat]
http://dk2.php.net/md5
Return Values
Returns the hash as a 32-character hexadecimal number
[/citat]
Avatar billede olsensweb.dk Ekspert
14. august 2010 - 11:06 #21
>der må bør lave en / har måske allerede en admin function der hedder "reset pw" der sender brugeren et nyt pw, og opdaterer brugerens pw felt,

http://clich.net/projekt/loginform.php har du jo "Forgot password?",
og http://clich.net/ "Glemt adgangskode?"
de er så ikke lavet/lagt op ennu.

så nu tvinges du til at lave den function :)
Avatar billede olsensweb.dk Ekspert
14. august 2010 - 12:02 #22
jeg kan se du er igang, der mangler stadig 2 karakterer
du har kun sat det til 30, du skal op på 32
Avatar billede olsensweb.dk Ekspert
14. august 2010 - 12:09 #23
Ja sku
Array ( [0] => 57 [id] => 57 [1] => eksperten@olsensweb.dk [email] => eksperten@olsensweb.dk [2] => 098f6bcd4621d373cade4e832627b4f6 [password] => 098f6bcd4621d373cade4e832627b4f6 )

det var dette vi ville se

Du er nu logget ind med brugernavnet og kan benytte vores service.

Gå til forsiden


så må du hellere slette dette "print_r($userArray);",i linje 39
Avatar billede langkiller Nybegynder
14. august 2010 - 12:19 #24
Yes der var den ! Så giver det lige pludselig mening :)
Mange tak for hjælpen ronols .!

Hvis du er pointsamler, kan du jo lægge et svar.


-----------------------------

http://clich.net/ (eksamens projektet om PostDK) havde jeg tænkt mig at lave den funktion med glemt pass, men nåede det ikke så det kan være lidt lige meget nu..

http://clich.net/projekt/loginform.php har jeg tænkt mig at forsøge at lave sådan en funktion så vil lige kigge lidt nærmere på http://dk2.php.net/md5 :)
Avatar billede olsensweb.dk Ekspert
14. august 2010 - 13:10 #25
svar
det var en lang og hård omgang.

du må hellere slette min bruger
slet også  print_r($userArray);,i linje 39 det er en sikkerheds brist uden lige
Avatar billede olsensweb.dk Ekspert
14. august 2010 - 13:10 #26
skulle ha varet svar
Avatar billede langkiller Nybegynder
14. august 2010 - 13:53 #27
Ja det var noget af en omgang :P 

Jep alle print_r skulle være slettet nu og din bruger er også slettet.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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