*****FIXED******
Na de zoek functie kwam ik op de site:
http://php.net/manual/en/function.setcookie.php
Daar heb ik even wat dingen van gelezen, en kwam ik er gelijk achter waar het probleem zat.
Hij is dus fixed.
IK laat de topic zelf nog wel staan, aangezien mijn login het eerst ook deed voor 3 dagen, en daarna "crashde"
---------------------------------------------------
Hey cp,
Ik was dus bezig met een project, deze stond op de host versio. Alles ging goed tot ik plots niet meer kon inloggen, dat werkte gewoon opeens niet meer.
Het projectje heeft toen lang stil gelegen, tot ik besloot er weer mee verder te gaan. Ik heb nu het zelfde script op een free host staan, en het inloggen werkt gewoon weer.
Ik heb hem nu dus weer op mijn betaalde host (versio) gezet en daar heb ik PRECIES het zelfde script opgezet.
Nou is het probleem echter, dat ik bij de gratis host gewoon kan inloggen, maar als ik dat bij de betaalde doet dan staat er dat ik aangemeld bent, en ook komt het menu tevoorschijn.
Echter, als ik dan van de pagina af gaat, krijg ik mijn error pagina, dat er nog niet ingelogd is, ook verdwijnt de menu (die je alleen ziet als je ingelogd bent)
Nou en zo gaat dat dan door, echt heel vaag. Mijn login script:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// Dit is niet mijn gewoonte om queries op deze manier in te springen, maar om de layout
// van Sitemasters niet naar de knoppen te helpen doe ik dit even gek :)
$qLogin = mysql_query("SELECT id FROM gebruikers WHERE
gebruikersnaam = '".mysql_real_escape_string($_POST['gebruikersnaam'])."' AND
wachtwoord = '".sha1($_POST['wachtwoord'])."'");
// Met deze query selecteren we het gebruikers-id van de gebruikersnaam en controleren we of
// de account geactiveerd is in 1 keer. Als je deze niet snapt, lees hem dan 20 keer :)
// Je kan natuurlijk ook een tutorial over dit soort queries lezen, alhoewel
// ze poepsimpel zijn IMO.
// Deze query mag overigens geen resultaten opleveren om te mogen inloggen. Als deze
// wél een resultaat oplevert is de account nog niet geactiveerd (en bestaat de
// activatiedata dus nog).
$qActivatie = mysql_query("SELECT COUNT(id) FROM gebruikers, gebruikers_activaties WHERE
gebruikers.gebruikersnaam = '".mysql_real_escape_string($_POST['gebruikersnaam'])."' AND
gebruikers.id = gebruikers_activaties.gebruikers_id");
if(mysql_result($qActivatie,0) != 0) {
echo 'De account is nog niet geactiveerd.';
} elseif(mysql_num_rows($qLogin) == 0) {
echo 'De gebruikersnaam/wachtwoord combinatie is niet correct.';
} else {
// Alles ok, inloggen dus.
// Nu is 1 ding belangerijk:
// ZORG DAT ER EEN session_start() GEPLAATST IS, HETZIJ IN JE INDEX.PHP WAAR
// DEZE PAGINA IN GEPLAATS WORDT, HETZIJ BOVENAAN DEZE PAGINA (ALS ER GEEN
// INCLUDESYSTEEM IS)!!!
$_SESSION['gebruiker'] = mysql_result($qLogin, 0);
$_SESSION['gebruikersnaam'] = $_POST['gebruikersnaam'];
// Mocht je nog andere data willen in je sessie,
// zoals een level, dien je dit hier te plaatsen.
?>
Je bent succesvol ingelogged. Klik <a href="controlepaneel.php">hier</a> om naar je controlepaneel te gaan.
<?php
}
}
?>
<form action="<?=htmlentities($_SERVER['REQUEST_URI'])?>" method="post">
Gebruikersnaam:<br />
<input type="text" name="gebruikersnaam" /><br />
Wachtwoord:<br />
<input type="password" name="wachtwoord" /><br />
<br />
<input type="submit" value="Inloggen" />
</form>
Toon Meer
Nu heb ik mensen horen zeggen dat "cookies" beter zijn, maar daar heb ik absoluut geen verstand van.
Groetjes,
EDIT:
Dit wordt overal geinclude bovenaan:
Als ik de error reporting weghaald, dan komt er overal bovenin mijn scherm te staan:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/xqtzaoym/domains/*/public_html/index.php:3) in /home/xqtzaoym/domains/*/public_html/includes/functies.php on line 3
Wat ik vaag vind, want NERGENS anders wordt de session opgeroepen.
EDIT EDIT:
Bij de free host ontstaat er een cookie bij mijn cookies, bij de betaalde host wordt er echter geen cookie aangemaakt. Ik denk dat dat het probleem is, maar hoe los ik deze dan op?