webForumDet fria alternativet

Fråga angående komplicerade loginsystem?

PHPur PHP

3 svar · 248 visningar · startad av Dwarfen

DwarfenMedlem sedan jan. 2002241 inlägg
#1

Hur gör jag för att kunna hantera ett loginssytem på samma sida?
Skall förklara vad jag menar.
Använder mig av nedstående kod för att kolla om användaren är inloggad, om han är det kommer det upp hans inloggningsnamn och logga ut, och om han inte är inloggad kommer det upp två stycken ruter där han får skriva in anv/pass.

<?
session_start();

if(isset($_SESSION['username'])) { 
    	echo $_SESSION['username'];
	echo ' <A HREF="loggout.php" target=_blank">Loggout</A>';
} else { 
	echo '<form method="post" action="\login\kontroll.php" size="0">
	Användare <input name="username" size="10">
	Lösenord <input type="password" name="password" size="10">
<input type="submit" value="login">
</FORM>';
}
?>

Efter detta blir han skickad till en sida som innehåller:


<?php
session_start();

$username = 'root';
$password = '';
$dbName = 'netx';
mysql_connect('localhost', $username, $password) or die (mysql_error());
mysql_select_db($dbName) or die (schyse());

// Skapar variablar
$username = $_POST['username'];
$password = $_POST['password'];

// Öppnar SQL frågan och sätter username = form-value och password = form-value
$SQL = mysql_query("SELECT * FROM login where username = '$username' AND password = '$password'") or die (mysql_error());
$objRS = mysql_fetch_array($SQL);

// Kollar om användaren finns i databasen, om han finns skapas alla Sessioner osv...
if (mysql_num_rows($SQL) <> 0) {

    // Skapar sessioner och allt va du vill göra för den specifika användaren
    $_SESSION[online] =     1;
    $_SESSION['username'] = $username;

    // Skickar tillbaka användaren om allt gått okej
    Header ('Location: /index.php');

} else {

    // Skickar tillbaka användaren om han el. hon skrivit något fel
    Header ('Location:login.php');

}

?>

Denna kontrollerar ju om alla nuffror är rätt.
Och sedan skickas man tillbaka till index.php.

Och nu till min fråga, går det att göra så man inte skickas till någon annan sida utan att kontrollen av lösenord osv. sker på samma sida?

Någon som förstår vad jag försöker mena?

Skulle vara tacksam för all hjälp.

PeddaMedlem sedan juni 20006 032 inlägg
#2

Ja.
Ändra formuläret till att gå mot index.php och där har du:

if(isset($_POST['submit'])) {  
    //koden från login.php
}
DwarfenMedlem sedan jan. 2002241 inlägg
#3

Så du menar att jag skall lägga hela kontroll koden i början av index.php filen?

PeddaMedlem sedan juni 20006 032 inlägg
#4

Nästan, du ska ju inte ha session_start(); med då du redan har det först i index.php

<?
session_start();

if(isset($_SESSION['username'])) { 
        echo $_SESSION['username'];
    echo ' <A HREF="loggout.php" target=_blank">Loggout</A>';
} 
if(isset($_POST['submit'])) {  
    //koden från loginkontroll.php utan session_start()
} else { 
    echo '<form method="post" action="loginkontroll.php" size="0">
    Användare <input name="username" size="10">
    Lösenord <input type="password" name="password" size="10">
<input type="submit" value="login">
</FORM>';
}
?>
136 ms totalt · 3 externa anrop · v20260731065814-full.363dfaf6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)