Avatar billede kack Nybegynder
23. december 2003 - 13:08 Der er 24 kommentarer og
1 løsning

login problem

Jeg har forsøgt mig med noget php, og mysql.

Mysql og alt det der virker vidst fint nok, men jeg har et problem, i en fil jeg kalder: login_ok.php

I kan se problemet her: www.kack.dk/bruger/index.php (prøv at logge ind)

Som i sikkert kan se kommer der nogle fejl i min kode.

Dette er min kode:



PHP:-------------------------------------------------------
<?
include ("config.php");
mysql_connect($host,$user,$pass);
mysql_select_db($db);
$query = mysql_query("SELECT brugernavn, password, email, id FROM brugersys WHERE navn='$brugernavn' AND password='$password'");
if mysql_num_rows($query) == "0"){
?>
<center>
<font color="red">Forkert Brugernavn og/eller Kodeord</font>
Prøv igen eller opret dig som medlem.
</center>
<?
} else {
while($r = mysql_fetch_array($query)) {
$s_navn = $r["brugernavn"];
$s_password = $r["password"];
$s_email = $r["email"];
$s_id = $r["dato"];
}
session_start();
session_register ("s_brugernavn");
session_register ("s_password");
session_register ("s_email");
session_register ("s_navn");
session_register ("s_efternavn");
session_register ("s_alder");
session_register ("s_id");
header ("location: indhold.php");
}
?>


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


Hvad er der galt med den?
Avatar billede nikolajdu Nybegynder
23. december 2003 - 13:14 #1
if (mysql_num_rows($query) == 0){
Avatar billede detox Nybegynder
23. december 2003 - 13:15 #2
Måske der er noget galt med nogle oplysninger i din 'config.php'. Det ser ikke ud til at den kan vælge en database.
Avatar billede nikolajdu Nybegynder
23. december 2003 - 13:19 #3
1. flyt din session start op i toppen.
2. Sæt den manglende parentes
3. Connect til den rigtige database
4. Sæt sessions med :  $_SESSION["s_id"] = session_id() og $_SESSION["s_brugernavn"] = $s_brugernavn;
Avatar billede detox Nybegynder
23. december 2003 - 13:23 #4
Og så har du ikke brug for en while løkke, da der jo kun er en række i resultatet.
Avatar billede detox Nybegynder
23. december 2003 - 13:29 #5
Prøv evt. sådan her:

$lnk = mysql_connect($host,$user,$pass) or die('Ingen forbindelse : ' . mysql_error());
mysql_select_db($db, $lnk) or die('Ingen database : ' . mysql_error());
Avatar billede detox Nybegynder
23. december 2003 - 13:30 #6
Og ellers vil jeg give nikolajdu ret.
Avatar billede kack Nybegynder
23. december 2003 - 13:46 #7
Wee... det virker næsten nu... Der er dog stadig en fejl. Hvad kan det skyldes?
Avatar billede detox Nybegynder
23. december 2003 - 13:53 #8
Prøve at ændre:

$query = mysql_query("SELECT brugernavn, password, email, id FROM brugersys WHERE navn='$brugernavn' AND password='$password'");

til:

$query = mysql_query("SELECT brugernavn, password, email, id FROM brugersys WHERE navn='".$_POST['brugernavn']."' AND password='".$_POST['password']."'") or die(mysql_error());
Avatar billede kack Nybegynder
23. december 2003 - 13:59 #9
så er det også gjort... Der står:
Unknown column 'password' in 'field list'
Avatar billede detox Nybegynder
23. december 2003 - 14:01 #10
Så mangler du feltet 'password' i din tabel.
Avatar billede nikolajdu Nybegynder
23. december 2003 - 14:02 #11
findes feltet "password" og hedder det sådan?
Avatar billede kack Nybegynder
23. december 2003 - 14:06 #12
det var fordi det hed "kodeord" har rettet det nu.. Kan bare ikke helt forstå hvorfor den siger "forkert password, elelr brugernavn" når man så logger ind, når man har indtastet dt rigtige..

Sry, hvis jeg stiller en masse dumme spørgsmål, men er noob til php :(
Avatar billede nikolajdu Nybegynder
23. december 2003 - 14:08 #13
Kan du ikke vise os den "nye" kode :))
Avatar billede detox Nybegynder
23. december 2003 - 14:08 #14
Måske sådan:

$query = mysql_query("SELECT brugernavn, password, email, id FROM brugersys WHERE brugernavn='".$_POST['brugernavn']."' AND kodeord='".$_POST['password']."'") or die(mysql_error());
Avatar billede detox Nybegynder
23. december 2003 - 14:09 #15
Eller:

