Ik heb sinds een aantal dagen dit draaien: http://anouksweb.nl/php/members.zip

alles werkt goed, maar nu het probleem:

Ik heb een eigen php pagina waar ik het login formulier op wil hebben.

Dus dat deed ik met

<?php
include("members\login.php");
?>

Maar als ik nu inlog, logt ie niet echt in zeg maar, de pagina veranderd niet naar de pagina die je krijgt als je ingelogt bent, het lijkt erop dat hij die pagina alleen maar ververst.

Als ik direct inlog op de pagina 'members/login.php' gaat het gewoon goed.

Iemand enig idee hoe ik het werkend kan krijgen?

Alvast Bedankt!
De ERROR output:

Notice: A session had already been started - ignoring session_start() in C:\Program Files\Abyss Web Server\htdocs\members\login.php on line 2

Notice: Undefined variable: submit in C:\Program Files\Abyss Web Server\htdocs\members\login.php on line 6

Notice: Undefined variable: login in C:\Program Files\Abyss Web Server\htdocs\members\login.php on line 29

Notice: Undefined variable: gebruikersnaam in C:\Program Files\Abyss Web Server\htdocs\members\login.php on line 33


Dat de code antiek is, geloof ik zo, maar ik heb momenteel nog niet de kennis om het zelf helemaal te herschrijven;).

Als ik inlog, heb ik weer alleen deze error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\Abyss Web Server\htdocs\members\userbar.php on line 16
Notice: A session had already been started - ignoring session_start() in C:\Program Files\Abyss Web Server\htdocs\members\login.php on line 2

> Je hebt output voor je session_start(), dit mag niet. Heb je soms een spatie voor de <? staan?

Notice: Undefined variable: submit in C:\Program Files\Abyss Web Server\htdocs\members\login.php on line 6

> Echt een PHP-er. Definieer eerst je variabele voordat je hem gebruikt. dus zet boven je if($submit) het volgende: $submit = null;

dit geldt dus ook voor die andere undefined variabelen.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\Abyss Web Server\htdocs\members\userbar.php on line 16

> Dit kan zijn dat je query onjuist is.

edit
Foutje, de melding
Notice: A session had already been started - ignoring session_start() in C:\Program Files\Abyss Web Server\htdocs\members\login.php on line 2

zegt dat er al eerder een session_start in je code staat. Hij kan niet 2x een session_start starten
de manier van $submit op null zetten en dat ook met andere variabelen doen werkt niet, zo kan ik niet meer inloggen. Die errors zijn er dus nog steeds.

Mijn query:

if(session_is_registered('memberid')){
$result = mysql_query("SELECT naam FROM members WHERE username = '$memberid'");

$row = mysql_fetch_array( $result );
$naam = $row['naam'];


Natuurlijk wordt het if-statement afgesloten, dit gebeurd pas een eindje verderop ;)

Op deze manier gebruik ik $naam:

Ingelogd als : <? echo $naam;
?>
Samengevat:

1. if(session_is_registered('memberid')){
-> kan in principe niet werken gezien register_globals op off behoort te staan
* oplossing if(isset($_SESSION['memberid'])){

2. je gebruikt _fetch_array op verkeerde manier
* advies gebruik _fetch_assoc of geef bij _fetch_array de method mee en dan niet de _BOTH want daar heb je eenmaal niets aan

3. php variabelen plaats je buiten qoutes
4. maak geen overbodige variabelen aan

5. en dan zie ik ook nog sessin_register
-> kan in principe niet werken gezien register_globals op off behoort te staan
* oplossing $_SESSION['memberid'] = $row['memberid'];

6. zet je sql statement nooit direct in mysql_query, ene mysql_error zegt in vele gevallen wel iets, echter als je het sql-statement er ook bij zet dan zie je vaak sneller wat er loos is.
* maak correcte foutafhandeling

99. Post je wijzigen tenopzichte van voorgaande posts, dan blijft het voor een ieder duidelijk wat je hebt gewijzigd. (en ik bedoel niet dat je telkens het gehele script moet post maar alleen de relevante zaken met comment blokken erbij opdat er dan te lezen valt wat de wijziging behelst heeft)
Notice: Undefined variable: memberid in C:\Program Files\Abyss Web Server\htdocs\members\userbar.php on line 13

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Program Files\Abyss Web Server\htdocs\members\userbar.php on line 14

Notice: Undefined variable: memberid in C:\Program Files\Abyss Web Server\htdocs\members\userbar.php on line 17

dat zijn de waarschuwingen die blijven.

Dingen die gewijzigd zijn is login.php:

$_SESSION['login'] = $row['username'];
$_SESSION['memberid'] = $row['memberid'];

dat is ipv session_register

Dingen die gewijzigd zijn in userbar.php:

if(isset($_SESSION['memberid'])){
$result = mysql_query("SELECT naam FROM members WHERE username = $memberid");
$row = mysql_fetch_assoc($result);
$naam = $row['naam'];

De volgende errors zijn er nog:

Notice: Undefined variable: memberid in C:\Program Files\Abyss Web Server\htdocs\members\userbar.php on line 13

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Program Files\Abyss Web Server\htdocs\members\userbar.php on line 14

Notice: Undefined variable: memberid in C:\Program Files\Abyss Web Server\htdocs\members\userbar.php on line 17

$memberid wordt toch aangemaakt door het $SESSION variable?
Je gaat hier
username = $memberid
naar mijn inzicht al appels met peren vergelijken
je moet er wel voor zorgen dat $memberid bestaat alvorens deze te gaan gebruiken.

Het is niet $SESSION maar $_SESSION, ja ook dat soort zaken moet je goed in je posts verwerken, met de aanname dat je inderdaad wel overal in je code $_SESSION hebt staan.
Fixed, is nu $result = mysql_query("SELECT naam FROM members WHERE memberid = $memberid");

Maar met variabel $memberid wordt toch aangemaakt met $_SESSION['memberid'] = $row['memberid']; ? en inderdaad, ik heb overal $_SESSION gebruikt, was een typfout ;)
Maarten schreef op 14.09.2008 15:18
Maar met variabel $memberid wordt toch aangemaakt met $_SESSION['memberid'] = $row['memberid']; ? en inderdaad, ik heb overal $_SESSION gebruikt, was een typfout ;)

$memberid is toch niet hetzrlfde als $_SESSION['memberid']
hmm okee, maar hoe zorg ik er dan voor dat $memberid het memberid bevat van de ingelogde user?
Dat heb je toch niet nodig. Gebruike gewoon $_SESSION['memberid'].

Reageren