[PHP]Registreren
finduilas - 01/07/2006 10:49 (laatste wijziging 01/07/2006 10:50)
PHP gevorderde
Hallo,
Ik ben bezig met een registratiecontrole:
<?php
error_reporting(E_ALL);
include("config.php"); //mysql connectie includen
$namen = array(admin,webmaster,gast,webmasters);
if (IsSet($HTTP_POST_VARS['submit']))
{
if($HTTP_POST_VARS['username'] = "")
{
exit("Je hebt geen username ingevuld");
}
elseif($HTTP_POST_VARS['password'] = "")
{
exit("Je hebt geen password ingevuld");
}
elseif($HTTP_POST_VARS['password'] != $HTTP_POST_VARS['password2'])
{
exit("De wachtwoorden zijn niet gelijk");
}
elseif($HTTP_POST_VARS['username'] = $namen)
{
exit("Je username is niet toegelaten");
}
else
{
if (!@mysql_query("INSERT INTO
leden
(username,password,email,ip,aanmelddatum,level)
VALUES
('".addslashes($HTTP_POST_VARS['username'])."',
'".md5($HTTP_POST_VARS['password'])."',
'".addslashes($HTTP_POST_VARS['email'])."',
'".$HTTP_SERVER_VARS['REMOTE_ADDR']."',
'".time()."',
'1')
"))
{
exit("Kan niets in tabel zetten");
}
else
{
echo "Je registratie is voltooid.Je kan nu inloggen";
}
}
}
else {
//formulier
echo "<form action=\"\" method=\"post\">";
echo "Kies een gebruikersnaam:";
echo " <input name=\"username\"><br>";
echo "Kies een wachtwoord: ";
echo " <input name=\"password\" type=\"password\"><br>";
echo "Wachtwoord opnieuw: ";
echo " <input name=\"password2\" type=\"password\"><br>";
echo "Type een geldig e-mail adres in: ";
echo "<input name=\"email\"><br>";
echo "<input type=\"submit\" name=\"submit\" value=\"Registreer je!\">";
echo "</form>";
}
?>
<?php
include ( "config.php" ) ; //mysql connectie includen
$namen = array ( admin
, webmaster
, gast
, webmasters
) ;
if ( IsSet ( $HTTP_POST_VARS [ 'submit' ] ) ) {
if ( $HTTP_POST_VARS [ 'username' ] = "" )
{
exit ( "Je hebt geen username ingevuld" ) ; }
elseif ( $HTTP_POST_VARS [ 'password' ] = "" )
{
exit ( "Je hebt geen password ingevuld" ) ; }
elseif ( $HTTP_POST_VARS [ 'password' ] != $HTTP_POST_VARS [ 'password2' ] )
{
exit ( "De wachtwoorden zijn niet gelijk" ) ; }
elseif ( $HTTP_POST_VARS [ 'username' ] = $namen )
{
exit ( "Je username is niet toegelaten" ) ; }
else
{
leden
(username,password,email,ip,aanmelddatum,level)
VALUES
'" . md5 ( $HTTP_POST_VARS [ 'password' ] ) . "', '" . $HTTP_SERVER_VARS [ 'REMOTE_ADDR' ] . "',
'1')
" ) )
{
exit ( "Kan niets in tabel zetten" ) ; }
else
{
echo "Je registratie is voltooid.Je kan nu inloggen" ; }
}
}
else {
//formulier
echo "<form action=\" \" method=\" post\" >" ; echo "Kies een gebruikersnaam:" ; echo " <input name=\" username\" ><br>" ; echo "Kies een wachtwoord: " ; echo " <input name=\" password\" type=\" password\" ><br>" ; echo "Wachtwoord opnieuw: " ; echo " <input name=\" password2\" type=\" password\" ><br>" ; echo "Type een geldig e-mail adres in: " ; echo "<input name=\" email\" ><br>" ; echo "<input type=\" submit\" name=\" submit\" value=\" Registreer je!\" >" ;
}
?>
Alleen wil ik dus controleren of usernaam geen verkeerde inhoud bevat.Ik denk dus dat ik dat moet doen met een array. ($namen)
Maar ik krijg dus:
Notice: Use of undefined constant admin - assumed 'admin' in D:\wamp\www\finduilas\2\registreren.php on line 5
Notice: Use of undefined constant webmaster - assumed 'webmaster' in D:\wamp\www\finduilas\2\registreren.php on line 5
Notice: Use of undefined constant gast - assumed 'gast' in D:\wamp\www\finduilas\2\registreren.php on line 5
Notice: Use of undefined constant webmasters - assumed 'webmasters' in D:\wamp\www\finduilas\2\registreren.php on line 5
Bovendien werken m'n controle niet. Waarschijnlijk is het eenvoudig maar ik vind het niet (ben dan ook maar een noob in PHP)
EDIT: Ik weet dat ik ze weg krijg door die reporting_all weg te doen.Maar dat heb ik daar gezet omdat het scriptje niet werkte.Daarom
14 antwoorden
Gesponsorde links
lemoinet - 01/07/2006 11:12 (laatste wijziging 01/07/2006 11:13)
PHP gevorderde
probeer zo eens
$namen = array('admin','webmaster','gast','webmasters');
rambo - 01/07/2006 11:13 (laatste wijziging 01/07/2006 11:14)
HTML beginner
Probeer in eerste plaats eens $_POST ipv $HTTP_POST_VARS te gebruiken. Wellicht zijn jou instellingen op je localhost zou ingesteld dat ze de oude HTTP-vars niet meer ondersteunen...
Edit: Dit gaat natuurlijk ook niet werken:
elseif($HTTP_POST_VARS['username'] = $namen)
elseif ( $HTTP_POST_VARS [ 'username' ] = $namen )
Maak daar eens van:
elseif(in_array($_POST['username'], $namen))
elseif ( in_array ( $_POST [ 'username' ] , $namen ) )
marten - 01/07/2006 11:18
Beheerder
<?php
error_reporting(E_ALL);
include("config.php"); //mysql connectie includen
$namen = array(admin,webmaster,gast,webmasters);
if (IsSet($_POST['submit']))
{
if($_POST['username'] == "")
{
exit("Je hebt geen username ingevuld");
}
elseif($_POST['password'] == "")
{
exit("Je hebt geen password ingevuld");
}
elseif($_POST['password'] != $_POST['password2'])
{
exit("De wachtwoorden zijn niet gelijk");
}
elseif($_POST['username'] == $namen)
{
exit("Je username is niet toegelaten");
}
else
{
if (!@mysql_query("INSERT INTO
leden
(username,password,email,ip,aanmelddatum,level)
VALUES
('".addslashes($_POST['username'])."',
'".md5($_POST['password'])."',
'".addslashes($_POST['email'])."',
'".$_SESSION['REMOTE_ADDR']."',
'".time()."',
'1')
"))
{
exit("Kan niets in tabel zetten");
}
else
{
echo "Je registratie is voltooid.Je kan nu inloggen";
}
}
}
else {
//formulier
echo "<form action=\"\" method=\"post\">";
echo "Kies een gebruikersnaam:";
echo " <input name=\"username\"><br>";
echo "Kies een wachtwoord: ";
echo " <input name=\"password\" type=\"password\"><br>";
echo "Wachtwoord opnieuw: ";
echo " <input name=\"password2\" type=\"password\"><br>";
echo "Type een geldig e-mail adres in: ";
echo "<input name=\"email\"><br>";
echo "<input type=\"submit\" name=\"submit\" value=\"Registreer je!\">";
echo "</form>";
}
?>
<?php
include ( "config.php" ) ; //mysql connectie includen
$namen = array ( admin
, webmaster
, gast
, webmasters
) ;
if ( IsSet ( $_POST [ 'submit' ] ) ) {
if ( $_POST [ 'username' ] == "" )
{
exit ( "Je hebt geen username ingevuld" ) ; }
elseif ( $_POST [ 'password' ] == "" )
{
exit ( "Je hebt geen password ingevuld" ) ; }
elseif ( $_POST [ 'password' ] != $_POST [ 'password2' ] )
{
exit ( "De wachtwoorden zijn niet gelijk" ) ; }
elseif ( $_POST [ 'username' ] == $namen )
{
exit ( "Je username is niet toegelaten" ) ; }
else
{
leden
(username,password,email,ip,aanmelddatum,level)
VALUES
'" . md5 ( $_POST [ 'password' ] ) . "', '" . $_SESSION [ 'REMOTE_ADDR' ] . "',
'1')
" ) )
{
exit ( "Kan niets in tabel zetten" ) ; }
else
{
echo "Je registratie is voltooid.Je kan nu inloggen" ; }
}
}
else {
//formulier
echo "<form action=\" \" method=\" post\" >" ; echo "Kies een gebruikersnaam:" ; echo " <input name=\" username\" ><br>" ; echo "Kies een wachtwoord: " ; echo " <input name=\" password\" type=\" password\" ><br>" ; echo "Wachtwoord opnieuw: " ; echo " <input name=\" password2\" type=\" password\" ><br>" ; echo "Type een geldig e-mail adres in: " ; echo "<input name=\" email\" ><br>" ; echo "<input type=\" submit\" name=\" submit\" value=\" Registreer je!\" >" ;
}
?>
Veranderd
if structuur is het == om te vergelijken en niet = want dan wijst hij het toe
verder oude functienamen veranderd
rambo - 01/07/2006 11:23
HTML beginner
Ik denk niet dat dit script gaat werken marten, lees de reactie van lemoinet en mij eens en pas dat ook eens toe. Ik denk dat het dan al meer in de richting gaat komen.
Rens - 01/07/2006 11:44 (laatste wijziging 01/07/2006 11:48)
Crew algemeen
<?php
error_reporting(E_ALL);
include("config.php"); //mysql connectie includen
$namen = array("admin", "webmaster", "gast", "webmasters");
if (IsSet($_POST['submit']))
{
if(empty($_POST['username'])
{
exit("Je hebt geen username ingevuld");
}
elseif(empty*$_POST['password']))
{
exit("Je hebt geen password ingevuld");
}
elseif($_POST['password'] != $_POST['password2'])
{
exit("De wachtwoorden zijn niet gelijk");
}
elseif(In_Array($_POST['username'], $namen))
{
exit("Je username is niet toegelaten");
}
else
{
if (!@mysql_query("INSERT INTO
leden
(username,password,email,ip,aanmelddatum,level)
VALUES
('".addslashes($_POST['username'])."',
'".md5($_POST['password'])."',
'".addslashes($_POST['email'])."',
'".$_SERVER['REMOTE_ADDR']."',
'".time()."',
'1')
"))
{
exit("Kan niets in tabel zetten.<br />".MySQL_Error());
}
else
{
echo "Je registratie is voltooid.Je kan nu inloggen";
}
}
}
else {
?>
<form action="<?=$_SERVER['REQUEST_URI'];?>" method="post">
Kies een gebruikersnaam:
<input name="username"><br>
Kies een wachtwoord:
<input name="password" type="password"><br>
Wachtwoord opnieuw:
<input name="password2" type="password"><br>
Type een geldig e-mail adres in:
<input name="email"><br>
<input type="submit" name="submit" value="Registreer je!">
</form>
<?PHP
}
?>
<?php
include ( "config.php" ) ; //mysql connectie includen
$namen = array ( "admin" , "webmaster" , "gast" , "webmasters" ) ;
if ( IsSet ( $_POST [ 'submit' ] ) ) {
if ( empty ( $_POST [ 'username' ] ) {
exit ( "Je hebt geen username ingevuld" ) ; }
elseif ( empty * $_POST [ 'password' ] ) ) {
exit ( "Je hebt geen password ingevuld" ) ; }
elseif ( $_POST [ 'password' ] != $_POST [ 'password2' ] )
{
exit ( "De wachtwoorden zijn niet gelijk" ) ; }
elseif ( In_Array ( $_POST [ 'username' ] , $namen ) ) {
exit ( "Je username is niet toegelaten" ) ; }
else
{
leden
(username,password,email,ip,aanmelddatum,level)
VALUES
'" . md5 ( $_POST [ 'password' ] ) . "', '" . $_SERVER [ 'REMOTE_ADDR' ] . "',
'1')
" ) )
{
}
else
{
echo "Je registratie is voltooid.Je kan nu inloggen" ; }
}
}
else {
?>
<form action="<?= $_SERVER [ 'REQUEST_URI' ] ; ?> " method="post">
Kies een gebruikersnaam:
<input name="username"><br>
Kies een wachtwoord:
<input name="password" type="password"><br>
Wachtwoord opnieuw:
<input name="password2" type="password"><br>
Type een geldig e-mail adres in:
<input name="email"><br>
<input type="submit" name="submit" value="Registreer je!">
</form>
<?PHP
}
?>
Wat er veranderd is:
regel 5:
quotes om de waardes in de array
regel 7:
$HTTP_POST_VARS ==> $_POST
regel 9:
$HTTP_POST_VARS ==> $_POST
$_POST[''] == "" ==> empty($_POST[''])
regel 13:
$HTTP_POST_VARS ==> $_POST
$_POST[''] == "" ==> empty($_POST[''])
regel 17:
$HTTP_POST_VARS ==> $_POST
regel 21:
$_POST['username'] == $namen ==> In_Array($_POST['username'], $namen)
regel 34:
$_SESSION['REMOTE_ADDR'] ==> $_SERVER['REMOTE_ADDR']
regel 39:
Error handling bij MySQL, anders is dat je volgende vraag misschien omdat je query niet werkt.
regel 48 t/m regel 60:
HTML buiten PHP
Kijk er naar, vergelijk het met je oude script en kopieer/plak het niet zomaar.
finduilas - 01/07/2006 11:58 (laatste wijziging 01/07/2006 12:01)
PHP gevorderde
Ben ik aan het doen rensjuh.
Alleen snap ik niet echt die $_session => $server.Maar zal eens opzoeken.Trouwens ik gebruikte die $_session niet.Ik had .$HTTP_SERVER_VARS['REMOTE_ADDR'].
finduilas - 01/07/2006 12:02
PHP gevorderde
Nochtans kreeg ik met .$HTTP_SERVER_VARS['REMOTE_ADDR']. mijn ip in de database hoor.Maar ik zal het veranderen.
finduilas - 01/07/2006 12:07 (laatste wijziging 01/07/2006 15:19)
PHP gevorderde
Het is marten die het veranderde
Lijn 34 van mijn script.
EDIT:
$varusername = '$_POST[username]';
$username = mysql_query("SELECT username FROM leden WHERE username='$varusername'") or die (mysql_error());
$countusername=mysql_num_rows($username);
$varemail = '$_POST[email]';
$email = mysql_query("SELECT email FROM leden WHERE email='$varemail'") or die (mysql_error());
$countemail = mysql_num_rows($email);
$varusername = '$_POST[username]' ;
$varemail = '$_POST[email]' ;
elseif($countusername > 0)
{
exit("Deze username is al in gebruikt");
}
elseif($countemail > 0)
{
exit("Met dit emailadres is er al een account geregistreerd!");
}
elseif ( $countusername > 0 )
{
exit ( "Deze username is al in gebruikt" ) ; }
elseif ( $countemail > 0 )
{
exit ( "Met dit emailadres is er al een account geregistreerd!" ) ; }
Dit werkt niet echt.Waarschijnlijk is username='$varusername' verkeerd.Maar als ik daar $_POST['username'] plaats krijg ik notices.
edit: Het is opgelost.Maar nu zit ik met een ander probleem.
error_reporting(E_ALL);
include("config.php"); //mysql connectie includen
if (!is_logged_in())
{
echo "Je bent niet ingelogd.";
}
$query = mysql_query("SELECT level FROM leden WHERE username='$HTTP_SESSION_VARS[username]'");
while ($obj = mysql_fetch_object($query)) {
elseif ($obj->level != 5)
{
echo "Je hebt de adminrechten niet.";
}
else {
echo "Je bent admin! Welkom ".$HTTP_SESSION_VARS['username']."";
}
?>
include ( "config.php" ) ; //mysql connectie includen
if ( ! is_logged_in( ) )
{
echo "Je bent niet ingelogd." ; }
$query = mysql_query ( "SELECT level FROM leden WHERE username='$HTTP_SESSION_VARS[username] '" ) ; elseif ( $obj -> level != 5 )
{
echo "Je hebt de adminrechten niet." ; }
else {
echo "Je bent admin! Welkom " . $HTTP_SESSION_VARS [ 'username' ] . "" ; }
?>
Ik wil dus kijken of hij level 5 heeft of niet.Maar volgens mij moet het anders.(Dit werkt ook niet.)
[B]Edit2:[/B]
Hoe bedoel je rensjuh?
Voldemort - 01/07/2006 15:43
PHP ver gevorderde
Verander als dit $HTTP_SESSION_VARS naar $_SESSION, hetzelfde voor POST, GET, COOKIE, SERVER en als er nog zijn, die ook.
Verder haal je je variablen best ook buiten de quotes.
En een elseif volgt meteen na een if, dus ertussen kan je niet zomaar code zetten. Je zal het dus anders moeten oplossen:
if (!is_logged_in())
{
echo "Je bent niet ingelogd.";
}
else
{
$query = mysql_query("SELECT level FROM leden WHERE username='".$_SESSION['username']."'");
while ($obj = mysql_fetch_object($query)) {
if ($obj->level != 5)
{
echo "Je hebt de adminrechten niet.";
}
else {
echo "Je bent admin! Welkom ".$_SESSION['username']."";
}
}
if ( ! is_logged_in( ) )
{
echo "Je bent niet ingelogd." ; }
else
{
$query = mysql_query ( "SELECT level FROM leden WHERE username='" . $_SESSION [ 'username' ] . "'" ) ; if ( $obj -> level != 5 )
{
echo "Je hebt de adminrechten niet." ; }
else {
echo "Je bent admin! Welkom " . $_SESSION [ 'username' ] . "" ; }
}
En dit: $_SESSION[username] ==> $_SESSION['username']
(Sla alle tips qua code verbetering op zodat je ze later niet meer tegen komt)
finduilas - 01/07/2006 15:50 (laatste wijziging 01/07/2006 15:58)
PHP gevorderde
Heb ik al gedaan.En errors die ik tegenkom ook .
<?php
error_reporting(E_ALL);
include("config.php"); //mysql connectie includen
if (!is_logged_in())
{
echo "Je bent niet ingelogd.";
}
else
{
$query = mysql_query("SELECT level FROM leden WHERE username='".$_SESSION['username']."'");
while ($obj = mysql_fetch_object($query))
{
if ($obj->level != 5)
{
echo "Je hebt de adminrechten niet.";
}
else
{
echo "Je bent admin! Welkom ".$_SESSION['username']."";
}
}
}
?>
<?php
include ( "config.php" ) ; //mysql connectie includen
if ( ! is_logged_in( ) )
{
echo "Je bent niet ingelogd." ; }
else
{
$query = mysql_query ( "SELECT level FROM leden WHERE username='" . $_SESSION [ 'username' ] . "'" ) ; {
if ( $obj -> level != 5 )
{
echo "Je hebt de adminrechten niet." ; }
else
{
echo "Je bent admin! Welkom " . $_SESSION [ 'username' ] . "" ; }
}
}
?>
Dit werkt .
Voldemort - 01/07/2006 15:57 (laatste wijziging 01/07/2006 16:00)
PHP ver gevorderde
Errors? Je bedoelt dat level 5 dat niet goed checkt?
if (!is_logged_in())
{
echo "Je bent niet ingelogd.";
}
else
{
$query = mysql_query("SELECT level FROM leden WHERE username='".$_SESSION['username']."'");
while ($obj = mysql_fetch_object($query)) {
if ($obj->level != 5)
{
echo "Je hebt de adminrechten niet.";
}
else {
echo "Je bent admin! Welkom ".$_SESSION['username'];
}
}
}
if ( ! is_logged_in( ) )
{
echo "Je bent niet ingelogd." ; }
else
{
$query = mysql_query ( "SELECT level FROM leden WHERE username='" . $_SESSION [ 'username' ] . "'" ) ; if ( $obj -> level != 5 )
{
echo "Je hebt de adminrechten niet." ; }
else {
echo "Je bent admin! Welkom " . $_SESSION [ 'username' ] ; }
}
}
(had een foutje met quotes (.""; moest ; worden) en een } vergeten)
Misschien is er een fout bij:
- Sessions aanmaak (session_start() vergeten, variablen die daar niet goed zijn gedaan, de sessie bevat geen waarde, ...)
- Zet het database veldtype eens naar TINYINT (en als je hoger dan 127 wil gaan moet je maar INT gebruiken). Dit klinkt misschien dom, maar toen ik rekenkundige bewerkingen wou doen met VARCHAR ipv INT kreeg ik serieuze rekenfouten, ik vond geen fouten in m'n script, en dan bleek het dat veld te zijn, dus dit is toch vrij belangrijk in sommige gevallen.
- Je hebt gewoon geen level 5 en het script is juist.
Edit: Fijn dat het werkt, maar lees toch nog eens even mijn bemerkingen .
Gesponsorde links
Dit onderwerp is gesloten .