Avatar billede madseksperten Nybegynder
31. januar 2016 - 12:24 Der er 1 kommentar og
1 løsning

Login med session virker ikke

Hejsa.

Jeg har godt nok lige en masse kode, men håber der er en eller flere som har tid til at kigge det igennem.

Mit problem er at når jeg trykker submit på min login form, så får jeg den samme side igen. Jeg prøvede derfor at tilføje: action="$_SERVER['SCRIPT_NAME']" i min form, men ved ikke om det er rigtigt? Jeg får bare en ny side med at $_SERVER['SCRIPT_NAME'] ikke findes. Men er der nogle som har en ide til hvor jeg skal lede? Jeg har tilføjet en user og kode i min database.

Mvh Mads

dbconfic.inc.php:
<?php
    $db_host = "localhost";
    $db_user = "root";
    $db_pass = "root";
    $db_name  = "testdb";
    // connection:
    $mysqli = new mysqli($db_host, $db_user, $db_pass , $db_name);
    // tjek conenction:
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
    }
   
    // vi kører utf-8 på connection:
    $mysqli->set_charset("utf-8");   
?>

index.php:
<?php
include('login.php'); // Include Login Script

if(isset($_SESSION['username']))
{
header('Location: home.php');
}

?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>PHP Login Form with Session</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>

<body>
<h1>PHP Login Form with Session</h1>
<div class="loginBox">
<h3>Login Form</h3>
<br><br>
<form method="post" action="$_SERVER['SCRIPT_NAME']">
<label>Username:</label><br>
<input type="text" name="username" placeholder="username" /><br><br>
<label>Password:</label><br>
<input type="password" name="password" placeholder="password" />  <br><br>
<input type="submit" value="Login" />
</form>
<div class="error"><?php echo $error_reporting() ;?></div>
</div>
</body>
</html>

login.php:

<?php
session_start();
include("dbconfic.inc.php"); //Establishing connection with our database

$error = ""; //Variable for storing our errors.
if(isset($_POST["submit"]))
{
if(empty($_POST["username"]) || empty($_POST["password"]))
{
$error = "Both fields are required.";
}else
{
// Define $username and $password
$username=$_POST['username'];
$password=$_POST['password'];

// To protect from MySQL injection
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysqli_real_escape_string($db, $username);
$password = mysqli_real_escape_string($db, $password);
$password = md5($password);

//Check username and password from database
$sql="SELECT uid FROM users WHERE username='$username' and password='$password'";
$result=mysqli_query($db,$sql);
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);

//If username and password exist in our database then create a session.
//Otherwise echo error.

if(mysqli_num_rows($result) == 1)
{
$_SESSION['username'] = $login_user; // Initializing Session
header("location: home.php"); // Redirecting To Other Page
}else
{
$error = "Incorrect username or password.";
}

}
}

?>

home.php:

<?php
    include("check.php");   
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Home</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>

<body>
    <h1 class="hello">Hello, <em><?php echo $login_user;?>!</em></h1>
        <br><br><br>
    <a href="logout.php" style="font-size:18px">Logout?</a>
</body>
</html>

check.php:

<?php
include('dbconfic.inc.php');
session_start();
$user_check=$_SESSION['username'];

$sql = mysqli_query($db,"SELECT username FROM users WHERE username='$user_check' ");

$row=mysqli_fetch_array($sql,MYSQLI_ASSOC);

$login_user=$row['username'];

if(!isset($user_check))
{
header("Location: index.php");
}
?>

logout.php:

<?php
session_start();
if(session_destroy())
{
header("Location: index.php");
}

?>
Avatar billede olsensweb.dk Ekspert
31. januar 2016 - 15:48 #1
hvorfor kalder du din connection for $db i login.php, home.php: ??

da du lavede din connection i dbconfic.inc.php kaldte du den $mysqli, og jeg kan ikke se nogle steder du tildeler variablen $db = $mysqli
Avatar billede madseksperten Nybegynder
02. februar 2016 - 09:57 #2
Ja der var rigtig mange fejl, så jeg startede helt forfra, og det virker nu. Tak for svaret. Jeg nupper pointene her igen, skriv hvis det ikke er ok
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