FancyBox Login Redirect Problem!

Servus zusammen,

ich habe mir ein kleines konstrukt aus fancybox und login script gebastelt.

auf meiner index.php wird über ein bild die fancybox geöffnet, welche eine login.php (iframe)(login formular) beinhaltet.
unsername und passwort sind in einer security.php hinterlegt.

//index.php

<?php session_unset();
?\>SHOP $(document).ready(function() { /\* This is basic - uses default settings \*/ $("a#single\_image").fancybox(); /\* Using custom settings \*/ $("a#inline").fancybox({ 'hideOnContentClick': true }); /\* Apply fancybox to multiple items \*/ $("a#group").fancybox({ 'transitionIn' : 'elastic', 'transitionOut' : 'elastic', 'speedIn' : 600, 'speedOut' : 200, 'overlayShow' : true, 'overlayOpacity' : 0 }); /\* Link zum Team im Iframe \*/ $("#login").fancybox({ 'autoScale': true, 'transitionIn': 'elastic', 'transitionOut': 'elastic', 'overlayOpacity' : 0, 'type': 'iframe' }); }); text

Grüß dich,

also da eine der beiden Weiterleitungen funktioniert, erkennt man doch schnell, dass der Fehler an diesem Konstrukt liegt:

if(($_SESSION[‚username‘]==‚1‘) AND
($_SESSION[‚userpass‘]==‚2‘))
{$_SESSION[‚authuser‘]=1;
echo „parent.$.fancybox.close();“;
header(„Location: start.php“);
}

