Avatar billede andersx Nybegynder
23. maj 2012 - 16:31 Der er 6 kommentarer og
1 løsning

Hjælp til php login

Jeg har lavet et login system i php. Men det virker ikke :(
Når jeg skriver et forkert brugernavn/password, og klikker på login knappen, logger den bare ind. Håber i kan hjælpe mig.

koden
index.php

<?php
session_start();
if(isset($_SESSION['user'])){
header('Location: profile.php');
}else{
header('index.php');
}
?>

<html>
<head>
<style>
body {
background-color:#D9D9D9;
font-family:Arial;
font-size:13px;
}
.corner {
background-color:#FFFFFF;
margin: 0 auto;
width:600px;
height:170px;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
}
#link {
color:black;
text-decoration:underlined;
}
#link:hover {
color:red;
text-decoration:none;
}
</style>
<title>Login</title>
</head>
<body>
<center>
<div class="corner">
<form method="post" action="index.php">
<h3>Login</h3>
Username: <input type="text" name="username"><br/>
Password: <input type="password" name="password"></br>
<input type="submit" name="login" value="Login"><br/>
</form>
Do you not have a account? <a href="register/register.php" id="link">register here</a><br/>
</body>
</html>
<?php
if (isset($_POST['login'])) {
include "login_connect.php";

$username = htmlentities(mysql_real_escape_string($_POST['username']));
$password = htmlentities(mysql_real_escape_string(sha1($_POST['password'])));

$query = mysql_query("SELECT * FROM members WHERE username = '$username' AND password = '$password'");
$data = mysql_fetch_assoc($query);

if(mysql_num_rows($query)) {
$_SESSION['user'] = "$username";
header("Location: profile.php");
} else {
header("Location: index.php");
echo "Wrong username/password";
}
}
?>
</div>
</center>
Avatar billede KHHP Juniormester
23. maj 2012 - 16:55 #1
Problemet er at du vil bruge dit php-script som en del af din side, så derfor skal du lave det om til en funktion, eller placere den i en seperat fil og ændre action="index.php" til at pege på den fil der indeholder dit script.
Jeg laver altid login således:
<form name="login" action="inc/auth.php" method="post">
Brugernavn: <input type="text" name="username" /><br />
Adgangskode: <input type="password" name="password" /><br />
<input type="submit" name="submit" value="Log ind" />
</form>

Jeg bruger så filen inc/auth.php til at tjekke de indtastede oplysninger med dem i min database:
http://pastebin.com/ukr02wpQ
Min ../inc/connect.php ser således ud:

<?php
$server = "localhost";
$brugernavn = "brugernavn";
$kode = "kode";
$db = "mindatabase";

mysql_connect($server , $brugernavn , $kode) or die(mysql_error());
mysql_select_db($db)or die(mysql_error());
mysql_set_charset('utf8');
?>

Prøv i første omgang at flytte dit script ind i en seperat fil.
Lige et lille tip...
Når du placerer kode i dine indlæg, så er det altid en god idé at bruge sider som pastebin til at have de store mængder kode liggende i. Mindre sæt af koder, såsom min form og min connect.php kan man placere i divs.
Avatar billede andersx Nybegynder
23. maj 2012 - 17:15 #2
jeg prøvede at gøre som du skrev, og nu får jeg bare, at vide i browseren "Denne webside har et loop ved omdirigering".
Avatar billede andersx Nybegynder
23. maj 2012 - 17:26 #3
Jeg fandt ud af ved noget test programmering at det er linjen :  $query = mysql_query("SELECT * FROM members WHERE username = '$username' AND password = '$password'");
$data = mysql_fetch_assoc($query);
Avatar billede andersx Nybegynder
23. maj 2012 - 17:52 #4
Problemet er løst. Og tak for hjælpen KHHP.
Avatar billede andersx Nybegynder
23. maj 2012 - 22:12 #5
Nå tak for hjælpen, og her er dine point.
Avatar billede arne_v Ekspert
24. maj 2012 - 00:16 #6
Nope.

Du tog selv point !!
Avatar billede andersx Nybegynder
24. maj 2012 - 08:36 #7
Beklager jeg er ny til eksperten :-)
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