php login

freakcx

Erfahrenes Mitglied
Hallo zusmmen,

Habe mir ein PHP login gebastelt was soweit geht aber irgend wie rätzel aufweist:

PHP:
<?
include('db_connect.php');
if($_POST['c_nick'] == TRUE 
AND $_POST['c_pw'] == TRUE) 
{ 

$query = mysql_query("SELECT * FROM users WHERE nick = '".$_POST['c_nick']."' AND pass= '".$_POST['c_pw']."'"); 
$ask = mysql_fetch_array($query); 
 
     if($ask['c_pw'] == $_POST['c_pw'])
	 { 
          setcookie(c_nick,$ask['nick'],time()+86400,"/");
     } 
}
print_r($_COOKIE);
?>

Wenn ich mich einlogge gibt es keine Fehler. Gebe ich jedoch einen ausgedachten User ein mit Passwort loggt er sich auch ein also zumindest zeigt er es an. Am ende des Scripts wollte ich versuchen mit "print_r($_COOKIE);" ob das cookie geht leider gibt er nur das aus: "Array ( )" Bin bin unerfahren mit Cookies von daher weiß ich nicht ob das so überhaupt geht. http://www.christiankrause.de/freakcx/index.php da könnt ihr das mal gucken.

MfG Chris
 
Cookies werden über den HTTP-Header gesandt. Bei der Anfrage eines URLs prüft der Browser, ob er einen oder mehrere Cookies mit den passenden Daten hat und sendet diese im Request-Header mit. Diese Daten verarbeitet der Webserver/PHP nun und stellt sie in dem $_COOKIE zur Verfügung. Das Setzen von Cookies sieht ähnlich aus, auch hier werden die Informationen in dem Header der Antwort verpackt.

Die Denkproblematik an deinem Skript ist nun, dass die Cookie-Daten nicht direkt sondern erst bei dem nächsten Aufruf verfügbar sind.
 
Ok, soweit verstanden, Was ist nun wenn ich mich eingeloggt habe, wenn ich jetzt z.B eine userdaten.php hätte wo die Datei nach Abfrage des Cookies die passenden Daten aus der Datenbank läd so dass der User die Daten abändern kann um sie dann wieder zu speichern. Die erste Frage.

Wie mache ich jetzt eine solche Cookieabfrage die den User identifiziert und erlaubt die Daten für ihn passend auszulesen.

EDIT:
Habe jetzt eine Abfrage gemacht:
PHP:
<? 
if($c_nick == TRUE)
	{ 
	echo "Inhalt!";
	}
else
	{
	echo "Nicht eingeloggt";
	}
?>

Die jedoch sagt es wurde nicht eingeloggt!?
 
Zuletzt bearbeitet:
Dann muss irgend was mit der Cookie initalisierung nicht richtig laufen... Habe dem Menüpunkt "Anfahrt" die

PHP:
<?
echo $_COOKIE["c_nick"];
print_r($_COOKIE);
print_r($_REQUEST);
?>

Abfragen angehängt.

gibt nur leere Arrays aus! Hast du eine Idee was ich da falsch mache?
 
setzen des cookies
PHP:
setcookie(cookie_nick,$ask['nick'],time()+86400,"/", ".christiankrause.de", 0);

Prüfen ob Cookie gesetzt ist ansonsten inhalt nicht ausgeben!
PHP:
<?
if($_COOKIE["c_nick"] == TRUE)
	{ 
	echo "Inhalt!";
	}
else
	{
	echo "Nicht eingeloggt";
	}
?>

Also ich weiß echt nicht wo mein Fehler liegt und warum das nicht geht, es gibt auch keine Fehlermeldung oder sonstiges. Hat jemand eine Idee
 
Okay geschaft... Habe mir die Variablen noch mal angesehen und da hatte ich einen Fehler drin. Nun taucht aber schon die erste Fehlermeldung auf mit der ich nichts anfangen kann...


Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/christiankrause.de/httpdocs/freakcx/login.php:13) in /home/httpd/vhosts/christiankrause.de/httpdocs/freakcx/login.php on line 24
Sie wurden eingeloggt!

Was habe ich da falsch gemacht

sorry für den Doppelpost, aber sonst nimmt keiner den edit wahr! :rolleyes:
 
so scheint ja echt ne schwere Geburt zu werden :p danke, habe ich gestern auch noch hinbekommen, ich verstehe aber nicht warum das setcookie nicht hinhaut, es kommen keine Fehler mehr und doch wird das cookie nicht gesetzt...

Hier mal der CODE:

PHP:
index.php:

<form method="post" action="login.php">
  <table width="150" border="0" align="center" cellpadding="0" cellspacing="5" id="navihover">
      <tr> 
          <td><div align="right">Benutzer:<br><input type="text" name="c_nick" width="100"></div></td>
      </tr>
      <tr>
          <td><div align="right">Passwort:<br><input type="password" name="c_pw" width="100"></div></td>
      </tr>
      <tr>
           <td><div align="right"><input name="c_check" type="submit" value="Login"></div></td>
      </tr>
   </table>
</form>


login.php:

include('db_connect.php');
if($_POST['c_nick'] == TRUE
AND $_POST['c_pw'] == TRUE)
{

$query = mysql_query("SELECT * FROM users WHERE nick = '".$_POST['c_nick']."' AND pass= '".$_POST['c_pw']."'");
$ask = mysql_fetch_array($query);
 
     if($ask['pass'] == $_POST['c_pw'])
	 {
          setcookie("login_cookie",$ask['nick'],time()+86400,"/");
     }
}

anfahrt.php(zum testen des Cookies):

<?
if(($_COOKIE["login_cookie"]) == TRUE)
	{
	echo "Inhalt!";
	}
else
	{
	echo "Nicht eingeloggt";
	}
?>

Ich hab momentan viel um die Ohren und kann mich da nicht wirklich drauf konzentrieren, hat jemand eine idee was da flasch läuft? danke im Vorraus!
 
Zuletzt bearbeitet:
Probier das Script mal fix aus.
cookiecheck.php
PHP:
<?php 
if (!isset($_GET["check"])) 
	{ 
		setcookie("test","test",time()+3600); 
		header("Location: cookiecheck.php?check=1");
	} 
else 
	{ 
		if (isset($_COOKIE["test"])) 
			{ 
				$cookies=true; 
			} 
		else 
			{ 
				$cookies=false; 
			} 
		setcookie("test","test",time()-3600); 
	} 
?> 
<html> 
<body> 
<?php 
if ($cookies==true) 
	{ 
		printf("Cookies are enabled<br>"); 
	} 
else 
	{ 
		printf("Cookies are disabled<br>"); 
	} 
?> 
<a href="cookiecheck.php">Check if cookies are enabled</a> 
</body> 
</html>
 
Zurück