Hej Kenneth.
Jeg ville nok starte med at samle det lidt sammen, hvis du gerne vil have en mere dynamisk oplevelse.
For det første ville jeg ikke bruge iframe til login, da den, netop som du siger, kun arbejder indeni sin egen frame.
Så jeg ville benytte en division (div) i stedet, den skjuler man så den kun kommer frem når den åbnes i fancybox, det er der en funktion (i fancybox) til.
I og med det er en div, arbejdes der med content i samme html dokument.
Derefter ville jeg gøre sådan at det er samme php side der tager i mod login requests. Så skal man nemlig ikke rundt på flere sider for at logge ind.
Eksmpel på index.php:
- <?php
- require 'admin/auth.php';
-
- if($_GET['action'] == 'login'){
- $username = $_POST['username'];
- $password = $_POST['password'];
- if(login($username,$password)){
- // LOGGET IND!
- } else{
- // Ikke logget ind.
- }
- }
-
- ?>
- <html>
- <head>
- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
-
- <script type="text/javascript" src="/fancybox/jquery.fancybox-1.3.4.pack.js"></script>
- </head>
- <body>
-
- <?php if($_SESSION['logget_ind']){
- echo '<a id="inline" href="#login">LOGIN</a>';
- ?>
-
- <div style="display:none;">
- <div id="login">
- <form action="?action=login" method="post">
- Brugernavn: <input type="text" name="username" />
- Password: <input type="password" name="password" />
- <input type="submit" name="submit" value="Log ind" />
- </form>
- </div>
- </div>
- </body>
Bemærk at jeg kaldte auth.php internt i stedet for at sende brugeren derhen, det kræver at vi retter i auth.php så der er en funktion vi kan kalde:
auth.php
- <?php
- function login($username,$password){
- session_start();
- include '../inc/connect.php';
- //Husk at sikrer dine ting imod SQL Injections
- //$username = mysql_real_escape_string($_POST['username']);
- //$password = mysql_real_escape_string($_POST['password']);
- //Lav en query der henter den ønskede bruger i stedet for alle sammen
- $data = mysql_query("SELECT * FROM login WHERE username = '" . $username . "' AND password = '" . md5($password) . "'") or die(mysql_error());
- if ($info = mysql_fetch_array($data))
- {
- //Hvis brugeren findes bliver de logget ind
- $_SESSION['loggedin'] = 1;
- $_SESSION['username'] = $info['username'];
- //gem brugerens gruppe
- $_SESSION['usergroup'] = $info['usergroup'];
- //redirect til index uden fejl
- /*$succes = 'LOGIN_SUCCESS';
- header('Location: ../index.php?msg=' . $succes);
- */
- return true;
- }
- else
- {
- //Redirect til index med fejl besked.
-
- /*$error = 'LOGIN_FAILED_NO_MATCH_FOUND';
- header('Location: ../index.php?msg=' . $error);
- */
- return false;
- }
- }
- ?>
Bemærk at jeg har skrevet koden frit her i kommentar feltet (og lidt forhastet), koden er derfor ikke testet og der er risiko for syntaksfejl. Men det er den overordnede fremgangsmetode jeg ville bruge.
Håber det hjælper.
---
Nå ja!
AJAX er ikke en speciel form for JavaScript, det er nærmere en række metoder man kan bruge til at sende pakker asynkront med det der vises i browseren (Altså at det sker 'bag ved' om man vil). Det vil egentlig bare sige at man fx kunne sende loginoplysninger til din auth.php uden at behøve at genindlæse index.php.
Ajax er meget simpelt, hvis man kan javascript og w3schools.com/ajax kan anbefales.
Indlæg senest redigeret d. 19.05.2012 13:32 af Bruger #16824