WinFuture-Forum.de: Cookie überprüfen? - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Cookie überprüfen?


#1 Mitglied ist offline   Vyper 

  • Gruppe: aktive Mitglieder
  • Beiträge: 65
  • Beigetreten: 25. Juli 04
  • Reputation: 0

geschrieben 17. Juli 2005 - 15:02

Hiho @all,

habe ein kleines Problemchen.
Und zwar will ich für ein Admin Panel eine Cookie Überprüfung einbauen.
Wenn man sich erfolgreich eingeloggt hat, wird ein Cookie gesetzt, der es ermöglicht, sich im Admin Panel umzusehen.
Das Cookie setzen funktioniert schon, ich habs so gelöst:
setcookie ("Admin", $name, time()+3600);

Nur wie kann ich dann z.B. den Cookie überprüfen, ob er gesetzt ist, wenn einer über ne Template Datei reingehen will.
Ich weiß das ich was mit "isset" machen muss. Doch wie sieht der Code dafür aus, um dann den Cookie zu überprüfen ob er gesetzt ist?
0

Anzeige



#2 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 17. Juli 2005 - 15:21

Das ist ganz einfach.

<?php
if(isset($_COOKIE['Admin']))
{
	// Zugang zum Adminbereich (erfolgreich)
}
else
{
	// Kein Zugang zum Adminbereich (ansonsten)
}
?>


Du kannst nun auch eine kleine Funktion schreiben, die du ganz an den Anfang deiner Datei setzt. Diese Funktion überprüft, ob ein Cookie für den Adminbereich gesetzt wurde, wenn nicht, dann wird man zur Loginseite weitergeleitet, ansonsten kommt der Adminbereich, diese Funktion würde so aussehen:

<?php
function admin_check()
{
	if(!isset($_COOKIE['Admin']))
	{
  header("Location: login.php");
	}
}
?>


Viel Spaß :)
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

#3 Mitglied ist offline   Vyper 

  • Gruppe: aktive Mitglieder
  • Beiträge: 65
  • Beigetreten: 25. Juli 04
  • Reputation: 0

geschrieben 17. Juli 2005 - 16:52

Habe jetzt folgendes Problem:
Und zwar funktioniert bei mir auf dem Rechner alles einwandfrei (ich verwende XAMPP), doch aud dem Server einscheint folgende Fehlermeldung:

Zitat

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/v135658/notendealer/adm/index.php:11) in /www/htdocs/v135658/notendealer/adm/index.php on line 18


Die Index Datei sieh so aus:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Administration Control Panel</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="cache-control" content="no-cache">
<link rel="stylesheet" type="text/css" href="../link.css">
</head>
<?
$pass = $_POST['pass'];
$name = $_POST['name'];

if($pass == "" || $name == "")
echo "<body>\n<div align=\"center\">\n<font face=\"Times New Roman\" color=\"#FF0000\" size=\"+2\"><b>Bitte gib das richtige Passwort und den richtigen Benutzernamen ein!</b></font>\n<br />\n<br />\n<form action=\"javascript:history.back()\"><input type=\"submit\" value=\"Zurück\"></form>\n</div>\n</body>\n";
else if($pass == "blabla" || $name == "blabla")
setcookie ("Admin", $name, time()+3600);
echo "<frameset rows=\"100%,*\" cols=\"175,100%\" frameborder=\"0\" border=\"0\" framespacing=\"0\">
  <frame src=\"template/links.php\" name=\"navi\" scrolling=\"no\" noresize>
  <frame src=\"template/start.php\" name=\"content\">
<noframes>
  <p>Diese Website verwendet Frames, jedoch unterstützt dein Browser keine Frames.</p>
</noframes>
</frameset>\n";
?>
</html>

0

#4 Mitglied ist offline   Meatwad 

  • Gruppe: aktive Mitglieder
  • Beiträge: 784
  • Beigetreten: 07. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bad Vilbel
  • Interessen:Computer, Inliner, Chatten...

geschrieben 17. Juli 2005 - 17:15

du darfst die funktion cookie(), header() nur vor der ersten ausgabe an den browser verwenden...aber guckmal im phpmanual nach ob_start() und ob_flush(), ...
I am away to look for my self. If I am back before I return keep me here. | Mein Server
0

#5 Mitglied ist offline   Vyper 

  • Gruppe: aktive Mitglieder
  • Beiträge: 65
  • Beigetreten: 25. Juli 04
  • Reputation: 0

geschrieben 17. Juli 2005 - 18:07

Kannst mir das mal bitte genauer erklären mit ob_start und ob_flush, also wie der Code dann aussehen müsste, habe davon noch nicht so viel Ahnung, weil PHP eigne ich mir gerade erst an.

Nur warum geht bei mir auf dem Rechner alles einwandfrei, aber auf der richtigen Homepage (Hoster ist All-inkl.de) nicht?!

Dieser Beitrag wurde von Vyper bearbeitet: 17. Juli 2005 - 18:08

0

#6 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 17. Juli 2005 - 19:12

PHP kann keinen Cookie setzen, wenn davor schon ein Zeichen ausgegeben wurde.
Das tust du aber in deiner Datei, daher kommt diese bekannte Fehlermeldung.
Es liegt nicht am Server, das geht nirgens (außer beim lokalen Server geht es bei mir komischerweise auch).

Du hast nun drei Möglichkeiten, dass es geht.
1.) Du setzt den Cookie ganz an den Anfang der Datei (es darf keine Ausgabe davor entstehen)
2.) Du machst eine neue Datei, auf die du hinweist, und hier wird der Cookie gesetzt (danach wieder zurückgeleitet)
3.) Du schreibst ob_start(); ganz an den Anfang der Datei, dann geht es auch, solltest du aber nur in diesem Fall machen, das ist eine Ausnahme.

Ich würde dir 2. empfehlen.
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

#7 Mitglied ist offline   Meatwad 

  • Gruppe: aktive Mitglieder
  • Beiträge: 784
  • Beigetreten: 07. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bad Vilbel
  • Interessen:Computer, Inliner, Chatten...

geschrieben 17. Juli 2005 - 19:22

hmmm...vlt gibt das ein problem, dass wenn er mit header('Location: ...'); arbeitet, da dann vlt die anfrage auf das setzen des cookies garnicht erst an den browser gelangt?
I am away to look for my self. If I am back before I return keep me here. | Mein Server
0

#8 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 17. Juli 2005 - 19:28

Zitat (Meatwad: 17.07.2005, 20:22)

hmmm...vlt gibt das ein problem, dass wenn er mit header('Location: ...'); arbeitet, da dann vlt die anfrage auf das setzen des cookies garnicht erst an den browser gelangt?
<{POST_SNAPBACK}>

Nein, wenn er es in eine neue Datei macht nicht.
Das geht bei mir auch, definitiv.
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

#9 Mitglied ist offline   Vyper 

  • Gruppe: aktive Mitglieder
  • Beiträge: 65
  • Beigetreten: 25. Juli 04
  • Reputation: 0

geschrieben 17. Juli 2005 - 20:03

Danke für die Hilfe, habs aber anders gelöst.
Und zwar habe ich einfach den ganzen HTML-Code in die beiden echo"" gesetzt, und es funzt genauso gut. :)
0

#10 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 17. Juli 2005 - 20:11

Zitat (Vyper: 17.07.2005, 21:03)

Und zwar habe ich einfach den ganzen HTML-Code in die beiden echo"" gesetzt, und es funzt genauso gut. :)
<{POST_SNAPBACK}>

Das mit dem echo; ist aber auch keine schöne Lösung, da würde ich lieber ein Template benutzen oder so :)
Aber solange es geht, ist ja alles gut,

Viel Spaß :D
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0