wachtwoorden vergelijken.
<input type="password" name="var_password"></input> <br>
<input type="password" name="var_confirmpassword"></input> <br>
dus je mag bijvoorbeeld alleen op de volgende knop drukken als ze het zelfde zijn. ik had al wel wat geprobeert maar ik merkte dat de variabelen (var_password en var_confirmpassword niet geupdate worden als je er wat intypt hoe kan ik er voor zorgen dat dat wel zo is?
want op het begin zijn ze beide leeg en dus het zelfde maar als ik bij 1 iets type blijven ze nog het zelfde volgens mijn if statement...
kan iemand een voorbeeldje maken waar je laat zien hoe je zoiets kunt vergelijken? ik werk nog maar 2 dagen met php dus stel hulp erg op prijs alvast bedankt!
Ruben,
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
<body topmargin="50" leftmargin="50">
<form method = "post" action="verwerkscript.php">
Fill in all information to rigister an account to play online.<br>
Naam:<br>
<input type="text" name="var_username"></input> <br>
Password: <br>
<input type="text" name="var_password"></input> <br>
Confirm Password: <br>
<input type="text" name="var_confirmpassword"></input> <br>
Email: <br>
<input type="text" name="var_email"></input> <br>
<input type ="submit" value="Register">
</form>
<form method = "post" action="ranklist.php">
<input type ="submit" value="Ranklist">
</form>
<form method = "post" action="Home.php">
<input type ="submit" value="Home">
</form>
[code]<?
include 'mysql2.php';
if($_POST['var_password'] == $_POST['var_confirmpassword'] && $_POST['var_password'] != "")
{
$var_passwordconfirmed = true;
echo "true";
}
else
{
$var_passwordconfirmed = false;
echo "false";
}
?>
</body>
</html>
?>
<body topmargin="50" leftmargin="50">
<form method = "post" action="verwerkscript.php">
Fill in all information to rigister an account to play online.<br>
Naam:<br>
<input type="text" name="var_username"></input> <br>
Password: <br>
<input type="text" name="var_password"></input> <br>
Confirm Password: <br>
<input type="text" name="var_confirmpassword"></input> <br>
Email: <br>
<input type="text" name="var_email"></input> <br>
<input type ="submit" value="Register">
</form>
<form method = "post" action="ranklist.php">
<input type ="submit" value="Ranklist">
</form>
<form method = "post" action="Home.php">
<input type ="submit" value="Home">
</form>
[code]<?
include 'mysql2.php';
if($_POST['var_password'] == $_POST['var_confirmpassword'] && $_POST['var_password'] != "")
{
$var_passwordconfirmed = true;
echo "true";
}
else
{
$var_passwordconfirmed = false;
echo "false";
}
?>
</body>
</html>
?>
Gewijzigd op 19/05/2011 16:37:39 door R Hietbrink
- Je moet altijd eerst kijken of het formulier verzonden is. Dit doe je met if($_SERVER['REQUEST_METHOD'] == 'POST')
- Om te kijken of iets leeg is kan je beter isset of empty gebruiken.
- Voor wachtwoorden kan je beter <input type="password" gebruiken.
- Doordat je een action hebt toegepast zal je meteen door worden verzonden naar verwerkscript.php en heeft de PHP code helemaal geen zin meer.
- Het is verstandig om de PHP code altijd boven het doctype te zetten en in de body alleen wat te echoen.
Daarnaast werkt het bij mij wel gewoon goed.
Gewijzigd op 19/05/2011 17:15:59 door Wouter J
dat type"password" had ik expres nog niet gedaan zodat ik kon zien wat ik typte en of ik het dus ook echt wel het zelfde had ;) maar is idd slim jah ;)
if($_SERVER['REQUEST_METHOD'] == 'POST')
dat moet voor die submit knop? zodat hij pas verder gaat als alles is verzonden bedoel je?
thanks
Code (php)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<body topmargin="50" leftmargin="50">
<form method = "post" action="">
Fill in all information to rigister an account to play online.<br>
Naam:<br>
<input type="text" name="var_username"></input> <br>
Password: <br>
<input type="text" name="var_password"></input> <br>
Confirm Password: <br>
<input type="text" name="var_confirmpassword"></input> <br>
Email: <br>
<input type="text" name="var_email"></input> <br>
<input type ="submit" value="Register">
</form>
<form method = "post" action="ranklist.php">
<input type ="submit" value="Ranklist">
</form>
<form method = "post" action="Home.php">
<input type ="submit" value="Home">
</form>
</body>
</html>
<form method = "post" action="">
Fill in all information to rigister an account to play online.<br>
Naam:<br>
<input type="text" name="var_username"></input> <br>
Password: <br>
<input type="text" name="var_password"></input> <br>
Confirm Password: <br>
<input type="text" name="var_confirmpassword"></input> <br>
Email: <br>
<input type="text" name="var_email"></input> <br>
<input type ="submit" value="Register">
</form>
<form method = "post" action="ranklist.php">
<input type ="submit" value="Ranklist">
</form>
<form method = "post" action="Home.php">
<input type ="submit" value="Home">
</form>
</body>
</html>
Gewijzigd op 19/05/2011 19:15:40 door PHP Scripter
Een HTML pagina is altijd opgebouwd uit een doctype, html tag, head en body.
De PHP code kan je het best voor het doctype te zetten.
Verder met die if is een PHP statement:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
$error = array();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{ # Als er post variabelen zijn verstuurd (method="post")
if(empty($_POST['naam']))
{ # Als $_POST['naam'] leeg (empty) is
$error[] = 'Je moet wel alles invullen';
}
if(empty($error))
{ # Als er geen errors zijn
// doe wat met het formulier
}
}
?>
<form method="post" action="#">
<input type="text" name="naam">
<input type="submit" value="verzenden">
</form>
<?php
if(!empty($error))
{ # als $error niet leeg(!empty) is
// Maak een div aan met daarin een list
echo '<div id="error"><ul>';
foreach($error as $e)
{ # voor elk element van $error
// Echo elke error in een list item
echo '<li>'.$e.'</li>';
}
// Sluit de div en de list
echo '</ul></div>';
}
?>
$error = array();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{ # Als er post variabelen zijn verstuurd (method="post")
if(empty($_POST['naam']))
{ # Als $_POST['naam'] leeg (empty) is
$error[] = 'Je moet wel alles invullen';
}
if(empty($error))
{ # Als er geen errors zijn
// doe wat met het formulier
}
}
?>
<form method="post" action="#">
<input type="text" name="naam">
<input type="submit" value="verzenden">
</form>
<?php
if(!empty($error))
{ # als $error niet leeg(!empty) is
// Maak een div aan met daarin een list
echo '<div id="error"><ul>';
foreach($error as $e)
{ # voor elk element van $error
// Echo elke error in een list item
echo '<li>'.$e.'</li>';
}
// Sluit de div en de list
echo '</ul></div>';
}
?>
bedankt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
$error = array();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{ # Als er post variabelen zijn verstuurd (method="post")
if(empty($_POST['naam']))
{ # Als $_POST['naam'] leeg (empty) is
$error[] = 'Je moet wel alles invullen';
}
if(empty($error))
{ # Als er geen errors zijn
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="nl">
<head>
<title>Formulier</title>
</head>
<body>
<form method="post" action="#">
<input type="text" name="naam">
<input type="submit" value="verzenden">
</form>
<?php
if(!empty($error))
{ # als $error niet leeg(!empty) is
echo '<div id="error"><ul>';
foreach($error as $e)
{ # voor elk element van $error
echo '<li>'.$e.'</li>';
}
echo '</ul></div>';
}
?>
</body>
</html>
$error = array();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{ # Als er post variabelen zijn verstuurd (method="post")
if(empty($_POST['naam']))
{ # Als $_POST['naam'] leeg (empty) is
$error[] = 'Je moet wel alles invullen';
}
if(empty($error))
{ # Als er geen errors zijn
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="nl">
<head>
<title>Formulier</title>
</head>
<body>
<form method="post" action="#">
<input type="text" name="naam">
<input type="submit" value="verzenden">
</form>
<?php
if(!empty($error))
{ # als $error niet leeg(!empty) is
echo '<div id="error"><ul>';
foreach($error as $e)
{ # voor elk element van $error
echo '<li>'.$e.'</li>';
}
echo '</ul></div>';
}
?>
</body>
</html>
Ruben Hietbrink op 19/05/2011 19:10:29:
je zegt php kan beste voor doctype maar jij hebt het voor en na de doctype dus zijn er uitzonderingen voor?
PHP voor je doctype is niet verplicht, maar het is wel verstandig om te doen. Als je iets wilt echoën moet je het wel in de body doen, als je dit boven je doctype doet komt er dus tekst voor het doctype op de pagina en dat mag niet. Vandaar dat ik boven het doctype de error in een variabele stop en die vervolgens in de body echo. Aangezien er meerdere fouten kunnen zijn is de echo in de body iets groter geworden, maar het is nog steeds geen verder afhandeling.
Waarom dit beter is?
Hiermee hou je PHP en HTML meer gescheiden wat het scripten altijd makkelijker maakt. En je ontwijkt daarmee fouten zoals header already sent.
Je moet er dan wel opletten dat je nooit een regel (tekst, o.i.d.) voor je doctype mag hebben. PHP wordt gemaakt op de server en zodra het naar je browser wordt verstuurd staat er dus geen PHP code meer in, dit mag dus wel.
Zodra er wel tekst voor je doctype staat is dit niet meer w3c valid en kan je vreemde dingen krijgen in Internet Explorer.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?
include 'mysql2.php';
if($_SERVER['REQUEST_METHOD'] == 'POST' AND $_POST['var_password'] == $_POST['var_confirmpassword'])
{
header("www.rubenhietbrink.com/loginscreen/verwerkscript.php");
}
else
{
echo "You didn't fill in the same password twice";
$_POST['var_password'] = "pp";
$_POST['var_confirmpassword'] = "kk";
}
?
<body topmargin="50" leftmargin="50">
<form method = "post" action="">
Fill in all information to rigister an account to play online.<br>
Naam:<br>
<input type="text" name="var_username"></input> <br>
Password: <br>
<input type="text" name="var_password"></input> <br>
Confirm Password: <br>
<input type="text" name="var_confirmpassword"></input> <br>
Email: <br>
<input type="text" name="var_email"></input> <br>
<input type ="submit" value="Register">
</form>
<form method = "post" action="ranklist.php">
<input type ="submit" value="Ranklist">
</form>
<form method = "post" action="home.php">
<input type ="submit" value="Home">
</form>
</body>
</html>
?>
include 'mysql2.php';
if($_SERVER['REQUEST_METHOD'] == 'POST' AND $_POST['var_password'] == $_POST['var_confirmpassword'])
{
header("www.rubenhietbrink.com/loginscreen/verwerkscript.php");
}
else
{
echo "You didn't fill in the same password twice";
$_POST['var_password'] = "pp";
$_POST['var_confirmpassword'] = "kk";
}
?
<body topmargin="50" leftmargin="50">
<form method = "post" action="">
Fill in all information to rigister an account to play online.<br>
Naam:<br>
<input type="text" name="var_username"></input> <br>
Password: <br>
<input type="text" name="var_password"></input> <br>
Confirm Password: <br>
<input type="text" name="var_confirmpassword"></input> <br>
Email: <br>
<input type="text" name="var_email"></input> <br>
<input type ="submit" value="Register">
</form>
<form method = "post" action="ranklist.php">
<input type ="submit" value="Ranklist">
</form>
<form method = "post" action="home.php">
<input type ="submit" value="Home">
</form>
</body>
</html>
?>
(onderste ?> is alleen zodat het als code word gezien)
maar de action = "" (leeg dus) dus hij word niet doorverzonden naar iets als ik op de knop druk maar hij refresh alles en gaat hierboven weer langs het probleem is alleen dat hij alle velden leeg maakt maar niet naar verwerkscript.php gaat terwijl ik wel alles heb ingevuld en wachtwoorden zelfde intypte.... snap dus niet waarom hij elke keer maar weer niks naar de server stuurt en weer op de zelfde pagina leeg aankomt..
Gewijzigd op 19/05/2011 19:20:55 door R Hietbrink
Ik heb het idee dat Ruben helemaal niks van je tekst leest, Wouter.
huh oh sorry dat stond er net nog niet ( mijn fout sorry als het onbeschoft over kwam heb ik echt niet gezien...) ik ga het nu lezen
Ruben Hietbrink op 19/05/2011 19:30:31:
huh oh sorry dat stond er net nog niet ( mijn fout sorry als het onbeschoft over kwam heb ik echt niet gezien...) ik ga het nu lezen
Ik begrijp het. Jou bericht is 1 min. na mijn bericht verstuurd dus bij het typen van je bericht kon je die van mij nog niet zien.
ik heb het overgenomen en wat geprobeerd met die error's werkt top snap nu dat je in the body je tekst moet maken en boven doctype de commands er voor geven alleen het werkt niet wanneer ik de gegevens dan wil gaan doorsturen...
the header moet dan toch boven het doctype? want het is geen echo? dus boven aan komt dan zoiets?
if(empty($error))
{ # Als er geen errors zijn
header ( "Location: http://www.website.com/loginscreen/verwerkscript.php" );
}
verwerkscript.php code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
include 'mysql2.php';
// html variabelen ophalen
$var_username = $_POST['naam'];
$var_password = $_POST['password1'];
$var_email = $_POST['var_email'];
// sql insert die je in de database gaat doen
$sql ="INSERT INTO people(username, password, email)
VALUES ('".$var_username."', '".$var_password."', '".$var_email."')";
//uitvoeren van de query :
if (!($temp = mysql_query($sql,$connection)))
showerror();
?>
include 'mysql2.php';
// html variabelen ophalen
$var_username = $_POST['naam'];
$var_password = $_POST['password1'];
$var_email = $_POST['var_email'];
// sql insert die je in de database gaat doen
$sql ="INSERT INTO people(username, password, email)
VALUES ('".$var_username."', '".$var_password."', '".$var_email."')";
//uitvoeren van de query :
if (!($temp = mysql_query($sql,$connection)))
showerror();
?>
maar als ik dan een lijst wil maken van alle toegevoegde namen krijg ik er geen bij alleen de dingen die ik al had staan van me oude script die ook niet echt werkt...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
include 'mysql2.php';
//Mysql DATA selecteren
$query="SELECT * FROM people ORDER BY id DESC";
if (!($temp = mysql_query($query,$connection)))
showerror();
//mysql data weergeven
while ($ranklist = mysql_fetch_array($temp))
{
echo"<hr>
<div>Rank : ".$ranklist ['rank']."</div>
<div>Player Nickname: <strong>".$ranklist ['username']."</strong></div>
<div>Experience : ".$ranklist ['xp']."</div>
<div>Kills : ".$ranklist ['kills']."</div>
<div>Deaths : ".$ranklist ['deaths']."</div>
<hr> ";
}
?>
include 'mysql2.php';
//Mysql DATA selecteren
$query="SELECT * FROM people ORDER BY id DESC";
if (!($temp = mysql_query($query,$connection)))
showerror();
//mysql data weergeven
while ($ranklist = mysql_fetch_array($temp))
{
echo"<hr>
<div>Rank : ".$ranklist ['rank']."</div>
<div>Player Nickname: <strong>".$ranklist ['username']."</strong></div>
<div>Experience : ".$ranklist ['xp']."</div>
<div>Kills : ".$ranklist ['kills']."</div>
<div>Deaths : ".$ranklist ['deaths']."</div>
<hr> ";
}
?>
volgens mij ben ik echt super dom bezig snap er niks van... javascript is tog iets meer mijn ding :P
Gewijzigd op 19/05/2011 20:13:29 door R Hietbrink
Quote:
the header moet dan toch boven het doctype? want het is geen echo? dus boven aan komt dan zoiets?
Headers zijn weer een ander verhaal. Dit is inderdaad een functie dus is makkelijk om boven je doctype te zetten. Maar het heeft nog een veel belangrijkere regel waarom deze altijd bovenaan staat. Zie daarvoor deze tut: http://www.phphulp.nl/php/tutorial/php-algemeen/header-already-sent/738/
Van de rest nog wat verbeterpunten van de code die je nu hebt gepost:
- SQL injection mogelijk. Hiertegen kan je mysql_real_escape_string gebruiken.
- Het kopiëren van variabelen (zoals op regel 4-6) is onnodig en kost alleen maar tijd.
- Bouw ook hier goede foutafhandeling in (dus kijken wat een functie teruggeeft, bijv. false => een fout of true/een waarde => gelukt).
- Kijk ook of de update query is gelukt met mysql_affected_rows
SCRIPT 2:
- * is niet goed om te gebruiken in MySQL. Selecteer welke velden je wilt( rank, username, xp, kills, deaths).
- mysql_fetch_array is onnodig en kost ook hier veel tijd. Gebruik mysql_fetch_assoc
- Bouw ook hier goede foutafhandeling in.
- Kijk ook of er wel iets is geselecteerd met mysql_nums_rows.
_VUL VARIABLEN IN
1. ik moet variablen intypen (naam en password (2x))
2. kijken of alles is ingevult en passwords gelijk zijn)
-> error : show errors tussen de body's
-> no error : stuur door naar volgende php bestand
_VERSTUUR VARIABLEN NAAR DATABASE
3. variablen niet eerst opslaan maar direct versturen
4. error laten weer geven
_OPHALEN VAN DATA UIT DATABASE
5. mysql fetch assoc gebruiken om data op tehalen
-------------------------------------------------------------
ik wou deze punten eerst is gaan voltooien is dat een goede werk richting of?
ik heb wel paar vragen hierover :
- bij punt 2 en dan pijl 2 als je geen error's hebt kan ik dus geen header gebruiken wat is dan wel een goede manier om in het 2e php bestand te komen maar dat hij wel alle variablen weet?
- bij punt 4 gewoon zelfde manier laten weergeven als bij punt 2? dus dat je het gewoon als een lijstje krijgt te zien? (heeft dat dan wel nut? want je blijft maar een millisec in dat bestand dus je ziet tog niks? of moet ik doen als hij geen connectie krijgt tot de database dat ie dan een error weergeeft en NIET verder mag naar het volgende bestand?
- hoe moet ik dat command gebruiken heb de docs doorgelezen maar begrijp het niet helemaal (al die woorden in engels door elkaar begrijp ik nog niet helemaal perfect) zou je in kort willen uitleggen wat het precies doet zodat ik weet hoe ik het moet toepassen?)
ik hoop dat ik er op vooruit ga en als je vind dat ik gewoon beter moet zoeken moet je het zeggen! ;) wil het alleen zo snel mogelijk leren allemaal :)
bedankt!
Gewijzigd op 19/05/2011 22:13:21 door gerhard l
Quote:
- bij punt 2 en dan pijl 2 als je geen error's hebt kan ik dus geen header gebruiken wat is dan wel een goede manier om in het 2e php bestand te komen maar dat hij wel alle variablen weet?
Ik zeg nergens dat je geen header moet gebruiken. Je kan header goed gebruiken, alleen niet met output ervoor (zie tut).
Verder kan je inderdaad wat gerhard zegt beter alles op dezelfde pagina afhandelen.
Quote:
- bij punt 4 gewoon zelfde manier laten weergeven als bij punt 2? dus dat je het gewoon als een lijstje krijgt te zien?
Inderdaad, gewoon weer een nieuwe item in $error stoppen door $error[] = 'foutmelding';
Quote:
- hoe moet ik dat command gebruiken heb de docs doorgelezen maar begrijp het niet helemaal (al die woorden in engels door elkaar begrijp ik nog niet helemaal perfect) zou je in kort willen uitleggen wat het precies doet zodat ik weet hoe ik het moet toepassen?)
Welk command?
Verder is php.net heel simpel opgedeeld, als je dat snapt hoef je bijna geen engels te kunnen:
Allereerst zie je de description. Hierin staat een beschrijving van de syntax, bijv.
Code (php)
1
string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )
Of te wel. Je roept de functie aan met mysql_real_escape_string. Hierin moet je een parameter hebben die een string bevat (de eerste). Daarna kan je eventueel (want staat tussen []) nog een parameter toevoegen met een resource.
Onder deze code zie je nog wat uitleg wat de functie doet.
Dan krijg je de Parameters. Hierin staat uitgebreid uitgelegd wat de parameters moeten bevatten. Hierin worden de namen gebruikt uit de functie daarboven.
Dan zie je Return Values. Hierin word uitgelegd wat de functie terug geeft.
En dan de Examples, dit zijn voorbeelden waarin je kan zien hoe het werkt.
Bij Notes zie je eventuele extra opmerkingen van de functie.
Verder is je code die je gebruikt niet heel erg slecht. Zodra je de punten die ik heb aangegeven verbeterd begint je code er al een stuk beter uit te zien. Een voorbeeld van een juiste MySQL verbinding met ophalen van data kan je hier vinden. Even voor de duidelijkheid dit doe je voor het doctype, alleen de echo's vervang je door de error methode die we hier gebruiken.