mkdir
PHP kent een functie om mappen te maken: mkdir ().
Laten we zeggen dat je een uploadfunctie programmeert en dat
je tijdens het uploaden ook nieuwe mappen wilt kunnen maken.
Wil je bestanden naar zo'n nieuwe map kunnen uploaden, dan
moeten de rechten op 777 staan (misschien werken andere
waarden ook wel). Het lijkt er op dat dat via mkdir () kan. Je
kunt als tweede argument de rechten meegeven:
Mij is het echter op die manier nog nooit gelukt!
Laatst kwam ik een handige functie tegen om mappen te maken
via FTP. Je kunt dan de rechten wél op 777 zetten, zodat je daarna
bestanden naar die map kunt uploaden.
Gesponsorde koppelingen
PHP script bestanden
30 reacties op 'mkdir'
Gesponsorde koppelingen
Ik zou de echo's ook uit de functie halen en return $dir veranderen in return true.
Dan kan de scripter zelf bepalen wat er verder moet gebeuren d.m.v.:
if(my_ftp_mkdir ('www/images/upload/', 'nieuwe_map')) {
echo "Okee..."; enz... b.v. alles gegevens in de database zetten.
} else {
echo "Mijn eigen foutmelding"; enz.....
}
Rest van het script.
Mooie functie trouwens.
Edit: Ik heb het omgedraaid
Dan kan de scripter zelf bepalen wat er verder moet gebeuren d.m.v.:
if(my_ftp_mkdir ('www/images/upload/', 'nieuwe_map')) {
echo "Okee..."; enz... b.v. alles gegevens in de database zetten.
} else {
echo "Mijn eigen foutmelding"; enz.....
}
Rest van het script.
Mooie functie trouwens.
Edit: Ik heb het omgedraaid
zo blijft de connectie eeuwig open, daarbij een return false kapt de functie af dus dan is een else al zinloos. Ik zou gaan voor dit:
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
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
<?php
function my_ftp_mkdir ($path, $dir) {
$server = 'ftp.jouwserver.nl'; // het adres van je ftp server
$connection = ftp_connect ($server); // connect naar de ftp server
// inloggen op de ftp server
$user = "ftp_user";
$pass = "ftp_pass";
$result = ftp_login ($connection, $user, $pass);
if ((!$connection) || (!$result)) {
return false;
}
// ga naar de dir die als argument aan de functie is meegegeven
@ftp_chdir ($connection, $path);
// nu de map maken en de rechten goed zetten
if (!@ftp_mkdir($connection, $dir)) {
return false;
}
$chmod_cmd = "CHMOD 0777 " . $dir;
$chmod = ftp_site($connection, $chmod_cmd);
ftp_close($connection); // ftp verbinding verbreken
return true;
}
?>
function my_ftp_mkdir ($path, $dir) {
$server = 'ftp.jouwserver.nl'; // het adres van je ftp server
$connection = ftp_connect ($server); // connect naar de ftp server
// inloggen op de ftp server
$user = "ftp_user";
$pass = "ftp_pass";
$result = ftp_login ($connection, $user, $pass);
if ((!$connection) || (!$result)) {
return false;
}
// ga naar de dir die als argument aan de functie is meegegeven
@ftp_chdir ($connection, $path);
// nu de map maken en de rechten goed zetten
if (!@ftp_mkdir($connection, $dir)) {
return false;
}
$chmod_cmd = "CHMOD 0777 " . $dir;
$chmod = ftp_site($connection, $chmod_cmd);
ftp_close($connection); // ftp verbinding verbreken
return true;
}
?>
@Legolas: Als je een connectie hebt en je dir maken mislukt blijft bij jou ook de connectie bestaan door dat je dan return geeft. Om de connectie dan alsnog te verbreken zal je dit moeten doen.
// nu de map maken en de rechten goed zetten
if (!@ftp_mkdir($connection, $dir)) {
ftp_close($connection); // ftp verbinding verbreken
return false;
}
// nu de map maken en de rechten goed zetten
if (!@ftp_mkdir($connection, $dir)) {
ftp_close($connection); // ftp verbinding verbreken
return false;
}
zo beter? :)
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
<?php
function my_ftp_mkdir ($path, $dir) {
$server = "ftp.server.com";
// connect naar de ftp server
$connection = ftp_connect ($server);
// inloggen op de ftp server
$user = "ftp_user";
$pass = "ftp_pass";
$result = ftp_login ($connection, $user, $pass);
if ((!$connection) || (!$result)) {
return false;
}
// ga naar de dir die als argument aan de functie is meegegeven
if (!@ftp_chdir ($connection, $path)) {
ftp_close($connection); // ftp verbinding verbreken
return false;
}
// nu de map maken en de rechten goed zetten
if (!@ftp_mkdir($connection, $dir)) {
ftp_close($connection); // ftp verbinding verbreken
return false;
}
$chmod_cmd = "CHMOD 0777 " . $dir;
$chmod = ftp_site($connection, $chmod_cmd);
ftp_close($connection); // ftp verbinding verbreken
return true;
}
?>
function my_ftp_mkdir ($path, $dir) {
$server = "ftp.server.com";
// connect naar de ftp server
$connection = ftp_connect ($server);
// inloggen op de ftp server
$user = "ftp_user";
$pass = "ftp_pass";
$result = ftp_login ($connection, $user, $pass);
if ((!$connection) || (!$result)) {
return false;
}
// ga naar de dir die als argument aan de functie is meegegeven
if (!@ftp_chdir ($connection, $path)) {
ftp_close($connection); // ftp verbinding verbreken
return false;
}
// nu de map maken en de rechten goed zetten
if (!@ftp_mkdir($connection, $dir)) {
ftp_close($connection); // ftp verbinding verbreken
return false;
}
$chmod_cmd = "CHMOD 0777 " . $dir;
$chmod = ftp_site($connection, $chmod_cmd);
ftp_close($connection); // ftp verbinding verbreken
return true;
}
?>
ik snap het niet kan iemand mij het uitleggen want ik zoek zo een script maar kwee nie hoe hem te gebruken ik wil dus een form waar je die kan maken want ik hbe een clan csm systeem en ik wil die hosten voor mense dus ik wil een script waarme je dus mappen kan maken + db + dat er in die mappen mijn script staat weet iemand hoe ik da doe grts TreX
Kunt u hier meer over vertellen ? a.u.b
Korte begrijpings uileg:)
Ik als lid wil inloggen op een site. En als ik logt maak je een map aan met deze script, als ik aangeeft ?toch . kan je dan ook gelijk aangeven dat de naam van de map. De nam van de lid is. En dat met zijn inlog gegevens van de/het lid kan inloggen?
Bedankt voor u aandacht,
groeten Yazir
Korte begrijpings uileg:)
Ik als lid wil inloggen op een site. En als ik logt maak je een map aan met deze script, als ik aangeeft ?toch . kan je dan ook gelijk aangeven dat de naam van de map. De nam van de lid is. En dat met zijn inlog gegevens van de/het lid kan inloggen?
Bedankt voor u aandacht,
groeten Yazir
Ik heb ook een tutorial over inlogscripts. Daar zou je even kunnen kijken. En nogmaals: ik zie de noodzaak niet om voor iedereen die inlogt een aparte map aan te maken.
Profielgegevens sla je gewoon op in je database. Bestanden uploaden kun je ook in je database bijhouden. Daar heb je geen mappen voor nodig.
groeten, Jan
Profielgegevens sla je gewoon op in je database. Bestanden uploaden kun je ook in je database bijhouden. Daar heb je geen mappen voor nodig.
groeten, Jan
Maar dan maak je ook geen map link aan voor de gebruiker
bv www.domein.nl/gebruiker
ftp.domein.nl/gebruiker
gebruiker
wachtwoord
bv www.domein.nl/gebruiker
ftp.domein.nl/gebruiker
gebruiker
wachtwoord
U snapt mij niet zo denk ik.:(
of ik begrijp het niet :)
In dit ledensysteem www.kacakhaci.com .Tijdens het registreren maakt het een dir aan. Zou elk lid ook een ftp account kunnen krijgen?
of ik begrijp het niet :)
In dit ledensysteem www.kacakhaci.com .Tijdens het registreren maakt het een dir aan. Zou elk lid ook een ftp account kunnen krijgen?
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<? include 'config.php'; ?>
<? include("opties.php"); ?>
<?php require_once('Connections/db_conn.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
$editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING'];
}
if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form1")) {
@mkdir("leden/$_GET[un]",0777);
@mkdir("ledenfotos/$_GET[un]",0755);
@copy("forward.php","leden/$_GET[un]/index.php");
$insertSQL = sprintf("INSERT INTO leden (gebruikersnaam, wachtwoord, echte_naam, geboorte_datum, geslacht, email, actief, datum) VALUES (%s, %s, %s, %s, %s, %s, 1, %s)",
GetSQLValueString($HTTP_POST_VARS['gebruikersnaam'], "text"),
GetSQLValueString($HTTP_POST_VARS['wachtwoord'], "text"),
GetSQLValueString($HTTP_POST_VARS['echte_naam'], "text"),
GetSQLValueString("$_POST[dag]-$_POST[maand]-$_POST[jaar]", "text"),
GetSQLValueString($HTTP_POST_VARS['geslacht'], "text"),
GetSQLValueString($HTTP_POST_VARS['email'], "text"),
GetSQLValueString(time(), "text"));
mysql_select_db($database_db_conn, $db_conn);
$Result1 = mysql_query($insertSQL, $db_conn) or die(mysql_error());
$insertGoTo = "bedankt.php?un=$_POST[gebruikersnaam]";
if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
mysql_select_db($database_db_conn, $db_conn);
$query_aanmelden = "SELECT * FROM paginas WHERE titel = 'aanmelden'";
$aanmelden = mysql_query($query_aanmelden, $db_conn) or die(mysql_error());
$row_aanmelden = mysql_fetch_assoc($aanmelden);
$totalRows_aanmelden = mysql_num_rows($aanmelden);
?>
<html><!-- InstanceBegin template="/Templates/standaard.dwt.php" codeOutsideHTMLIsLocked="false" -->
<head>
<title>TVW Profielen script versie <? echo "$versie"; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="themes/<? echo "$theme"; ?>/stijl.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<? include("themes/$theme/top.php"); ?>
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="148" height="100%" valign="top"><? include("themes/$theme/menu.php"); ?></td>
<td align="center" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="10"> </td>
<td width="625"> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td align="left" valign="top"><!-- InstanceBeginEditable name="inhoud" -->
<p><span class="tekst"><?php echo $row_aanmelden['tekst']; ?> </span></p>
<form action="<?php echo $editFormAction; ?>" method="post" name="form1" onSubmit="YY_checkform('form1','geslacht[0]','#q','2','Geslacht kiezen aub','gebruikersnaam','#q','0','Gebruikersnaam invoeren','echte_naam','#q','0','Echte naam invoeren','geboorte_datum','#^\([0-9][0-9]\)\/\([0-9][0-9]\)\/\([0-9]{4}\)$#1#2#3','3','Geboorte datum onjuist \(DD/MM/JJJJ\)','email','#S','2','Graag een juist e-mail adres invoeren','wachtwoord','#q','0','Graag een wachtwoord invoeren');return document.MM_returnValue">
<table align="center">
<tr valign="baseline" class="tekst">
<td align="right" nowrap>Gebruikersnaam:</td>
<td><input name="gebruikersnaam" type="hidden" class="formulier" value="<? echo "$_GET[un]"; ?>" size="32"><? echo "$_GET[un]"; ?></td>
</tr>
<tr valign="baseline" class="tekst">
<td align="right" nowrap>Wachtwoord:</td>
<td><input name="wachtwoord" type="password" class="formulier" value="" size="32"></td>
</tr>
<tr valign="baseline" class="tekst">
<td align="right" nowrap>Echte naam:</td>
<td><input name="echte_naam" type="text" class="formulier" value="" size="32"></td>
</tr>
<tr valign="baseline" class="tekst">
<td align="right" nowrap>Geboorte datum:<br> <span class="tekstuitleg">(dag-maand-jaar)
</span></td>
<td><input name="dag" type="text" class="formulier" id="dag" size="5">
<input name="maand" type="text" class="formulier" id="maand" size="5">
<input name="jaar" type="text" class="formulier" id="jaar" size="5">
<br> <span class="tekstuitleg">(01-12-2002) </span></td>
</tr>
<tr valign="baseline" class="tekst">
<td align="right" valign="top" nowrap>Geslacht:</td>
<td valign="baseline"> <input type="radio" name="geslacht" value="Man" >
Man
<input type="radio" name="geslacht" value="Vrouw" >
Vrouw</tr>
<tr valign="baseline" class="tekst">
<td align="right" nowrap>Email:</td>
<td><input name="email" type="text" class="formulier" value="" size="32"></td>
</tr>
<tr valign="baseline" class="tekst">
<td align="right" nowrap> </td>
<td><input type="submit" class="formulier" value="Aanmelden"></td>
</tr>
</table>
<p>
<input type="hidden" name="MM_insert" value="form1">
</p>
</form>
<!-- InstanceEndEditable --></td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
</body>
<!-- InstanceEnd --></html>
<?php
mysql_free_result($aanmelden);
?>
<? include("opties.php"); ?>
<?php require_once('Connections/db_conn.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
$editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING'];
}
if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form1")) {
@mkdir("leden/$_GET[un]",0777);
@mkdir("ledenfotos/$_GET[un]",0755);
@copy("forward.php","leden/$_GET[un]/index.php");
$insertSQL = sprintf("INSERT INTO leden (gebruikersnaam, wachtwoord, echte_naam, geboorte_datum, geslacht, email, actief, datum) VALUES (%s, %s, %s, %s, %s, %s, 1, %s)",
GetSQLValueString($HTTP_POST_VARS['gebruikersnaam'], "text"),
GetSQLValueString($HTTP_POST_VARS['wachtwoord'], "text"),
GetSQLValueString($HTTP_POST_VARS['echte_naam'], "text"),
GetSQLValueString("$_POST[dag]-$_POST[maand]-$_POST[jaar]", "text"),
GetSQLValueString($HTTP_POST_VARS['geslacht'], "text"),
GetSQLValueString($HTTP_POST_VARS['email'], "text"),
GetSQLValueString(time(), "text"));
mysql_select_db($database_db_conn, $db_conn);
$Result1 = mysql_query($insertSQL, $db_conn) or die(mysql_error());
$insertGoTo = "bedankt.php?un=$_POST[gebruikersnaam]";
if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
mysql_select_db($database_db_conn, $db_conn);
$query_aanmelden = "SELECT * FROM paginas WHERE titel = 'aanmelden'";
$aanmelden = mysql_query($query_aanmelden, $db_conn) or die(mysql_error());
$row_aanmelden = mysql_fetch_assoc($aanmelden);
$totalRows_aanmelden = mysql_num_rows($aanmelden);
?>
<html><!-- InstanceBegin template="/Templates/standaard.dwt.php" codeOutsideHTMLIsLocked="false" -->
<head>
<title>TVW Profielen script versie <? echo "$versie"; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="themes/<? echo "$theme"; ?>/stijl.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<? include("themes/$theme/top.php"); ?>
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="148" height="100%" valign="top"><? include("themes/$theme/menu.php"); ?></td>
<td align="center" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="10"> </td>
<td width="625"> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td align="left" valign="top"><!-- InstanceBeginEditable name="inhoud" -->
<p><span class="tekst"><?php echo $row_aanmelden['tekst']; ?> </span></p>
<form action="<?php echo $editFormAction; ?>" method="post" name="form1" onSubmit="YY_checkform('form1','geslacht[0]','#q','2','Geslacht kiezen aub','gebruikersnaam','#q','0','Gebruikersnaam invoeren','echte_naam','#q','0','Echte naam invoeren','geboorte_datum','#^\([0-9][0-9]\)\/\([0-9][0-9]\)\/\([0-9]{4}\)$#1#2#3','3','Geboorte datum onjuist \(DD/MM/JJJJ\)','email','#S','2','Graag een juist e-mail adres invoeren','wachtwoord','#q','0','Graag een wachtwoord invoeren');return document.MM_returnValue">
<table align="center">
<tr valign="baseline" class="tekst">
<td align="right" nowrap>Gebruikersnaam:</td>
<td><input name="gebruikersnaam" type="hidden" class="formulier" value="<? echo "$_GET[un]"; ?>" size="32"><? echo "$_GET[un]"; ?></td>
</tr>
<tr valign="baseline" class="tekst">
<td align="right" nowrap>Wachtwoord:</td>
<td><input name="wachtwoord" type="password" class="formulier" value="" size="32"></td>
</tr>
<tr valign="baseline" class="tekst">
<td align="right" nowrap>Echte naam:</td>
<td><input name="echte_naam" type="text" class="formulier" value="" size="32"></td>
</tr>
<tr valign="baseline" class="tekst">
<td align="right" nowrap>Geboorte datum:<br> <span class="tekstuitleg">(dag-maand-jaar)
</span></td>
<td><input name="dag" type="text" class="formulier" id="dag" size="5">
<input name="maand" type="text" class="formulier" id="maand" size="5">
<input name="jaar" type="text" class="formulier" id="jaar" size="5">
<br> <span class="tekstuitleg">(01-12-2002) </span></td>
</tr>
<tr valign="baseline" class="tekst">
<td align="right" valign="top" nowrap>Geslacht:</td>
<td valign="baseline"> <input type="radio" name="geslacht" value="Man" >
Man
<input type="radio" name="geslacht" value="Vrouw" >
Vrouw</tr>
<tr valign="baseline" class="tekst">
<td align="right" nowrap>Email:</td>
<td><input name="email" type="text" class="formulier" value="" size="32"></td>
</tr>
<tr valign="baseline" class="tekst">
<td align="right" nowrap> </td>
<td><input type="submit" class="formulier" value="Aanmelden"></td>
</tr>
</table>
<p>
<input type="hidden" name="MM_insert" value="form1">
</p>
</form>
<!-- InstanceEndEditable --></td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
</body>
<!-- InstanceEnd --></html>
<?php
mysql_free_result($aanmelden);
?>
Ik heb geen ervaringen met het aanmaken van FTP accounts, maar misschien kunnen andere forumleden je daarbij helpen. Als bij elke FTP account een eigen map hoort, kun je zeker mijn functie daarvoor gebruiken.
Overigens is je voorbeeldscript in een stijl geschreven die op zijn zachtst gezegd "ouderwets" te noemen is ;-)
Overigens is je voorbeeldscript in een stijl geschreven die op zijn zachtst gezegd "ouderwets" te noemen is ;-)
Om te reageren heb je een account nodig en je moet ingelogd zijn.
- Details
Door:
Jan Koehoorn- 8 jaar geleden
- 1.465 x bekeken
- Labels
- Geen tags toegevoegd.
- PHP scripts opties
- Overig
- Nieuwste PHP scripts
- PHP script toevoegen


PHP hulp
0 seconden vanaf nu