Eerste probeersel tot loginsysteem

Status
Niet open voor verdere reacties.

pro pizza

Gebruiker
Lid geworden
24 dec 2007
Berichten
454
Hallo,
Zoals de titel al zegt, ik heb net een soort van loginsyteempje bedacht (met hulp van een aantal sites).
PHP:
<?php
$naam = "naam";
$wachtwoord = "wachtwoord";

Echo "<table>
      <tr>
      <td>Login naam:</td>
      <td><input type='name' name='naam'></td>
      </tr>
      <tr>
      <td>Wachtwoord:</td>
      <td><input type='password' name='pass'></td>
      </tr>
      <tr>
      <td><td><input type='submit' value='Verzenden' name='verzenden'></td>
      </tr>";

If (isset($_POST['verzenden'])) {
   If (strtolower($_POST['naam']) != strtolower($naam)); {
     $error="Verkeerde naam";
 } If (strtolower($_POST['pass']) != strtolower($wachtwoord)); {
     $error="Verkeerd wachtwoord";
}

If (empty($error)) {
Print "U bent ingelogd";
}

Else {
Print "U heeft het verkeerde wachtwoord of login naam opgegeven, probeer het opnieuw";
}
}
?>
Maar als ik nu in het formulier bij login naam: "naam" invul en bij wachtwoord: "wachtwoord" invul dan geeft hij niet als uitkomst: "U bent ingelogd." wat doe ik fout?

Mvg, Ruben

********edit********
het wil ook niet als ik $_POST verander in $_GET..
 
Laatst bewerkt:
Je haalt je data van het formulier op met $_POST, maar je verzend het niet met $_POST.
Sterker nog, je verzend het helemaal niet.

Ten eerste zul je er voor moeten zorgen dat je data verzonden wordt. Dit doe je door een formulier te maken en die als methode "POST" mee te geven.
Binnen dit formulier vallen je invulvelden en je verzendknop.
Daarnaast zal het formulier een script of functie moeten aanroepen. Dat kan ook dezelfde pagina zijn.

Om het nog mooier te maken gebruik je niet het echo commando om je formulier te tonen, maar sluit je PHP af, schrijf je de html en open je PHP daarna weer.

Code:
<?php
$naam = "naam";
$wachtwoord = "wachtwoord";
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
<table>
<tr><td>Naam: </td><td><input type="text" name="naam"/></td></tr>
<tr><td>Password: </td><td><input type="password" name="password" /></td></tr>
<tr><td>&nbsp;</td><td><input type="submit" value="Verzenden" name="verzenden" /></td></tr>
</table>
<?php
If (isset($_POST['verzenden'])) {
   If (strtolower($_POST['naam']) != strtolower($naam)); {
     $error="Verkeerde naam";
 } If (strtolower($_POST['pass']) != strtolower($wachtwoord)); {
     $error="Verkeerd wachtwoord";
}

If (empty($error)) {
Print "U bent ingelogd";
}

Else {
Print "U heeft het verkeerde wachtwoord of login naam opgegeven, probeer het opnieuw";
}
}
?>

Ik heb het niet getest, het kan zijn dat je validatiefunctie nog niet helemaal klopt, maar nu krijg je in ieder geval je data van je formulier in je PHP code.
 
Oké, bedankt misschien helpt dit me verder;)
Ik ga het vanmiddag even proberen aangezien ik zo naar school moet.

Maar wat betekent deze regel precies?:
PHP:
<?php echo $_SERVER['PHP_SELF'];?>

Mvg, Ruben
 
$_SERVER['PHP_SELF'] is de naam en locatie van het script dat op dit moment uitgevoerd wordt. Daarmee kun je dus verwijzen naar de huidige pagina; bijv om een link terug te zetten naar die pagina.
 
je kunt ook gewoon 'action' leeglaten, dat post ook naar dezelfde pagina
 
Hij werkt nu :D bedankt voor jullie hulp.

PHP:
<?php
$naam="naam";
$wachtwoord="wachtwoord";
?>
<html>
<head>
<title> Login!</title>
</heaD>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
<table>
      <tr>
      <td>Login naam:</td>
      <td><input type="name" name="naam" /></td>
      </tr>
      <tr>
      <td>Wachtwoord:</td>
      <td><input type="text" name="wacht" /></td>
      </tr>
      <tr>
      <td><td><input type="submit" value="Verzenden" name="verzenden" /></td>
      </tr>
</table>
</form>
</body>
</html>

<?php
If (isset($_POST['verzenden'])) {
   If ($_POST['naam'] != $naam) {
     $error="Verkeerde naam";
 } If ($_POST['wacht'] != $wachtwoord) {
     $error="Verkeerd wachtwoord";
}


If (!empty($error)) {
Print "$error";
}

Else {
Print "U bent nu ingelogd";
}
}

?>

Achter dit stuk code:
PHP:
If ($_POST['wacht'] != $wachtwoord)
en:
PHP:
If ($_POST['naam'] != $naam)
stond een ';'. daardoor werkte iets niet.

En ik heb dit stuk als "action" toegevoegd:
PHP:
<?php echo $_SERVER['PHP_SELF'];?>

@SvU, aangezien ik nu nog niet zo heel lang bezig ben met het proberen, snap ik dat artikel niet helemaal, maar ik zal het onthouden en er later nog eens naar kijken.

Nu wil ik eigenlijk ook nog dat na het inloggen hij naar een pagina gaat waarvoor je ingelogd moet zijn. iemand die mij verder kan helpen?
 
op het punt dat iemand ingelogd is, PHP het volgende laten echoën:
Code:
<meta http-equiv="refresh" content="10; url=http://site/">

waar 10 = het aantal seconden dat hij wacht voordat hij zal refreshen
en http://site/ = de URL waar hij naartoe refresht
 
overigens, om nog eens te controleren of iemand goed ingelogd is op de nieuwe pagina, kun je het beste een PHP session maken. dit hoeft niet ingewikkeld te zijn, zijn genoeg tutorials voor op het internet, maar het is wel basismateriaal voor een degelijk loginsysteem!!!
 
Oké, maar wat moet er dan precies in die session komen?

Mvg, Ruben
 
PHP:
<?php
session_start();
$naam="Naam";
$wachtwoord="wachtwoord";
$_session['naam'] = $naam;
$_session['wachtwoord'] = $wachtwoord;
?>
<html>
<head>
<title> Login!</title>
</heaD>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
<table>
      <tr>
      <td>Login naam:</td>
      <td><input type="name" name="naam" /></td>
      </tr>
      <tr>
      <td>Wachtwoord:</td>
      <td><input type="text" name="wachtwoord" /></td>
      </tr>
      <tr>
      <td><td><input type="submit" value="Verzenden" name="verzenden" /></td>
      </tr>
</table>
</form>
</body>
</html>

<?php
If (isset($_POST['verzenden'])) {
   If ($_POST['naam'] != $naam) {
     $error="Verkeerde naam";
 } If ($_POST['wachtwoord'] != $wachtwoord) {
     $error="Verkeerd wachtwoord";
}


If (!empty($error)) {
Print "$error";
}

Else { ?>
<html>
<body>
<meta http-equiv="refresh" content="2; url=page.php">
</body>
</html>
<?php
}
}

?>

Ik heb dit nu in de login.php
en dit:
PHP:
<?php session_start(); ?>
<html>
<head>
<title>U bent ingelogd </title>
</head>
<body>
<?php
Print "Hallo,".$_SESSION['naam'];
?>
</body>
</html>

In de page.php

Maar hij geeft niet de juiste naam weer.. hoe kan dit? en hoe moet ik dit veranderen?
 
PHP:
$_session['naam'] = $naam;
$_session['wachtwoord'] = $wachtwoord;

Variabelen zijn hoofdletter gevoelig; dit is niet de echte session die je hier aan het zetten bent :)
 
Een redirect kun je trouwens beter zo doen:

PHP:
<?php
header('Location: jePagina.php');
?>
 
@Erikbooy hoe bedoel je precies? waarin moet ik dat zetten en waar?

Mvg, Ruben
 
@Frats
Ik heb dat veranderd in de login.php
Maar nu geeft hij de volgende foutmelding:

Notice: Undefined index: naam in C:\*****\****\Bureaublad\UsbWebserver_nosmtp\UsbWebserver\Root\l***\page.php on line 8
Hallo,
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan