Inlog probleem

Installatie lukt niet? Plotseling een foutmelding. Of weet je niet hoe iets werkt. Problemen met phpBB2 kun je in dit archief opzoeken.
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
Gesloten
DoingK
Berichten: 17
Lid geworden op: 14 dec 2003, 17:02

Inlog probleem

Bericht door DoingK » 02 jan 2005, 04:11

Om te beginnen, weet ik dat mijn vraag niet phpbb gerelateerd is, maar gezien de vele php kennis hier hoop ik dat iemand mij hier toch mee kan helpen.

Mocht dit topic op een verkeerde plek staan dan verplaats hem maar :D

alvast bedankt.

*iedereen nog een gelukkig nieuwjaar*




Ik zit met het volgende probleem, ik heb een login/leden script, waarbij je na het inloggen op de pagina index.php moet komen (header("Location: index.php"))

Echter gebeurt er na het correct inloggen helemaal niks, en blijft het script op de pagina login.php staan, echter met een leeg scherm.

Als ik vervolgens handmatig naar index.php ga, dan krijg ik wel netjes alle kolommen die je hoort te krijgen na het inloggen (zoals lougout, wijzig profiel enz).

Het gaat om dit login script :

Code: Selecteer alles

<?  
session_start();  

require("config.php");  

if($submit){  

$query = mysql_query("SELECT * FROM members WHERE gebruikersnaam = '$gebruikersnaam' AND wachtwoord = '$wachtwoord' AND geactiveerd = '1'");  
$result = mysql_num_rows($query);  

if(!$result){  
$a = "Gebruikersnaam en/of Wachtwoord is/zijn incorrect. Of je bent vergeten om je account te activeren...<br><br><a href=\"?gebruikersnaam=$gebruikersnaam\">Ga terug</a>";  
}  
else{  
while($object = mysql_fetch_object($query)) {  
$memberid = $object->memberid;  
}
$login = 1;  
session_register("login");  
session_register("memberid");  
header("Location: index.php");  

}  
}  
else{  



if(!$login){  
$a = "<form method=\"POST\" action=\"$PHP_SELF\"> 
  <input type=\"hidden\" name=\"submit\" value=\"1\"> 
  Naam:<br> 
  <input type=\"text\" name=\"gebruikersnaam\" size=\"20\" value=\"$gebruikersnaam\"><br> 
  Wachtwoord:<br> 
  <input type=\"password\" name=\"wachtwoord\" size=\"20\"><br> 
  <input type=\"submit\" value=\"Login\"> <input type=\"reset\" value=\"Aanmelden\"  
  onclick=\"document.location.href=('aanmelden.php')\"> 
</form>";  
}  
else{  
header("Location: login.php");  
}  
}  
// Op de plaats in je layout waar je het inlogformulier wilt hebben doe je ( echo $a; ) 
echo $a;  
?> 
Volgens mij hoort het zo te werken, maar dat doet het dus blijkbaar niet. Ik hoop dan ook dat iemand mij hier mee kan helpen, bij voorbaat dank.

Gebruikersavatar
WebSiteNet
Berichten: 6524
Lid geworden op: 20 okt 2003, 16:56
Locatie: Wieringerwerf
Contacteer:

Bericht door WebSiteNet » 02 jan 2005, 09:41

Ugh.......

Sorry hoor, maar dit is of heel erg slecht gecoded of vijf jaar geleden gecoded. Ik heb het even overnieuw gedaan. Dit is het resultaat:

Code: Selecteer alles

<?  
session_start();  

require "./config.php"; 

$self = $_SERVER['PHP_SELF']; 

if($_POST['submit'])
{  
    $sql = "SELECT memberid FROM members WHERE gebruikersnaam = '" . $_POST['gebruikersnaam'] . "' AND wachtwoord = '" . $_POST['wachtwoord'] . "' AND geactiveerd = '1'";
	$result = mysql_query($sql) or die('MySQL Error: ' . mysql_error() . '<br /><br />Query: ' . $sql);  
    $rows = mysql_num_rows($result);  

    if($rows < 1)
	{  
        $a = "Gebruikersnaam en/of Wachtwoord is/zijn incorrect. Of je bent vergeten om je account te activeren...<br><br><a href=\"" . $self . "?gebruikersnaam=" . $gebruikersnaam . "\">Ga terug</a>";  
    }  
	else if($rows > 1)
	{
	    $a = "Er is iets fout gegaan bij het inloggen. Er zijn meerdere mensen met de zelfde gebruikersnaam en wachtwoord...<br><br><a href=\"" . $self . "?gebruikersnaam=" . $gebruikersnaam . "\">Ga terug</a>";
	}
    else
	{  
        $object = mysql_fetch_object($result);
        $memberid = $object->memberid;  
        $login = true;  

        session_register("login");  
        session_register("memberid");  
        header("Location: index.php");  

    }
}  
else
{  
    $a = "
<form method=\"POST\" action=\"$self\"> 
 <input type=\"hidden\" name=\"submit\" value=\"1\"> 
 Naam:<br> 
 <input type=\"text\" name=\"gebruikersnaam\" size=\"20\" value=\"" . $_GET['$gebruikersnaam'] . "\"><br> 
 Wachtwoord:<br> 
 <input type=\"password\" name=\"wachtwoord\" size=\"20\"><br> 
 <input type=\"submit\" value=\"Login\"> <input type=\"reset\" value=\"Aanmelden\" onclick=\"document.location.href='aanmelden.php';\"> 
</form>";  

}  
// Op de plaats in je layout waar je het inlogformulier wilt hebben doe je ( echo $a; ) 
echo $a;  
?>
Dit is niet xhtml en het is ook geen geweldig php, maar ik heb een beetje die stijl aangehouden die er in stond.

Misschien kan je beter php gaan leren. Ik krijg een gevoel dat dit een script is dat je ergens van internet geplukt hebt.

DoingK
Berichten: 17
Lid geworden op: 14 dec 2003, 17:02

Bericht door DoingK » 02 jan 2005, 15:48

Het is inderdaad een scriptje die ik gevonden heb, maar ik ben zelf nog niet dusdanig goed in php dat ik zelf zoiets al goed kan bouwen, ben ik nog aan het leren.

Echter blijft hij nu precies hetzelfde doen, dus nog helaas niks.

hij blijf hangen op:

Code: Selecteer alles

    else 
   {  
        $object = mysql_fetch_object($result); 
        $memberid = $object->memberid;  
        $login = true;  

        session_register("login");  
        session_register("memberid");  
        header("Location: index.php");  

    }
dit stukje, de code 'header("Location: index.php"); word dus niet uitgevoerd en blijft de pagina op login.php staan


als iemand een beter script weet, dan mag dat ook :)

ik probeer wel zelf de code zo goed mogelijk te begrijpen, zodat ik er zelf ook van leren kan

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20298
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 02 jan 2005, 16:32

de spatie na location moet weg

ElbertF
Berichten: 5803
Lid geworden op: 12 okt 2004, 08:34
Contacteer:

Bericht door ElbertF » 02 jan 2005, 16:39

@ paulus: dat is niet waar..

Zit index.php wel in de zelfde map, of hoger? Probeer eens

Code: Selecteer alles

header("Location: ./index.php"); 

DoingK
Berichten: 17
Lid geworden op: 14 dec 2003, 17:02

Bericht door DoingK » 02 jan 2005, 17:13

zowel de spatie als de / had ik al geprobeerd, werkt echter beiden niet.

alle php bestanden staan in dezelfde map, dus dat moet het probleem ook niet zijn.

Code: Selecteer alles

else 
   {  

        header("Location: index.php");  

        $object = mysql_fetch_object($result); 
        $memberid = $object->memberid;  
        $login = true;  

        session_register("login");  
        session_register("memberid");  
        

    }
ook zo heb ik het al geprobeerd, dus header bovenaan, maar zelfs dat werkt niet, ik vermoed dan ook dat het script niet eens toe komt aan de code na 'else'

ElbertF
Berichten: 5803
Lid geworden op: 12 okt 2004, 08:34
Contacteer:

Bericht door ElbertF » 02 jan 2005, 17:28

Daar kan je achter komen door tijdelijk

Code: Selecteer alles

print "TEST!";
In het else-blok te plaatsen. Heb je geen link zodat we de broncode kunnen bekijken?

DoingK
Berichten: 17
Lid geworden op: 14 dec 2003, 17:02

Bericht door DoingK » 02 jan 2005, 20:03

Code: Selecteer alles

else 
   {  
print "TEST!";
        $object = mysql_fetch_object($result); 
print "TEST!";
        $memberid = $object->memberid;  
print "TEST!";
        $login = true;  
print "TEST!";

        session_register("login");  
print "TEST!";
        session_register("memberid");  
print "TEST!";
        header("Location: index.php");  
print "TEST!";

    } 
geeft als resultaat :

TEST!TEST!TEST!TEST!TEST!TEST!TEST!

dus worden ze allemaal uitgevoerd, zelfs de print opdracht na de header opdracht

waarom gaat het daar niet goed dan en word ik doorgestuurd naar de index.php?


ps. de broncode staat in de post van Websitenet, zijn code heb ik nu in gebruik, echter maakte dat geen verschil met de broncode die in mijn startpost staat

ElbertF
Berichten: 5803
Lid geworden op: 12 okt 2004, 08:34
Contacteer:

Bericht door ElbertF » 02 jan 2005, 20:09

De redirect vindt wel plaats, maar om de een of andere reden wordt je weer terug gestuurd naar de login. De fout zit dus ergens anders (in de header, index, of in een van de functiebestanden)..

Gesloten