/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Login som ikke helt fungerer
Fra : Christoffer


Dato : 20-02-05 13:16

http://buur.info/mdk/site/index.phps

Overstående kode skulle gerne virke i loginsystem, men hver gang jeg trykker
submit reloader den bare siden uden at man bliver logget ind...
Jeg har prøvet at henvise til en login_tjek.php side, men det gør sådan set
det samme.. viser intet resultat, kun en blank side.. hvad er der galt??

Da jeg ikke har det store kendskab til php, så ville et (hjemme)skrevent
svar være dejligt, men ellers går et link også.

Christoffer



 
 
Jacob Atzen (20-02-2005)
Kommentar
Fra : Jacob Atzen


Dato : 20-02-05 13:51

On 2005-02-20, Christoffer <christoffer@buur.info> wrote:
> http://buur.info/mdk/site/index.phps
>
> Overstående kode skulle gerne virke i loginsystem, men hver gang jeg trykker
> submit reloader den bare siden uden at man bliver logget ind...
> Jeg har prøvet at henvise til en login_tjek.php side, men det gør sådan set
> det samme.. viser intet resultat, kun en blank side.. hvad er der galt??

Det ser ud som om din logik er helt gal. Du henter brugernavnet ud af
databasen med:

   select brugernavn from bruger where brugernavn = '$brugernavn'

Og passwordet med:

   select password from bruger where password = '$password'

Du beder altså om at få den samme information (brugernavn og password)
som du allerede har liggende i $brugernavn og $password. Så det eneste
disse to ting fortæller dig er, at brugernavnet og passwordet eksisterer
i databasen. Bemærk, at det ikke fortæller dig noget om, hvorvidt de to
hænger sammen. Man kan altså logge ind med en vilkårlig kombination af
brugernavn og password så længe begge eksisterer i databasen. Det du
gerne vil er formentlig noget i retning af:

   SELECT count(*)
   FROM bruger
   WHERE brugernavn = '$brugernavn' AND password = '$password'

Og så checke, om count(*) er lig 1.

Du sætter i øvrigt også cookien 'brugernavn' to gange:

   setcookie("brugernavn", "$brugernavn");
   setcookie("brugernavn", "$password");

Din kode ville i øvrigt bleve en hel del pænere, hvis du brugte lidt
indentering og flere funktioner.

--
Med venlig hilsen
- Jacob Atzen

Christoffer (20-02-2005)
Kommentar
Fra : Christoffer


Dato : 20-02-05 14:35

Ok.. har ændre lidt som du foreslog og er kommet frem til dette, som giver
en unexptectd T_IF i

if(mysql_num_rows('$query') > 0) {
setcookie("brugernavn", "$brugernavn");
setcookie("password", "$password");
echo"Du er nu logget ind som: <b>$brugernavn</b>";
}


Hele koden er nu sådan her
<?php // PHP script start.

require("config.php"); // Variabler til mysql hentes

if($_POST['aktiver']){

$brugernavn = addslashes($_REQUEST['brugernavn']); // Brugernavn fra form
i login.php.

$password = addslashes($_REQUEST['password']); // Password fra form i
login.php.


if(empty($brugernavn)){
header("location:
index.php?p=com/login.php&fejl=Brugernavnet+er+ikke+udfyldt");
}
if(empty($password)){
header("location:
index.php?p=com/login.php&fejl=Passwordet+er+ikke+udfyldt");
}

mysql_connect($mysql_host, $mysql_user, $mysql_pw);

mysql_select_db($mysql_db); // Der åbnes for databasen defineret i
config.php.

$query = mySQL_query("select brugernavn, password from bruger where
brugernavn = '$brugernavn' AND password = '$password'")

if(mysql_num_rows('$query') > 0) {
setcookie("brugernavn", "$brugernavn");
setcookie("password", "$password");
echo"Du er nu logget ind som: <b>$brugernavn</b>";
}
else {
echo"Ikke succes";
}
}
?>

Nogen der kan fortælle mig hvorfor? hvis i samtidig finder fejl i koden må i
meget gerne sige til
Christoffer



Jacob Atzen (20-02-2005)
Kommentar
Fra : Jacob Atzen


Dato : 20-02-05 16:55

On 2005-02-20, Christoffer <christoffer@buur.info> wrote:
> Nogen der kan fortælle mig hvorfor? hvis i samtidig finder fejl i
> koden må i meget gerne sige til

Er du ikke bekendt med sessions variable siden du vælger at bruge
cookies? Det virker som om de ville være et mere hensigtsmæssigt valg i
din situation.

--
Med venlig hilsen
- Jacob Atzen

Christoffer (20-02-2005)
Kommentar
Fra : Christoffer


Dato : 20-02-05 17:32

> Er du ikke bekendt med sessions variable siden du vælger at bruge
> cookies? Det virker som om de ville være et mere hensigtsmæssigt valg i
> din situation.
Mit eneste kendskab til php er en basis-tutorials fra nettet.. kender
absolut intet til hvordan jeg kan bruge sessions til det her



Christoffer (20-02-2005)
Kommentar
Fra : Christoffer


Dato : 20-02-05 21:28


"Christoffer" <christoffer@buur.info> skrev i en meddelelse
news:4218bb70$0$93836$edfadb0f@dread14.news.tele.dk...
>> Er du ikke bekendt med sessions variable siden du vælger at bruge
>> cookies? Det virker som om de ville være et mere hensigtsmæssigt valg i
>> din situation.
> Mit eneste kendskab til php er en basis-tutorials fra nettet.. kender
> absolut intet til hvordan jeg kan bruge sessions til det her

Nu har jeg så rodet med det og er kommet frem til <?php
session_start();
$username = addslashes($_POST['brugernavn']);
$password = addslashes($_POST['password']);
include "config.php";
mysql_connect($mysql_host, $mysql_user, $mysql_pw); //Database
mysql_select_db($mysql_db);

$sql = "SELECT 1 FROM bruger WHERE brugernavn='$username' AND
password='$password'";
$res = mysql_query($sql) or die(mysql_error());
if( $row = mysql_fetch_array($res) ) {
if (!isset($_SESSION['authenticated'])) {
$_SESSION['brugernavn'] = "$username";
$_SESSION['brugerid'] = "$res[0]";
header("Location:minprofil.php");
}
else {
$_SESSION['authenticated'] = false;
header("Location: 'linket er slettet'");
}


if ($_GET['id'] == "logout"){
// kill session variables
session_unset();
$_SESSION = array(); // reset session array
session_destroy(); // destroy session.
header("Location:loggetaf.php");
exit;
}}
?>

Men det giver samme resultat, den reloader siden og gør intet videre...

syn for sagen
http://buur.info/mdk/site/index2.php
brugernavn : test
pass: test



Jacob Atzen (21-02-2005)
Kommentar
Fra : Jacob Atzen


Dato : 21-02-05 13:06

On 2005-02-20, Christoffer <christoffer@buur.info> wrote:
>
> "Christoffer" <christoffer@buur.info> skrev i en meddelelse
> news:4218bb70$0$93836$edfadb0f@dread14.news.tele.dk...
>>> Er du ikke bekendt med sessions variable siden du vælger at bruge
>>> cookies? Det virker som om de ville være et mere hensigtsmæssigt valg i
>>> din situation.
>> Mit eneste kendskab til php er en basis-tutorials fra nettet.. kender
>> absolut intet til hvordan jeg kan bruge sessions til det her
>
> Nu har jeg så rodet med det og er kommet frem til

Hvad med noget i retning af følgende:

<?php

session_start();

function auth_user() {

if(!isset($_SESSION['authenticated'])) {

$username = addslashes($_POST['brugernavn']);
$password = addslashes($_POST['password']);
include "config.php";
mysql_connect($mysql_host, $mysql_user, $mysql_pw);
mysql_select_db($mysql_db);

$sql = "SELECT count(*) as count FROM bruger ".
"WHERE brugernavn='$username' ".
"AND password='$password'";
$res = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($res);
if( $row['count'] == 1 ) {
$_SESSION['brugernavn'] = "$username";
$_SESSION['authenticated'] = true;
print "User authed";
} else {
print "Wrong username/password";
}
} else {
print 'User "'.$_SESSION['brugernavn'].'" already logged in';
}

}

?>

--
Med venlig hilsen
- Jacob Atzen

Christoffer (21-02-2005)
Kommentar
Fra : Christoffer


Dato : 21-02-05 15:52

> Hvad med noget i retning af følgende:
>
> <?php
>
> session_start();
>
> function auth_user() {
>
> if(!isset($_SESSION['authenticated'])) {
>
> $username = addslashes($_POST['brugernavn']);
> $password = addslashes($_POST['password']);
> include "config.php";
> mysql_connect($mysql_host, $mysql_user, $mysql_pw);
> mysql_select_db($mysql_db);
>
> $sql = "SELECT count(*) as count FROM bruger ".
> "WHERE brugernavn='$username' ".
> "AND password='$password'";
> $res = mysql_query($sql) or die(mysql_error());
> $row = mysql_fetch_assoc($res);
> if( $row['count'] == 1 ) {
> $_SESSION['brugernavn'] = "$username";
> $_SESSION['authenticated'] = true;
> print "User authed";
> } else {
> print "Wrong username/password";
> }
> } else {
> print 'User "'.$_SESSION['brugernavn'].'" already logged in';
> }
>
> }
>
> ?>
Tusind tak for forsøget, desværre hjælper det ikke! det har så fået mig til
at tro at fejlen ikke ligger i login-koden, men i koden som skal udskifte
div'en alt efter userlevel (1,2 og 3)

<?php switch (intval($username[userlevel])) {
case 1:
print "webmaster funktioner";
break;
case 2:
print "moderator funktioner";
break;
case 3:
print "bruger funktioner";
break;
default:
print "
<form action='$_self'><input type='text' name='navn'
value='brugernavn'><br><input type='password' name='navn'
value='password'><br><input type='hidden' name='aktiver'
value='aktiver'><input type='submit' name='login' value='login'></form>";
break;}
?>

Kigger det også selv igennem, men hvis der er en som kan hjælpe sårh :)

Christoffer



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste