Hoi,
Ik heb een vreemd probleem met een formulier afhandeling.
Het formulier dat ik wil maken / gebruiken is een inlog formulier, dat
qua opmaak in een .inc file zit. Deze ziet er zo uit:
<div id="rightcolumn">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<form action="/traderspit/tests/login.php" method="post">
<input name="active" type="hidden" value="in">
<fieldset>
<legend>Members login</legend>
<table border="0" cellspacing="0" cellpadding="3">
<tr>
<td><font color="orange">Emailadres</font></td>
<td>
<input type="text" size="15" name="emailadres">
</td>
<td></td>
</tr>
<tr>
<td><font color="orange">wachtwoord </font></td>
<td>
<input type="password" size="15" name="invoerwachtwoord">
</td>
<td>
<input type="submit" value="Verzenden" name="Submit">
</td>
</tr>
</table>
</fieldset>
</form></td>
</tr>
</table>
</div>
Deze .inc file (loginform.inc) include ik in een php pagina ergens op
de site en voor als er verkeerd wordt ingelogd binnen de file
login.php, die er als volgt uitziet.
<?php
session_start();
?>
<head>
<title>Log in</title>
</head>
<?php
if(isset($_POST['active']) && $_POST['active']=='in')
{
$_SESSION["active"]=$_POST['active'];
unset($HTTP_GET_VARS['active']);
}
if(isset($HTTP_GET_VARS['active']) && $HTTP_GET_VARS['active']!='in')
{
$_SESSION["active"]='out';
unset($HTTP_GET_VARS['active']);
}
if(isset($_POST['invoerwachtwoord'])) { $_SESSION["invoerwachtwoord"]=
$_POST['invoerwachtwoord'];}
if(isset($_POST['emailadres'])) { $_SESSION["emailadres"]=
$_POST['emailadres'];}
if (($_SESSION["active"]<>'in' && $_SESSION["active"]=='out') ||
$_SESSION["emailadres"] == "")
{
$_SESSION["validated"] = false;
include('loginform.inc');
}
if(isset($_SESSION["emailadres"]) && $_SESSION["emailadres"] <> "" &&
isset($_SESSION["invoerwachtwoord"]) && $_SESSION["active"]=='in')
{
mysql_connect("localhost","iemand","daarginder") or die ("kon geen
verbindig maken met de DB");
mysql_select_db("dedatabase") or die ("kan de database niet
selecteren");
$query = "select `wachtwoord` from pta where `emailadres`='".
$_SESSION['emailadres']. "' limit 1";
$result = mysql_query($query) or die(mysql_error());
$countResultRow = mysql_num_rows($result);
if ($countResultRow == 0)
{
session_destroy();
echo "Onbekend emailadres<br><a href=\"".$_SERVER["PHP_SELF"]."?
active=out\">ga terug</a>";
die;
}
$row = mysql_fetch_assoc($result);
$wachtwoord = $row['wachtwoord'];
$_SESSION["validated"] = ($_SESSION["invoerwachtwoord"]==
$wachtwoord);
if (!$_SESSION["validated"]) {
session_destroy();
die ("Het wachtwoord dat u heeft opgegeven, komt niet overeen met
de gegevens in de database.<br> <a href=\"".$_SERVER["PHP_SELF"]."?
active=out\">Ga terug</a>");
}
echo "<a href=\"".$_SERVER["PHP_SELF"]."?active=out\">log out</
a><br>";
}
if (!$_SESSION["validated"]) {
session_destroy();
die();
}
echo "de rest van de pagina, die dan te zien is als je correct bent
ingelogd<br>";
?>
Het vreemde is nu, dat als ik login.php direct aanroep, alles prima
werkt. Als ik niet invul en op verzenden druk, krijg ik gewoon weer
het formulier, als ik een onbekend emailadres invul, krijg ik daar een
melding over en kan ik op terug drukken om nogmaals aan te melden.
Wanneer mijn wachtwoord niet overeenkomt met het wachtwoord dat
gekoppeld is aan het emailadres, dan krijg ik daar ook een melding
van. En als ik de juiste combinatie van email en wachtwoord heb
opgegeven, dan krijg ik “de rest van de pagina, die dan te zien is als
je correct bent ingelogd“ te zien. Dus alles werkt….
Totdat ik het formulier niet invul vanaf login.php, maar vanaf een
andere pagina. Dan krijg ik na het versturen, een string achter de URL
van de pagina die het formulier verstuurd heeft:
test.php?
active=in&emailadres=mijn@emailadres.hier&invoerwa chtwoord=hetwachtwoord&Submit=Verzenden
test.php ziet er zo uit:
<?php
include(‘loginform.inc’);
?>
Het vreemde is dus dat ik weer op dezelfde pagina kom en het verzenden
en de afhandeling niet goed gaat.
Als ik een copy van login.php in een andere directory zet en in
loginform.inc è action de directory aanpas naar de copy, dan kan ik
wel vanuit het origineel het formulier verzenden naar de kopie, waar
het ook correct wordt afgehandeld.
Maar ik krijg het dus niet voor elkaar om het vanuit een andere pagina
te verzenden en af te handelen.
Iemand een idee waar het aan ligt?
Groeten,
Matthijs

Likes:

Quote