Avatar billede kiwankow Nybegynder
24. september 2009 - 12:06 Der er 11 kommentarer og
2 løsninger

Password protect videre til ny side når login er korrekt::??

Jeg har fundet dette simple password protect, men jeg ved ikke ikke hvordan jeg får den til at skifte side når login er korrekt..??

<?php
// Define your username and password
$username = "admin";
$password = "pass";
if ($_POST['txtUsername'] != $username || $_POST['txtPassword'] != $password) {
?>
<h1>Login</h1>
<form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <p><label for="txtUsername">Username:</label>
    <br /><input type="text" title="Enter your Username" name="txtUsername" /></p>
    <p><label for="txtpassword">Password:</label>
    <br /><input type="password" title="Enter your password" name="txtPassword" /></p>
    <p><input type="submit" name="Submit" value="Login" /></p>
</form>
<?php
}
else {
?>
HER SKAL DEN SÅ GÅ TIL DEN RIGTIGE SIDE
<?php
}
?>
Avatar billede fbhzone Nybegynder
24. september 2009 - 13:02 #1
Det er en meget usikker måde at lave password beskyttelse på det der.

I ovenstående ville man blot kunne bruge URL'en dirkete til "den rigtige side".  Jeg har tidligere beskrevet dette til en  her på exp og det burde virke:



index.php
<?php
session_start();
if(!$_SESSION['login'])
header("Location: login.php");
?>

<h1>Velkommen til min beskyttede side</h1>
<a href="logout.php">Log Ud</a>

login.php
<?php
session_start();
if($_SESSION['login'])
header("Location: index.php");

$username = trim($_POST['username']);
$password = trim($_POST['password']);

if(!empty($username) AND !empty($password) {

$ok_user = "admin";
$ok_pass = "pass";

if($username == $ok_pass AND $password == $ok_pass) {
$_SESSION['login'] = 1;
header("Location: index.php");
} else {
$login_error = 1;
}

} else {
$login_error = 1;
}


if($login_error) {
// For sikkerhedens skyld, så afslør aldrig HVAD der er galt
// men blot at der er en fejl med brugernavn og/eller passsword.
echo "<b>Username and/or password wrong!</b>";
}
?>
<form action="login.php" method="post">
Username: <input type="text" name="username"><br />
Password: <input type="password" name="password"><br />
<input type="submit">
</form>


logout.php
<?php
session_start();
session_destroy();
header("Location: login.php");
?>


derudover, så kan de øverste 3 linjer fra index.php blot inkluderes i toppen af hver side man ønsker skalv ære beskyttet.
Avatar billede kiwankow Nybegynder
24. september 2009 - 13:25 #2
Parse error: syntax error, unexpected '{' in /login.php on line 9
Avatar billede fbhzone Nybegynder
24. september 2009 - 14:44 #3
ret:

if(!empty($username) AND !empty($password) {

til

if(!empty($username) AND !empty($password)) {
Avatar billede dkfire Nybegynder
24. september 2009 - 18:07 #4
Jeg vil lige gøre opmærksom på det du IKKE må have 2 spørgsmål åbne om samme emne!
Avatar billede kiwankow Nybegynder
24. september 2009 - 21:41 #5
hmm der sker ingen ting selvom jeg taster admin og pass ind, den siger stadig bare wrong username and/or password og resetter formen
Avatar billede dkfire Nybegynder
24. september 2009 - 23:36 #6
if($username == $ok_pass AND $password == $ok_pass) {

skal ændre til
if($username == $ok_user AND $password == $ok_pass) {
Avatar billede kiwankow Nybegynder
25. september 2009 - 10:59 #7
Jeg har nu inkluderet det i min egen fil men får følgende fejlmelding:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /login.php:7) in /login.php on line 26




filen ser således ud:

<head>
  <title>Testside</title>
  <link rel="stylesheet" type="text/css" href="style.php" />
</head>
<body>

<?php include("variable.php") ?>
  <center>
  <table>
    <td>
    </td>

<td>
<div class="midterspacer"></div>
<div class="smallheadline"><?=$smalltitle?></div>
<div class="headline"><?=$bigtitle?></div>
<div class="menu"></div>
<div class="outsidemain">
<div class="maingallery">

<?php
session_start();
if($_SESSION['login'])
header("Location: tilpas.php");

$username = trim($_POST['username']);
$password = trim($_POST['password']);

if(!empty($username) AND !empty($password)) {

$ok_user = $admin;
$ok_pass = $pass;

if($username == $ok_user AND $password == $ok_pass) {
$_SESSION['login'] = 1;
header("Location: tilpas.php");
} else {
$login_error = 1;
}

} else {
$login_error = 1;
}

if($login_error) {
// For sikkerhedens skyld, så afslør aldrig HVAD der er galt
// men blot at der er en fejl med brugernavn og/eller passsword.
echo "<br /><br /><b>Kun adgang med korrekt Brugernavn og password</b>";
}
?>

<center>
<br /><br /><br /><br />
<form action="login.php" method="post">
Username: <input type="text" name="username"><br />
&nbsp;Password: <input type="password" name="password"><br /><br />
<input type="submit">
</form>
</center>

</div>
</div>
<div class="footer">
<div style="float:left"><a href="tilpas.php">Admin</a></div>
</div>
</td>

    <td>
    </td>
  </table>
  </center>
</body>
Avatar billede kiwankow Nybegynder
25. september 2009 - 11:00 #8
Jeg er nødt til at have mine head tags med da jeg skal have inkluderet mit stylesheet..!!
Avatar billede dkfire Nybegynder
25. september 2009 - 21:52 #9
Nu vil jeg prøve at sige det så pænt som jeg nu kan.
Du må ALDRIG ALDRIG have noget html for dit kald af session_start() og header()!
Avatar billede kiwankow Nybegynder
26. september 2009 - 10:02 #10
OK men hvordan får jeg så echo beskeder til at blive vist inden i den div hvor de skal være..??
Avatar billede kiwankow Nybegynder
26. september 2009 - 11:27 #11
OK det fandt jeg selv ud af :-)

Smid et svar
Avatar billede dkfire Nybegynder
26. september 2009 - 11:38 #12
Som du sikkert fandt ud af, så gør du det bare som du plejer.
Forsøg altid at have så meget php kode først i din fil, og dernæst din html kode.
Forsøg ikke at blande for meget php og html sammen, det giver oftest en meget rodet kode.

Jeg synes også at fbhzone skal lægge et svar.
Avatar billede ksoren Nybegynder
26. september 2009 - 11:45 #13
if(...){
    header("Location: xxx");
}
echo "hemmelig information";


Indeholder også en sikkerhedsbug. header() afslutter ikke scriptet. Husk kald til exit() efterfølgende.
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