Cookie / SQL / PHP vraag
Ik heb een vraag over PHP, SQL en cookies.
Ik zou graag een registratieformulier willen maken waarbij een ID in een cookie wordt opgeslagen. Door middel van dit ID zou ik een gebruiker moeten kunnen herkennen en deze direct toegang moeten kunnen geven tot de voor hem / haar bestemde gebieden.
Ik heb een script die ik niet kan draaien, omdat er fouten inzitten.
Script (tussen de strepen):
---------------------
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
if($_POST['submit']){
include "connect.php";
//Formulier is verzonden, nu de verwerking
$sql_aanmelding = "INSERT INTO `members` (`username`, `password`) VALUES (' " . $_POST['login-naam'] . "', ' ". $_POST['login-wachtwoord']. " ', NOW()"');
$verzenden = mysql_query($sql_aanmelding);
echo "De gegevens voor (.$_POST['login-naam'].) zijn opgeslagen in onze database."
*** HAAL ID UIT MYSQL DATABASE EN SCHRIJF DIT IN COOKIE ***
}else{
//formulier is nog niet verzonden, laat het zien in de html-modus
?>
if($_POST['submit']){
include "connect.php";
//Formulier is verzonden, nu de verwerking
$sql_aanmelding = "INSERT INTO `members` (`username`, `password`) VALUES (' " . $_POST['login-naam'] . "', ' ". $_POST['login-wachtwoord']. " ', NOW()"');
$verzenden = mysql_query($sql_aanmelding);
echo "De gegevens voor (.$_POST['login-naam'].) zijn opgeslagen in onze database."
*** HAAL ID UIT MYSQL DATABASE EN SCHRIJF DIT IN COOKIE ***
}else{
//formulier is nog niet verzonden, laat het zien in de html-modus
?>
<form name="inloggen" action="register.php" method="post">
Gebruikersnaam: <input type="text" name="login-naam">
Wachtwoord: <input type="password" name="login-wachtwoord">
</form>
---------------------
Graag hoor ik van iemand hoe ik dit script draaiend kan krijgen en hoe ik ervoor kan zorgen dat het script meteen een cookie aanmaakt met het bijbehorende ID erin.
Alvast bedankt.
Met vriendelijke groet,
SQLPHPER PHPSQLER
Gewijzigd op 08/01/2012 19:35:34 door SQLPHPER PHPSQLER
Waarom wil je niet werken met AI?(auto-increment)
Eddy Bisschops op 08/01/2012 19:28:25:
Waarom wil je niet werken met AI?(auto-increment)
Bedankt voor de snelle reactie.
Het ID wordt in SQL (als het goed is) al aangemaakt dmv AUTO-INCREMENT.
Moet ik dit ook in het script zetten? Zo ja, hoe?
Alvast bedankt.
Gewijzigd op 08/01/2012 19:32:38 door SQLPHPER PHPSQLER
Nee, als je een column hebt in de table die AI uitvoert hoef je je daar verder bij INSERT niet bezig mee te houden.
Eddy Bisschops op 08/01/2012 19:35:33:
Nee, als je een column hebt in de table die AI uitvoert hoef je je daar verder bij INSERT niet bezig mee te houden.
Oké, maar hoe zorg ik ervoor dat de ID uit MYSQL wordt gelezen en in een cookie wordt gezet, en wat mankeert er aan mijn script?
Controleren of een formulier verzonden is doe je met if ($_SERVER['REQUEST_METHOD'] == 'POST')
De meningen over backtics in een query lopen uiteen.
Je controleert de input vanuit het formulier nergens of het ergens aan voldoet.
Je stopt een ongecodeerd wachtwoord in de database.
Je beveiligt de invoer in je database niet (mysql_real_escape_string)
Je hebt twee velden en drie inputs.
Zorg voor juiste foutafhandeling.
Kijk naar de kleurtjes.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
if($_POST['submit']){
include("connect.php");
// Formulier is verzonden, nu de verwerking
$sql_aanmelding = "INSERT INTO members ('username', 'password') VALUES ('".$_POST['login-naam']."', '".$_POST['login-wachtwoord']."', 'NOW()')";
$verzenden = mysql_query($sql_aanmelding);
echo "De gegevens voor ".$_POST['login-naam']." zijn opgeslagen in onze database."
}else{
//formulier is nog niet verzonden, laat het zien in de html-modus
}
?>
if($_POST['submit']){
include("connect.php");
// Formulier is verzonden, nu de verwerking
$sql_aanmelding = "INSERT INTO members ('username', 'password') VALUES ('".$_POST['login-naam']."', '".$_POST['login-wachtwoord']."', 'NOW()')";
$verzenden = mysql_query($sql_aanmelding);
echo "De gegevens voor ".$_POST['login-naam']." zijn opgeslagen in onze database."
}else{
//formulier is nog niet verzonden, laat het zien in de html-modus
}
?>
Dit werkt maar ik raad je echt af dit te gebruiken. Hou je bezig met de veiligheid en zet geen directe user gegevens in cookies.. dat betekend dat als iemand de cookie wijzigt ze op iemand anders account kunnen komen.
kijk naar:
mysql_real_escape_string();
sha(); md5();
En volg wat beginners tutorials over PHP. Alle variabelen buiten " etc., is de absolute basis en valt je meteen op met een editor zoals Notepad++.