Ik zit met het idee om elke dag een rapportje over mijn site naar mijn e-mail adress te sturen. In dit rapportje staat o.a. hoeveel mensen er zich op die dag zijn geregistreerd en hoeveel bezoekers er zijn geweest. Later zal dit nog meer worden maar zou dit mogelijk zijn? Als ik de basis heb van hoe ik hieraan moet beginnen heb ik in principe genoeg.
Het probleem is dat het in PHP moet geschreven worden. Dit is een bijkomende opdracht voor school, dus niet verplicht. Maar ik zelf ben graag iemand die van uitdagingen houd en dus ook verder wil gaan. Ik heb hier en daar al iets opgevangen om met counters te werken die gemaakt zijn in PHP en de datum's bijhouden van de registratie van de gebruikers. Steeds op het einde van de dag zal dan alle mensen die die dag zijn geregistreerd verwerkt worden in een rapportje en worden verstuurd naar de e-mail. Zou dit een juiste methode zijn?
Je kunt hiervoor op het moment van registeren de datum/tijd van registratie meenemen in het aanmeken van het account. Voor iedere bezoeker op de site zal je de sessie moeten opslaan in de database ook weer met datum/tijd. Dan heb je de gegevens om je rapportje op te stellen en versturen.
Hoe moet ik dan de tijd/datum in de volgende code meesturen?
Moet dit als volgt? // Get values from form
$name=$_POST['name'];
$password=$_POST['password'];
$email=$_POST['email'];
$time=time()
// Insert data into mysql
$sql="INSERT INTO $tbl_name(gebruikersnaam, wachtwoord, email, tijd)VALUES('$name', '$password', '$email', '$time')";
<?php
$host="host"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name=""; // Table name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// Get values from form
$name=$_POST['name'];
$password=$_POST['password'];
$email=$_POST['email'];
// Insert data into mysql
$sql="INSERT INTO $tbl_name(gebruikersnaam, wachtwoord, email)VALUES('$name', '$password', '$email')";
$result=mysql_query($sql);
// if successfully insert data into database, displays message "Registratie voltooid!voltooid".
if($result){
echo "Registratie voltooid!";
echo "<BR>";
echo "<a href='main_login.php'>Terug naar beginpagina</a>";
}
Sterker nog, je zou het moeten gebruiken. Een datum hoor je als datum op te slaan en niet als getal. Een datumveld is ook veel makkelijker voor de rapportage.
Maar goed, ik denk dat de rapportage voor de TS nog net een brug te ver is, gezien de code die hij heeft geplaatst:
- variabelen binnen quotes;
- geen controle op geposte variabelen;
- onnodig kopieren van de $_POST-variabelen;
- SQL-injectie is mogelijk;
- wachtwoorden worden onversleuteld opgeslagen.
Eens, je zou MySQL-NOW() moeten gebruiken. Maar voor beginners moet je de keuze laten om er zelf achter te komen.
OFFTOPIC: Ik wil hiermee niet tegen de schenen schoppen, maar waar ik me over het algemeen het meest aan irriteer is PHP-code in HTML plaatsen, en met die PHP-code HTML genereren.