Avatar billede dstjulle Nybegynder
21. november 2007 - 09:26 Der er 31 kommentarer og
1 løsning

hjælp til en simpel login

hej

jeg er ved at køre en php bog igemmen og nu har jeg et problem jeg har skrevet koden som den stå men får fejl i login (det er kun php og ikke med mysql ) kan i hjælpe ??

kode:

<?php
session_start();
$_SESSION['logged'] = 0;
if (isset($_POST['submit'])) {
if ($_POST['username'] == “julle” &&
$_POST['password'] == “mig120”) {
$_SESSION['logged'] = 1;
header ("Refresh: 5; URL=" . $_POST['redirect'] . "");
echo "You are being redirected to your original page request!<br>";
echo "(If your browser doesn’t support this, " .
"<a href=\"" . $_POST[‘redirect’]. "\">click here</a>)";
} else {
?>
<html>
<head>
<title>Beginning PHP5, Apache and MySQL</title>
</head>
<body>
<p>
Invalid Username and/or Password<br><br>
<form action="login.php" method="post">
<input type="hidden" name="redirect" value="<?php echo $_POST[‘redirect’]; ?>">
Username: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br><br>
<input type="submit" name="submit" value="Login">
</form>
</p>
<?php
}
} else {
?>
<html>
<head>
<title>Beginning PHP5, Apache and MySQL</title>
</head>
<body>
<p>
You must be logged in to view this page<br><br>
<?
if (isset($_GET[‘redirect’])) {
$redirect = $_GET[‘redirect’];
} else {
$redirect = "index.php";
}
?>
<form action="login.php" method="post">
<input type="hidden" name="redirect"
value="<?php echo $_GET[‘redirect’]; ?>">
Username: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br><br>
<input type="submit" name="submit" value="Login">
</form>
</p>
<?php
}
?>
</body>
</html>
Avatar billede lesp Nybegynder
21. november 2007 - 12:45 #1
Hvad får du af fejl?
Avatar billede dstjulle Nybegynder
21. november 2007 - 13:29 #2
den siger at det er forkert bruger navn eller kode og det er det ikke og jeg har været nød til at lave alle " om da den ellers lavet fejl kan du hjælp mig
Avatar billede kinderaeg Nybegynder
21. november 2007 - 13:40 #3
“ og " er ikke det samme og ‘ og ' er det heller ikke, så det skal først og fremmest rettes op, og så skal du nok overveje at ændre

<input type="hidden" name="redirect" value="<?php echo $_GET['redirect']; ?>">

til

<input type="hidden" name="redirect" value="<?php echo $redirect; ?>">

Men ud over det kan jeg ikke se noget problem. Koden kører i hvert fald fint, når jeg tester den.
Avatar billede lesp Nybegynder
21. november 2007 - 13:44 #4
Jeg ville råde dig til at vænne dig til, at kun lave ''er i PHP-filer
Avatar billede kinderaeg Nybegynder
21. november 2007 - 13:51 #5
Der er da bestemt ikke noget i vejen med også at bruge ", der er jo forskel på hvordan ' og " fortolkes af php, så man bør ikke begrænse sig til kun at bruge det ene.
Avatar billede dstjulle Nybegynder
21. november 2007 - 13:54 #6
ja ok nu før jeg bare en anden fejl den siger det har

You are being redirected to your original page request!
(If your browser doesn’t support this, click here)

hvorfor ??

og hvad kan gør gøre ved det
Avatar billede kinderaeg Nybegynder
21. november 2007 - 14:34 #7
Det er sådan set ikke en fejlmeddelelse, det har du jo bedt den om at skrive ud, og så skulle den gerne hoppe videre til den ønskede side efter 5 sekunder ;)
Avatar billede dstjulle Nybegynder
21. november 2007 - 14:38 #8
ok men jeg får login siden igen !!hvad kan jeg gør så den ikke gør det ?
Avatar billede kinderaeg Nybegynder
21. november 2007 - 15:28 #9
Umiddelbart burde den komme tilbage til index.php, hvis du ikke har en get-parameter med, men jeg ved ikke hvordan index.php opfører sig, men hvis der er et tjek der, på om man er logget ind, der fejler, kan det jo være derfor?!?
Avatar billede dstjulle Nybegynder
22. november 2007 - 08:16 #10
ok jeg prøve lige at vise dig index !!

kode: index.php

<?php
session_start();
if ((isset($_SESSION['user_logged']) &&
$_SESSION['user_logged'] != "") ||
(isset($_SESSION['user_password']) &&
$_SESSION['user_password'] != "")) {
include "logged_user.php";
} else {
include "unlogged_user.php";
}
?>

håber det kan hjælpe
Avatar billede kinderaeg Nybegynder
22. november 2007 - 08:56 #11
Du skal nok lave din if om. $_SESSION['user_logged'] jo aldrig blive "", den bliver jo 0, hvis du kommer forbi din login-side.
Prøv med:

<?php
session_start();
if ((!empty($_SESSION['user_logged']) && $_SESSION['user_logged'] != '0') ||
(isset($_SESSION['user_password']) && $_SESSION['user_password'] != "")) {
  include "logged_user.php";
} else {
  include "unlogged_user.php";
}
?>

Hvis det ikke virker vil jeg foreslå at du udskriver din session-variabel, så du kan se hvad der er i den, og om det i givet fald er hvad du forventer (print_r($_SESSION);)
Avatar billede dstjulle Nybegynder
22. november 2007 - 09:11 #12
ok jeg kikek lige på det nu men hvis jeg skal skrive mine session ud hvor skal jeg så skrive (print_r($_SESSION) er det i starten eller hvad??
Avatar billede kinderaeg Nybegynder
22. november 2007 - 09:21 #13
Det bestemmer du jo et eller andet sted selv, men hvis du i dine includes (logged_user.php og unlogged_user.php) redirecter brugren til en anden side, skal du nok gøre det før din if, og evt terminere bagefter (die();)
Avatar billede dstjulle Nybegynder
22. november 2007 - 09:57 #14
ok nu er jeg ikke helt men ( jeg er også ret ny inden for php og håber at i kan hjælpe )
Avatar billede dstjulle Nybegynder
22. november 2007 - 10:18 #15
du kan selv teste den her www.julle-test.smilnu.dk du kan jo se bruger navn og kode i texten oven over
Avatar billede kinderaeg Nybegynder
22. november 2007 - 10:58 #16
Det har tilsyneladende noget at gøre med, at du ikke får sat en redirect-side. Jeg vil tro det er fordi du ikke ændrede dit skjulte felt, som jeg skrev 21/11-2007 13:40:10 ;)
Avatar billede dstjulle Nybegynder
22. november 2007 - 11:29 #17
det er ændredet og jeg få stadig den fejl!!
Avatar billede kinderaeg Nybegynder
22. november 2007 - 11:41 #18
Ja, hvis det er det nye jeg kan teste på, på ovenstående link, bliver der stadig ikke lagt noget link ind i $redirect. Hvis jeg går ind på siden med parameteren user_login.php?redirect=index.php, så kommer jeg fint videre til index.php, når jeg logger ind. Så din fejl ligger enten her:

if(isset($_GET['redirect'])) {
  $redirect = $_GET['redirect'];
} else {
  $redirect = "index.php";
}

eller her:

<input type="hidden" name="redirect" value="<?php echo $redirect; ?>">

Altså, enten bliver variablen $redirect ikke sat i den første kode eller ikke sat rigtigt ind i den anden.
Avatar billede dstjulle Nybegynder
22. november 2007 - 13:18 #19
ok hvad kan jeg gøre ved det ? ( jeg er stadig ny til det her)
Avatar billede kinderaeg Nybegynder
22. november 2007 - 13:36 #20
Det kommer jo lidt an på... Jeg går ud fra at din kode ser ud som følger. Og hvis det gør det, burde det virke som det skal. Det gør det i hvert fald når jeg tester det:

<?php
session_start();
$_SESSION['logged'] = 0;
if (isset($_POST['submit'])) {
  if ($_POST['username'] == "julle" && $_POST['password'] == "mig120") {
    $_SESSION['logged'] = 1;
    header ("Refresh: 5; URL=" . $_POST['redirect'] . "");
    echo "You are being redirected to your original page request!<br>";
    echo "(If your browser doesn’t support this, " .
    "<a href=\"" . $_POST['redirect']. "\">click here</a>)";
  } else {
?>
<html>
<head>
<title>Beginning PHP5, Apache and MySQL</title>
</head>
<body>
<p>
Invalid Username and/or Password<br><br>
<form action="login.php" method="post">
<input type="hidden" name="redirect" value="<?php echo $_POST['redirect']; ?>">
Username: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br><br>
<input type="submit" name="submit" value="Login">
</form>
</p>
<?php
  }
} else {
?>
<html>
<head>
<title>Beginning PHP5, Apache and MySQL</title>
</head>
<body>
<p>
You must be logged in to view this page<br><br>
<?
  if (isset($_GET['redirect'])) {
    $redirect = $_GET['redirect'];
  } else {
    $redirect = "index.php";
  }
?>
<form action="login.php" method="post">
<input type="hidden" name="redirect" value="<?php echo $redirect; ?>">
Username: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br><br>
<input type="submit" name="submit" value="Login">
</form>
</p>
<?php
}
?>
</body>
</html>
Avatar billede dstjulle Nybegynder
22. november 2007 - 13:43 #21
kan det godt passe at den bare skal sende mig til index og ikke til den hemmelig som hedder template.php ??
Avatar billede dstjulle Nybegynder
22. november 2007 - 13:47 #22
i den bog jeg har står det her som koden jeg skal skrive (kan det være en fejl i den )

5. Now that you have the template page and the authorization page done, you can create the login
page, login.php, that you use to create the sessions that allow you to gain access to your protected
pages. Enter the following code, which actually does the login authorization and the creation
of the session for the user once he or she has successfully provided the correct username
and password:

<?php
session_start();
$_SESSION[‘logged’] = 0;
if (isset($_POST[‘submit’])) {
if ($_POST[‘username’] == “wroxbooks” &&
$_POST[‘password’] == “aregreat”) {
$_SESSION[‘logged’] = 1;
header (“Refresh: 5; URL=” . $_POST[‘redirect’] . “”);
echo “You are being redirected to your original page request!<br>”;
echo “(If your browser doesn’t support this, “ .
“<a href=\”” . $_POST[‘redirect’]. “\”>click here</a>)”;
} else {
?>
<html>
<head>
<title>Beginning PHP5, Apache and MySQL</title>
</head>
<body>

User Logins, Profiles, and Personalization
<p>
Invalid Username and/or Password<br><br>
<form action=”login.php” method=”post”>
<input type=”hidden” name=”redirect”
value=”<?php echo $_POST[‘redirect’]; ?>”>
Username: <input type=”text” name=”username”><br>
Password: <input type=”password” name=”password”><br><br>
<input type=”submit” name=”submit” value=”Login”>
</form>
</p>
<?php
}
} else {
?>
<html>
<head>
<title>Beginning PHP5, Apache and MySQL</title>
</head>
<body>
<p>
You must be logged in to view this page<br><br>
<?
if (isset($_GET[‘redirect’])) {
$redirect = $_GET[‘redirect’];
} else {
$redirect = “index.php”;
}
?>
<form action=”login.php” method=”post”>
<input type=”hidden” name=”redirect”
value=”<?php echo $_GET[‘redirect’]; ?>”>
Username: <input type=”text” name=”username”><br>
Password: <input type=”password” name=”password”><br><br>
<input type=”submit” name=”submit” value=”Login”>
</form>
</p>
<?php
}
?>
</body>
</html>
6. Navigate to the template.php page you created. Because you haven’t logged in, the
auth.inc.php file you included redirects you to the login.php page that requires you
to log in to view the initial page you requested.
Try inputting the incorrect information so you can see how the login page works. You will
see a screen similar to the one shown in Figure 12-4.
Avatar billede kinderaeg Nybegynder
22. november 2007 - 13:48 #23
Jeps, $redirect = "index.php"; bestemmer jo standard-siden du skal sendes til, ellers skal du sende en side med som parameter, fx. user_login.php?redirect=template.php
Avatar billede kinderaeg Nybegynder
22. november 2007 - 13:51 #24
Det er så her din side, template.php, bør sende sig selv med som parameter til din login-side, for at den ved hvor den skal sende dig tilbage til, efter du er logget ind, men login-siden fungerer i hvert fald som den skal.
Avatar billede dstjulle Nybegynder
22. november 2007 - 13:52 #25
nu virker det !!! ved ikke lige hvad det sker !!! men jeg skal først gå ind på det hemmelig side og så skriver det det her i add boxen http://84.238.71.184/test/com-1/login.php?redirect=/test/com-1/template.php kan det godt passe ??
Avatar billede kinderaeg Nybegynder
22. november 2007 - 13:58 #26
Ja, du kan sagtens nøjes med template.php som redirect-sti (http://84.238.71.184/test/com-1/login.php?redirect=template.php), når siden ligger på samme niveau som login.php, men ja, det ser da ud til at det fungerer som det skal.
Avatar billede dstjulle Nybegynder
22. november 2007 - 14:00 #27
ok det prøver jeg lige :-) smidder du et svar så skal du få point :-)
Avatar billede kinderaeg Nybegynder
22. november 2007 - 14:42 #28
Du må jo skrive hvis det ikke vil, helt som det skal ;)
Avatar billede dstjulle Nybegynder
22. november 2007 - 14:47 #29
ja ok det er i orden jeg kan bare ikke lige finde det medn template.php nogle steder i filen ??
Avatar billede kinderaeg Nybegynder
22. november 2007 - 14:53 #30
Jeg kunne forestille mig at unlogged_user.php indeholder $_SERVER['PHP_SELF']
Avatar billede dstjulle Nybegynder
23. november 2007 - 10:16 #31
ok jeg kikke på det du får point nu ;-)
Avatar billede kinderaeg Nybegynder
23. november 2007 - 11:04 #32
Takker.
Hvis du kigger i unlogged_user.php står der sikkert header ('Refresh: 5; URL='.$_SERVER['PHP_SELF']); eller noget tilsvarende.
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