$query = mysql_query("SELECT * FROM brugersys WHERE brugernavn='".$_POST['brugernavn']."' AND kodeord='".$_POST['password']."'") or die(mysql_error());
Avatar billede kack Nybegynder
23. december 2003 - 14:09 #16
jo.. Her er den nye kode:

<?
session_start();
include ("config.php");
mysql_connect($host,$user,$pass);
mysql_select_db($db);
$query = mysql_query("SELECT brugernavn, password, email, id FROM brugersys WHERE navn='".$_POST['brugernavn']."' AND password='".$_POST['password']."'") or die(mysql_error());
if (mysql_num_rows($query) == 0){

?>
<center>
<font color="red">Forkert Brugernavn og/eller Kodeord</font><br>
Prøv igen eller opret dig som medlem.
</center>
<?
} else {
while($r = mysql_fetch_array($query)) {
$s_navn = $r["brugernavn"];
$s_password = $r["password"];
$s_email = $r["email"];
$s_id = $r["dato"];
}
$_SESSION["s_brugernavn"] = $s_brugernavn;
$_SESSION["s_password"] = $s_password;
$_SESSION["s_email"] = $s_email;
$_SESSION["s_navn"] = $s_navn;
$_SESSION["s_efternavn"] = $s_efternavn;
$_SESSION["s_alder"] = $s_alder;
$_SESSION["s_id"] = session_id();
header ("location: indhold.php");
}
?>
Avatar billede detox Nybegynder
23. december 2003 - 14:18 #17
Prøv:

<?
session_start();
include ("config.php");
mysql_connect($host,$user,$pass);
mysql_select_db($db);
$query = mysql_query("SELECT * FROM brugersys WHERE brugernavn='".$_POST['brugernavn']."' AND password='".$_POST['password']."'") or die(mysql_error());
if (mysql_num_rows($query) == 1){
    $r = mysql_fetch_array($query);
    $_SESSION["s_brugernavn"] = $r["brugernavn"];
    $_SESSION["s_password"] = $r["password"];
    $_SESSION["s_email"] = $r["email"];
    $_SESSION["s_navn"] = $r["navn"];
    $_SESSION["s_efternavn"] = $r["efternavn"];
    $_SESSION["s_alder"] = $r["alder"];
    $_SESSION["s_id"] = $r["dato"];
    header ("location: indhold.php");
} else {
?>
    <center>
    <font color="red">Forkert Brugernavn og/eller Kodeord</font><br />
    Prøv igen eller opret dig som medlem.
    </center>
<?
}
?>
Avatar billede nikolajdu Nybegynder
23. december 2003 - 14:19 #18
Der er jo ihvertyilfald nogle variabler der ikke bliver sat : alder, s_efternavn og sårn.

fjern "password" sessionen - Den er farlig da sessions kan opsnappes.
Avatar billede kack Nybegynder
23. december 2003 - 14:20 #19
hmm den siger det samme
Avatar billede nikolajdu Nybegynder
23. december 2003 - 14:24 #20
Hvilken felttype er brugernavn og password i din database?
Avatar billede kack Nybegynder
23. december 2003 - 14:25 #21
tinytext
Avatar billede nikolajdu Nybegynder
23. december 2003 - 14:39 #22
Lav din form om til :

<form action="login_ok.php" method="post">
Avatar billede kack Nybegynder
23. december 2003 - 15:31 #23
det hjælper ikke:(
Avatar billede nikolajdu Nybegynder
23. december 2003 - 15:38 #24
Når man forsøger at logge ind så sender du brugernavn og password med urlen? Hvordan gør du det og hvorfor? Er det måden du vil gøre det på så skal du ikke bruge $_POST["blabla"] men $_GET["babla"]
Avatar billede danisher Nybegynder
23. december 2003 - 15:43 #25
Prøv:

<?
session_start();
session_unset();
include ("config.php");
mysql_connect($host,$user,$pass);
mysql_select_db($db);
$query = mysql_query("SELECT * FROM brugersys WHERE brugernavn='".$_POST['brugernavn']."' AND password='".$_POST['password']."'") or die(mysql_error());
if (mysql_num_rows($query) > 0){
    $r = mysql_fetch_array($query);
    $_SESSION["s_brugernavn"] = $r["brugernavn"];
    $_SESSION["s_password"] = $r["password"];
    $_SESSION["s_email"] = $r["email"];
    $_SESSION["s_navn"] = $r["navn"];
    $_SESSION["s_efternavn"] = $r["efternavn"];
    $_SESSION["s_alder"] = $r["alder"];
    $_SESSION["s_id"] = $r["dato"];
    header ("location: indhold.php");
} else {
?>
    <center>
    <font color="red">Forkert Brugernavn og/eller Kodeord</font><br />
    Prøv igen eller opret dig som medlem.
    </center>
<?
}
?>
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