21. november 2007 - 09:26Der 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>
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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
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.
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 ;)
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?!?
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);)
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();)
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 ;)
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:
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>
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.
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
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.
Takker. Hvis du kigger i unlogged_user.php står der sikkert header ('Refresh: 5; URL='.$_SERVER['PHP_SELF']); eller noget tilsvarende.
Synes godt om
Ny brugerNybegynder
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.