Login met cookies

Status
Niet open voor verdere reacties.

JeroenE

Terugkerende gebruiker
Lid geworden
20 mrt 2005
Berichten
1.950
Hallo,

Ik heb twee sites gemaakt met een login die tot enkele dagen geleden beiden perfect werkten.
Ik heb die pagina's sinds ze werken niet meer veranderd, maar toch kan ik niet meer inlloggen zoals het hoort. Niet op mijn werk en ook niet thuis.
Als je inlogt, moet je bij een correcte login dezelfde pagina zien met andere hoofd-inhoud. Ik krijg sinds kort alleen nog maar een pagina te zien zonder hoofd-inhoud.
Ook in het menu staan de extra mogelijkheden niet meer, en toch ben je ingelogd, want anders zou je een foutmelding te zien krijgen.
Beide sites staan op totaal verschillende servers, en hebben dezelfde php-code met uitzondering van de inhoud, en het eigenaardige is dat je bij de ene site via firefox wel kunt inloggen zoals het hoort.
Wat loopt er mis?

Groetjes,

Jeroen.
 
want anders zou je een foutmelding te zien krijgen.
Hoe moeten we die foutmelding zien? Een door jouw gecreeërd of een PHP-foutmelding?

Als het niet de laatst is dan zou je even moeten kijken of PHP-foutmeldingen wel worden weergegeven, zo niet dan zorgen dat ze worden weergegeven :)
 
Klinkt als cookies die niet geaccepteerd worden. Ik zou het domein en path van de cookies goed zetten. Misschien helpt dat.
 
Hoe moeten we die foutmelding zien? Een door jouw gecreeërd of een PHP-foutmelding?

Als het niet de laatst is dan zou je even moeten kijken of PHP-foutmeldingen wel worden weergegeven, zo niet dan zorgen dat ze worden weergegeven :)

Het is inderdaad een eigen gecreëerde foutmelding, maar die werd in het begin wel weergegeven, en ik heb niets veranderd aan de php.(*)

Klinkt als cookies die niet geaccepteerd worden. Ik zou het domein en path van de cookies goed zetten. Misschien helpt dat.
(*)

Dat was ook mijn eerste gedacht, maar wil je me even helpen bij het instellen van dat domein en path?

(*) Het eigenaardige is dat het bij één website in Firefox wel werkt, en bij de andere, die identiek hetzelfde php-script gebruikt, niet.

Groetjes,

Jeroen.
 
Mensen die hier een oplossing voor weten?

Groetjes,

Jeroen.
 