Aus der PHP-Anleitung, der erste Satz zur „header“-Funktion:
„Beachten Sie, dass Sie die Funktion header() aufrufen müssen, bevor Sie irgendeine andere Art von Ausgabe (seien es normale HTML-Tags, Leerzeilen in einer Datei oder von PHP) zum Client schicken.“
(http://php.net/manual/de/function.header.php)

Du darfst also vorher kein „echo“ ausführen! Dann sollte auch diese Weiterleitung funktionieren.

Die nicht-mittige Tabelle wird vermutlich auf eine fehlende CSS-Normalisierung zurückzuführen sein. Wenn es ganz schnell gehen soll, schreibe an erster Stelle deines Stylesheets folgenden Eintrag:

* {
padding: 0;
margin: 0;
}

Alles weitere lässt sich schnell ergoogeln :smile:

MfG
gorgel

Hallo,

ich habe noch nie mit fancybox gearbeitet, könnte mir aber vorstellen, dass es daran liegt, dass du die box schließt bevor du die Weiterleitung durchführst.
Insbesondere versuchst du innherhalb der Box neu zu laden, du verwendest den gleichen Befehl wie nach dem else. Willst du nicht eher von index.php zu start.php wechseln?

In dem Fall musst du wahrscheinlich einfach nur per JavaScript den „parent“ zum Laden einer anderen Seite bewegen, vermutlich wird die Fancybox dadurch ohnehin geschlossen.

Das mit der Tabelle ist für mich nicht ganz nachvollziehbar. Wenn ich deinen Code copy-paste, erhalte ich eine zentrierte Tabelle.

Gruß Zorki

Hi,

mit Deinem Formular rufst Du security.php auf: Damit wird einer neuer Request an den Server gestellt und die Seite neu geladen - per se ist dann die fancybox geschlossen (ist ja kein Ajax-Call). Ich gehe davon aus, dass Deine if-Abfrage nicht passt und daher der redirect auf die start.php gar nicht erfolgen kann. Oder der Pfad zu start.php stimmt nicht.

Aus meiner Sicht (und mit dem Codeschnipsel, den Du hier zeigst) wird lediglich $("#login").fancybox({ … gefeuert - die anderen $(’…’).fancybox - Dinger werden nicht gebraucht.

Deine Tabelle: Wieso sollte auch die Tabelle mittig sein? Das Einzige, was Du mittig stellst ist der Inhalt einer Tabellenzelle.

Gruß, remy

dank dir für die schnelle antwort aber das echo zu entfernen verursacht in der entsprechenden zeile einfach nur einen fehler…

noch ne andere idee? evtl per javascript in der index.php? if parent.$.fancybox.close(); ausgeführt wird go to start.php mäßig?

thx

also per javascript in der index.php? if parent.$.fancybox.close(); ausgeführt wird go to start.php mäßig? wie würde das aussehen als code?

thx

Hast du etwa nur das „echo“ entfernt, sodass die Zeilen jetzt so aussehen:

if(($_SESSION[‚username‘]==‚1‘) AND
($_SESSION[‚userpass‘]==‚2‘))
{$_SESSION[‚authuser‘]=1;
„parent.$.fancybox.close();“;
header(„Location: start.php“);
}

Du musst natürlich die gesamte Zeile entfernen! Dann wird für diese Zeile garantiert kein Fehler ausgegeben. Sollte also so aussehen:

if(($_SESSION[‚username‘]==‚1‘) AND
($_SESSION[‚userpass‘]==‚2‘))
{$_SESSION[‚authuser‘]=1;
header(„Location: start.php“);
}

Auch wenn ich nie mit Fancybox gearbeitet habe, sehe ich überhaupt keinen Sinn darin, die gelöschte Zeile in der security.php auszugeben, bevor du von dieser Seite zur start.php weiterleitest.

Probiere es ohne diese Zeile aus und melde dich einfach nochmal, wenn es noch nicht geht.

danke für die schnelle antwort.
tatsache, ich hab wirklich „nur“ das echo entfernt gehabt. deshalb, klar, auch der fehler. ohne den echo-script-code (also so, wie du es eben vorgeschlagen hast) wird einfach in der fancybox die start.php angezeigt.
will jedoch, dass die fancybox schließt (quasi nach eingabe der richtigen username/passwort kombination) und dann die start.php geladen wird (quasi aus der index.php heraus)

etwas tricky I know aber macht optisch halt sehr schön was her. idee?

greeetz

habs!

//security.php

<?php session_start();
$\_SESSION['username']=$\_POST['user']; $\_SESSION['userpass']=$\_POST['pass']; $\_SESSION['authuser']=0; if(($\_SESSION['username']=='you') AND ($\_SESSION['userpass']=='we')) {$\_SESSION['authuser']=1; echo "

also das mit der optik liegt an der fehlenden css… also divs anlegen und css schreiben

ansonsten sollte der header per exit beendet werden und die pfadangaben müssen natürlich stimmen
bsp: header("Location: http://www.example.com/"); /* Browser umleiten */
exit;

mfg atze von world-hack.org der hackersimulation als browsergame

Hallo

Ich hab mich mit Fancybox noch nicht beschäftigt

Aber wenn dort in Deiner start.php abgefragt wird, ob man eingeloggt ist, dann musst Du die session-id mit übergeben

header(„Location: start.php?$s_name=$s_id“);

Ich verwende zum wechseln der Seiten immer
den HTML-Befehl

vielleicht etwas altmodisch, aber es funktioniert

Da die Fancy-Box ja schließt, scheinen die Bedingungen erfüllt zu sein.

Vielleicht liegt es ja auch daran, daß die Fancy-Box vor dem header schließt …

Ich hoffe, ich konnte Dir etwas helfen

mfg
IBO

Tut mir leid, aber da muss ich passen.

AJM

hi,

kann dir da auch nicht weiterhelfen, fancybox kenn ich nicht.

cu
harald
*********************

Hallo,

deine „start.php“ wird nicht geladen, weil du vor dem header()-Kommando bereits eine Ausgabe mittels echo vornimmst. header() funktioniert nur dann, wenn noch keine Ausgabe vorgenommen wurde und mit „Ausgabe“ ist auch bereist das Schreiben von irgendwelchen Anweisungen nach STDOUT gemeint, wie in deinem Fall das Schließen der fancybox.
Nimm die echo-Anweisung raus, dann klappt es auch.

Gruß aus München,
Frank

Hallo,
ich habe auch keinen Fehler festgestellt.
Danach habe ich das einmal getestet und mir die „fancybox“ installiert.
Ich musste die Links anpassen und eine start.php noch anlegen.
Danach funktionierte es. Mit user 1 und passw 2.

Hallo,

tut mir Leid, dass ich erst jetzt antworte.

Ich weiß nicht, ob index.php „benachrichtigt“ wird, wenn die fancybox geschlossen wird, insofern wirst du wahrscheinlich aus der fancybox heraus den Ladeprozess starten müssen.
Probier doch mal parent.location.href = „start.php“

Hallo,

wirklich sicher bin ich mir mit meinen Aussagen nicht, bin kein javascript-Experte.
Trotzdem will ich gern meine Gedanken dazugeben, vielleicht ist ja der richtige „Schups“ dabei …
Also was mir auffällt, ist, dass Du zwar Session-Variablen verwendest, aber nirgends eine Session startest.
Ich bin mir nicht sicher, ob das security.php nicht trotzdem funktionieren würde, da Du die Werte ja über POST reinholst und direkt in diesem Script verarbeitest. Es könnte aber auch sein, dass sich das SESSION-Array ohne session_start(); überhaupt nicht initialisieren lässt … Wahrscheinlich geht’s doch, sonst würdest Du die Eingabeprüfung nie bestehen.

Zweitens: Bist Du Dir sicher, dass Deine start.php wirklich einen (sichtbaren) Output erzeugt?

Drittens: Die Fancybox erzeugt wohl einen iframe, in dem sie sich ausführt. Soweit Du nichts anderes angibst, werden auch die aufgerufenen Scripte in dem Iframe ausgeführt, in dem die Fancybox läuft. Deshalb erscheint Deine login.php in der Fancybox bei fehlgeschlagenem Versuch. Bei bestandenem Login schließt die Fancybox und damit auch der iframe, in dem aber nun die start.php hineingeladen wird. Ergo: Kein Frame, kein start.php.

Lösungsansatz: Entweder Du musst den iframe erhalten oder Du musst die start.php ausserhalb des Frames laden.

Micha