Verificatie script
Arno van Zanten op 28/02/2023 09:33:06:
start.php bevat een andere pagina.
Dat is de 18plus pagina
Dat is de 18plus pagina
Maar die voeg je dan alleen toe wanneer de controle is gedaan, na een refresh kom je daar niet meer. Denk dat de opbouw van je script niet helemaal klopt.
Index -> Check op sessie -> Zo niet -> Stuur door naar formulier -> Formulier juist ingevuld -> Set sessie -> Ga terug naar index.
In dat geval kan je de controle op 18+ ook daar al uitvoeren (met uitsluiten van je verificatie-pagina). Anders moet je dat op elke pagina doen. Het liefst wil je voor elke site één voordeurtje hebben waardoor iemand naar binnen komt, en dat is dan de index.php.
Met Michael's flow en met deze tip heb je een logische website voor elkaar.
Gewijzigd op 28/02/2023 10:12:31 door - Ariën -
- Ariën - op 28/02/2023 09:38:38:
Oke. Hoe wil je eigenlijk die headers op lijn 39 en 42 uitvoeren terwijl je daarvoor al HTML hebt staan?
lijn 39 is een include, geen header
Gewijzigd op 28/02/2023 10:35:05 door - Ariën -
- Ariën - op 28/02/2023 10:34:42:
42 dan
die zit in een functie
Arno van Zanten op 28/02/2023 10:35:19:
die zit in een functie
- Ariën - op 28/02/2023 10:34:42:
42 dan
die zit in een functie
Nee. Of jij moet andere gedachten hebben over een functie in PHP :-P
Of je hebt inmiddels flink staan breken in je code dat je die nu wel gemaakt hebt.
Gewijzigd op 28/02/2023 10:37:31 door - Ariën -
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
if(isset($_POST['verify']))
{
$day = $_POST['day'];
$month = $_POST['month'];
$year = $_POST['year'];
$birthday = mktime(0,0,0,$month,$day,$year);
$difference = time() - $birthday;
$age = floor($difference / 31556926);
if($age >= 18)
{
$_SESSION['over18'] = 1;
include('inc/start.php');
}else{
$_SESSION['under18'] = 0;
header('location: https://www.disney.com/');
}
} else {
*/ some form /*
}
?>
if(isset($_POST['verify']))
{
$day = $_POST['day'];
$month = $_POST['month'];
$year = $_POST['year'];
$birthday = mktime(0,0,0,$month,$day,$year);
$difference = time() - $birthday;
$age = floor($difference / 31556926);
if($age >= 18)
{
$_SESSION['over18'] = 1;
include('inc/start.php');
}else{
$_SESSION['under18'] = 0;
header('location: https://www.disney.com/');
}
} else {
*/ some form /*
}
?>
alles wat tussen { script / functie } in zit, valt toch in een functie of script?
Daarnaast zou ik ook nog controleren of de ingevoerde datum geldig is en een header gebruiken ipv een include aangezien je anders in de POST blijft hangen (refresh maar eens, dan wil de browser opnieuw posten). Ook heb je 'under18' niet nodig aangezien je 'over18' gewoon als True (1) of False (0) zet. Dan krijg je dus iets als
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
40
41
42
43
44
45
46
47
48
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
40
41
42
43
44
45
46
47
48
<?php
// Check of er gepost is
if($_SERVER['REQUEST_METHOD'] === 'POST') {
// Set sessie op False
$_SESSION['over18'] = False;
// Check of de variabelen die we willen aanwezig zijn.
if(isset($_POST['year'], $_POST['month'], $_POST['day'])) {
// Check of de ingevoerde data een geldige datum is
if(checkdate($_POST['month'], $_POST['day'], $_POST['year'])) {
// Bereken leeftijd
$birthday = new DateTime($_POST['year'] . '-' . $_POST['month'] . '-' . $_POST['day']);
$today = new DateTime('today');
$age = $birthday->diff($today)->y;
// Set session
if($age >= 18) {
$_SESSION['over18'] = True;
header('location: inc/start.php');
} else {
header('location: https://www.disney.com/');
}
} else {
header('location: ' . $_SERVER['SCRIPT_NAME'] . '?error');
}
} else {
header('location: ' . $_SERVER['SCRIPT_NAME'] . '?error');
}
}
if(isset($_GET['error'])) {
echo '<p>Birthday is invalid.</p>';
}
?>
<div class='text-user'>Insert your birthday to verify</div>
<div class='container'>
<form id='contact' method='POST'>
<fieldset>
<input placeholder='Day' type='number' name='day' tabindex='1' autofocus>
<input placeholder='Month' type='number' name='month' tabindex='1' autofocus>
<input placeholder='Year' type='number' name='year' tabindex='1' autofocus>
</fieldset>
<button name='verify' type='submit' id='contact-submit' data-submit='...Sending'>Verify</button>
</form>
</div>
<div class='text-user'>Under construction, not all working yet</div>
// Check of er gepost is
if($_SERVER['REQUEST_METHOD'] === 'POST') {
// Set sessie op False
$_SESSION['over18'] = False;
// Check of de variabelen die we willen aanwezig zijn.
if(isset($_POST['year'], $_POST['month'], $_POST['day'])) {
// Check of de ingevoerde data een geldige datum is
if(checkdate($_POST['month'], $_POST['day'], $_POST['year'])) {
// Bereken leeftijd
$birthday = new DateTime($_POST['year'] . '-' . $_POST['month'] . '-' . $_POST['day']);
$today = new DateTime('today');
$age = $birthday->diff($today)->y;
// Set session
if($age >= 18) {
$_SESSION['over18'] = True;
header('location: inc/start.php');
} else {
header('location: https://www.disney.com/');
}
} else {
header('location: ' . $_SERVER['SCRIPT_NAME'] . '?error');
}
} else {
header('location: ' . $_SERVER['SCRIPT_NAME'] . '?error');
}
}
if(isset($_GET['error'])) {
echo '<p>Birthday is invalid.</p>';
}
?>
<div class='text-user'>Insert your birthday to verify</div>
<div class='container'>
<form id='contact' method='POST'>
<fieldset>
<input placeholder='Day' type='number' name='day' tabindex='1' autofocus>
<input placeholder='Month' type='number' name='month' tabindex='1' autofocus>
<input placeholder='Year' type='number' name='year' tabindex='1' autofocus>
</fieldset>
<button name='verify' type='submit' id='contact-submit' data-submit='...Sending'>Verify</button>
</form>
</div>
<div class='text-user'>Under construction, not all working yet</div>
Gewijzigd op 28/02/2023 10:51:28 door Michael -
Michael - op 28/02/2023 10:48:29:
Maar we hadden al aangegeven dat je beter REQUEST_METHOD kunt gebruiken ipv isset() en een makkelijkere manier voor de leeftijd. Ik zie dat je deze adviezen niet toevoegt.
Daarnaast zou ik ook nog controleren of de ingevoerde datum geldig is en een header gebruiken ipv een include aangezien je anders in de POST blijft hangen (refresh maar eens, dan wil de browser opnieuw posten). Ook heb je 'under18' niet nodig aangezien je 'over18' gewoon als True (1) of False (0) zet. Dan krijg je dus iets als....
Daarnaast zou ik ook nog controleren of de ingevoerde datum geldig is en een header gebruiken ipv een include aangezien je anders in de POST blijft hangen (refresh maar eens, dan wil de browser opnieuw posten). Ook heb je 'under18' niet nodig aangezien je 'over18' gewoon als True (1) of False (0) zet. Dan krijg je dus iets als....
Heel erg aardig van je kerel, ik begrijp je heel goed.
Maar ik probeer, dat wat ik heb overgenomen van een user op YT, te begrijpen.
Ja het is een verouderede code en ik ben nog niet zo ver als jullie met de PHP structuur code. Ik ben eigenlijk 8 jaar geleden gestopt met scripten, wegens verandering van baan en leef situatie.
Ik heb het weer pas recentelijk op gepakt en er is veel bij gekomen in de tijd dat ik gestopt was. Veel puzzel werk en veel uitzoeken.
HTML echter blijft grotendeels het zelfde, daar verander eigenlijk weinig of niks in.
PHP veranderd en vernieuwd bijna elke dag wel iets en daar zit het bij mij.
Ik zit nog met oude code te scripten en niet alles werkt meer zoals eerst en dus moet ik uitzoeken wat wel en niet werkt en proberen de nieuwere versie van PHP te begrijpen.
Dus heel erg aardig en ik begrijp jullie goede bedoelingen ook.
Ik probeer eerst altijd mijn code zover te begrijpen en te verbeteren, maar dat vergt voor mij tijd en energie ;)
Gewijzigd op 28/02/2023 11:27:28 door - Ariën -
Gewijzigd op 28/02/2023 11:34:43 door - Ariën -
Qua versie maakt het niks uit. De basis PHP wat je tot nu toe gebruikt is zo goed als gelijk in PHP4 als in PHP8.
- Ariën - op 28/02/2023 11:32:44:
Welk filmpje is dat dan op YouTube? Ik vrees eerlijk gezegd dat het geen goed voorbeeld is, als je netjes wilt programmeren. Ik heb wel vaker wat YouTube tutorials gezien, maar vaak was het niet de juiste en nette manier qua opzet van de code.
https://www.phphulp.nl/php/forum/topic/verificatie-script/104640/2/#759068
Toevoeging op 28/02/2023 13:06:08:
Daarin staat onder de link
Dan heb je het dus over PHP 5.3 maximaal. PHP 5.4 kwam eind 2011 uit.
En de maker zal zijn kennis op een oudere versie van PHP baseren.
Wat qua redirects mee kan spelen: velen vinden het wel een handige setting om standaard een outputbuffer aan te zetten. Daarbij mag je dan eerst 4 MB aan data outputten, voor het ook werkelijk naar buiten gaat.
Tot die tijd kun je dan dus alsnog een extra header sturen.
Leuk debuggen: waarom werkt mijn script voor Jan die op Plein 1 woont wel, maar voor Hendrik-Jan met Lange Achternaam op de Hele Lange Straatnaam 1111 niet. (omdat Jan niet onder de buffer blijft)
Kortom:
Leuk zo'n tutorial, maar dat is ongeveer als Nederlands leren mbv een boek uit 1906: Er zijn eenige zaaken eenigzins veranderd aan den Nederlandsche taal en evenzeer aan het programmeeren met PHP.
Ivo P op 28/02/2023 13:33:18:
Die tutorial op Youtube is dus 11 jaar oud.
Dan heb je het dus over PHP 5.3 maximaal. PHP 5.4 kwam eind 2011 uit.
En de maker zal zijn kennis op een oudere versie van PHP baseren.
Wat qua redirects mee kan spelen: velen vinden het wel een handige setting om standaard een outputbuffer aan te zetten. Daarbij mag je dan eerst 4 MB aan data outputten, voor het ook werkelijk naar buiten gaat.
Tot die tijd kun je dan dus alsnog een extra header sturen.
Leuk debuggen: waarom werkt mijn script voor Jan die op Plein 1 woont wel, maar voor Hendrik-Jan met Lange Achternaam op de Hele Lange Straatnaam 1111 niet. (omdat Jan niet onder de buffer blijft)
Kortom:
Leuk zo'n tutorial, maar dat is ongeveer als Nederlands leren mbv een boek uit 1906: Er zijn eenige zaaken eenigzins veranderd aan den Nederlandsche taal en evenzeer aan het programmeeren met PHP.
Dan heb je het dus over PHP 5.3 maximaal. PHP 5.4 kwam eind 2011 uit.
En de maker zal zijn kennis op een oudere versie van PHP baseren.
Wat qua redirects mee kan spelen: velen vinden het wel een handige setting om standaard een outputbuffer aan te zetten. Daarbij mag je dan eerst 4 MB aan data outputten, voor het ook werkelijk naar buiten gaat.
Tot die tijd kun je dan dus alsnog een extra header sturen.
Leuk debuggen: waarom werkt mijn script voor Jan die op Plein 1 woont wel, maar voor Hendrik-Jan met Lange Achternaam op de Hele Lange Straatnaam 1111 niet. (omdat Jan niet onder de buffer blijft)
Kortom:
Leuk zo'n tutorial, maar dat is ongeveer als Nederlands leren mbv een boek uit 1906: Er zijn eenige zaaken eenigzins veranderd aan den Nederlandsche taal en evenzeer aan het programmeeren met PHP.
Dat is wat ik ook aangaf, ik ben al 8 jaar niet meer bezig geweest met scripten in PHP.
En ja er veranderd dagelijks wel iets in PHP.
Daar ben ik ook van bewust, dus daarom probeer ik het wel te begrijpen, maar voor mij gaat dat niet zo snel als bij jullie, ben ook weer wat ouder geworden in 8 jaar ;)
https://www.phptutorial.net/.
Er staan ook goede tips op, en leuke 'snippets'.
Een goede site die lekker actuele is, is deze: Er staan ook goede tips op, en leuke 'snippets'.
Quote:
ik ben al 8 jaar niet meer bezig geweest met scripten in PHP
8 jaar niet meer bezig geweest met PHP?
Vorig jaar toch 11 keer een topic geplaatst in dit forum
https://www.phphulp.nl/profiel/arno-van-zanten/38434/
Ja klopt maar ik ben wel al een tijdje eruit geweest