Uhh... ik vrees van niet? :(

Heb je je internet provider al om hulp gevraagd? Misschien weten die er iets vanaf; als je zelf niets veranderd hebt...
 
Het is moeilijk te zeggen wat hier fout gaat. Helemaal omdat we geen code zien. Zou je misschien wat code kunnen plaatsen?

Heb je ook geprobeerd op een lokale dev omgeving met
error_reporing( E_ALL );
ini_set('display_errors', 1);

boven aan je code te zetten. of misschien even in de 2 versies.
 
login met cookies zou ik niet aan beginnen als ik jou was.

een in mijn ogen veiliger alternatief is $_SESSION.

moet je wel zorgen dat je boven elke pagina
PHP:
<?php session_start(); ?>
zetten, dan kun je "sessievariabelen" "zetten" door gewoon
PHP:
$_SESSION['var_naam']="var_value"
te doen. aanroepen natuurlijk met bijv.
PHP:
if($_SESSION['var_naam'] == "var_value"){}

Voor degenen die dit nog niet wisten (A)
 
En als je nu wilt zorgen dat een gebruiker automatisch inlogd als hij je pagina opent. Ook als hij tussendoor zijn browser eens heeft gesloten en weer geopend? Dat gaat je niet lukken met alleen sessies. Die zijn niet meer geldig als je de browser afsluit. Voor het onthouden van de gegevens (encrypted) zijn cookies zeer handig.
 
sessies werken ook met cookies (vaak, niet altijd). In een cookie staat de sessie-ID die door PHP gekoppeld is aan de sessie-gegevens. Het IP adress kan ook nog opgeslagen en contontroleerd worden om sessie-stelen tegen te gaan, ookal is het redelijk lastig als je de ID gaat gokken. Maar meestal werkt het dus alsnog met cookies.
 
ja dat klopt, maar sessies zijn (volgens mij altijd) veiliger

En als je nu wilt zorgen dat een gebruiker automatisch inlogd als hij je pagina opent. Ook als hij tussendoor zijn browser eens heeft gesloten en weer geopend? Dat gaat je niet lukken met alleen sessies. Die zijn niet meer geldig als je de browser afsluit. Voor het onthouden van de gegevens (encrypted) zijn cookies zeer handig.

Klopt ook, maar je zou kunnen kijken of je een sessie + een cookie kunt aanmaken, een de sessie hervatten aan de hand van die cookie en het IP-adres. Ik weet echter niet of en hoe dat kan.
 
Laatst bewerkt:
Ik vind het heel eigenaardig dat geen van beide sites het nog doet in IE, en één van de sites wel nog in FF en de andere ook niet in FF.
Hier is de code die gebruikt wordt:

Dit staat in de pagina die de andere pagina include:
PHP:
<?php
if ($_POST["pwd"]) {
	$spwd = md5(md5(md5($_POST["pwd"])));
	setcookie('password',$spwd);
};
if ($_POST["email"]) {
	setcookie('email',$_POST["email"]);
};
?>

Hier volgt de pagina die in de andere included is:
PHP:
<table width="100%" cellpadding="5" style="border:none">
  <tr>
    <?php
	$bloggedin = false;
	$spw = "p a s w o o r d";
	$apw = explode(" ",$spw);
	$spw = join("",$apw);
	$db = mysql_connect("","login",$spw) or die ("Door een probleem buiten onze macht om kan er geen verbinding gemaakt worden met de database.");
	mysql_select_db("database", $db);
	if ($_COOKIE["password"] || $_POST["pwd"]) {
	  $semail = ($_COOKIE["email"]) ? $_COOKIE["email"] : $_POST["email"];
	  $spwd = ($_COOKIE["password"]) ? $_COOKIE["password"] : md5(md5(md5($_POST["pwd"])));
	  $sql = "SELECT * from management";
	  $res = mysql_query($sql,$db);
	  while ($line = mysql_fetch_object($res)) {
		if (($semail == $line->Email) && ($spwd == $line->Passw)) {
		  $bloggedin = true;
		};
	  };
	};
	if ($bloggedin == true) {
	  ?>
    <th><h4>Ingelogd</h4></th>
  </tr>
  <tr>
    <td align="center"><table width="90%" cellpadding="5" style="border:none">
        <tr>
          <td align="center">Je bent succesvol ingelogd.</td>
        </tr>
        <tr>
          <td align="center">Je hebt nu in het menu extra mogelijkheden.</td>
        </tr>
      </table></td>
      <?php
	} else {
	  ?>
    <th><h4>Inloggen</h4></th>
  </tr>
  <tr>
    <td align="center"><table width="50%" cellpadding="5" style="border:none">
        <form method="post" action="<?php $PHP_SELF ?>">
          <tr>
            <td>&nbsp;</td>
            <td>Enkel voor het bestuur</td>
          </tr>
          <tr>
            <td width="25%" align="right"> E-mail: </td>
            <td><input name="email" type="text" size="30" class="gb1" />
            </td>
          </tr>
          <tr>
            <td align="right"> Wachtwoord: </td>
            <td><input name="pwd" type="password" size="30" class="gb1" />
            </td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td><input type="submit" value="Inloggen" class="gbbtn" />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <input type="reset" value="Wissen" class="gbbtn" />
            </td>
          </tr>
        </form>
      </table></td>
      <?php
	};
	?>
  </tr>
</table>
De pagina toont niets meer als je ingelogd bent, ipv de bevestiging dat je weldegelijk ingelogd bent.
Ik probeer later nog wel met sessions

Groetjes,

Jeroen.
 
Laatst bewerkt:
PHP:
<?php
if ($_POST["pwd"]) {
	$spwd = md5(md5(md5($_POST["pwd"])));
	setcookie('password',$spwd);
};
if ($_POST["email"]) {
	setcookie('email',$_POST["email"]);
};
?>

Weet je wat ik altijd doe?
Bijv
PHP:
md5(md5($_POST["pwd"]) . md5("stringgetje"));

Ik zeg niet dat het beter of slechter is, maar het is een suggestie :thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan