Zo, daar was ik weer, maar omdat het aanpassen moeilijk was, besloot ik maar gewoon uit niets te beginnen, want dat gaat beter werken en dan leer ik er meer van dan alleen van copy-pasten.
Ik heb dus effe heel simpel een formulier gemaakt met naam, pass, en e-mailadres
Nu heb ik een DB gemaakt, met een table 'users' erin. Hier is ook, al een onderverdeling van
*id (met auto_increment)
*name
*pass
*email
Dus, dat zit ook wel goed.
Nu krijg ik alleen een fout,
Parse error: syntax error, unexpected T_VARIABLE in /home/***/domains/***.nl/public_html/tt/register.inc.php on line 4
En het betreft de onderstaande regel.
$sql = "INSERT INTO users (name,pass,email) VALUES ('$name','$email','$pass')";
Nu ga je meteen met 'moeilijke' woorden gooien.
Even om het op een rijtje te zetten voor mezelf.
Insert Syntax, dat is "INSERT INTO users (name,pass,email)" dit stukje?
En dat stukje mysql_real_escape_string, daar had ik al wel is van gehoord, maar waar en hoe pas je dat toe?
Ik ben een complete newb in php, en moet de beginselen nog leren. Ken wel wat commando's, maar ik heb al moeite met het posten van informatie in een SQL database!
Kan je een voorbeeldje maken van hoe het eruit moet zien, en misschien uitleggen waarom je wat gebruik? :$
<?php
$sql = "INSERT INTO users // Zo heet de tabel
(name, pass, email) // Hier geef je aan welke rijen
VALUES
(
'".mysql_real_escape_string($_POST['name'])."' // In je html input veld heb je name staan, dit vul je dan in. Je gebruikt hiervoor een POST-Variable
'".mysql_real_escape_string($_POST['password'])."'
'".mysql_real_escape_string($_POST['email'])."'
)
";
?>
Iedereen is zo begonnen met php.
Ik heb een simpel voorbeeldje gemaakt.
Dem Ian, heldt met dt omdat dat meer episch staat.
Danku zeer vriendelijk, dit verduidelijkt al heel veel voor mij :D
Het scriptje werkt nu ook, alleen schrijft nog niet in de database, waarom weet ik niet, want ik krijg, nadat ik op submit druk, meteen "Er is wat fout gegaan bij de registratie, Probeer opnieuw!" te zien.
Verder heb ik gecontroleerd of de variablen bij de $_POST command overeen kwamen met die uit het html form, en die zijn correct. Ook de table/column's kloppen.
Op dit topic laten ze je simpel zien hoe je veilig! gegevens in je database kan proppen of oproepen.
Er is ook een foutafhandeling, goede query en meer!
Als ik bovenstaande link toepas op je script dan werkt het wel.
Wat ik denk waar het aan licht, is je query. Ik weet het ook niet zeker.
<?php
# We zetten dit volledig bovenaan
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# sql debug
define('DEBUG_MODE',true); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
# zet dit waar je query moet
# de query | bij input: let op sql-injectie -> mysql_real_escape_string()
include "../config.php";
$sql_insert_user = "INSERT INTO users (name, pass, email)
VALUES (
'".mysql_real_escape_string($_POST['name'])."',
'".mysql_real_escape_string($_POST['password'])."',
'".mysql_real_escape_string($_POST['email'])."'
)
";
# Check of query is gelukt
if (($result_insert_user = mysql_query($sql_insert_user)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_insert_user,mysql_error(),'Fout bij het registeren.');
}
else
{
# De query is geluk! :)
echo 'Gebruiker is succesvol toegevoegt!';
}
?>
Wat je zeker nog moet voor kijken:
- Is het emailadres juist? Zit er een @ teken in en meer...
- Je wachtwoord met md5 opslaan.
- Kijken of gebruikersnaam niet twee keer in je database bestaat.
- Kijken of je gebruikersnaam en wachtwoord en emailadres niet leeg is.
- M.a.w. kijken of alles ingevuld is.
- Gebruikersnaam moet langer dan 4 tekens zijn bijvoorbeeld
- Wachtworod moet langer dan 6 tekens zijn bijvoorbeeld
Misschien ook een activatiecode maken? Waarbij het account geactiveerd wordt als je op de link drukt in je postvak in?
Mvg
Dem
?
Onbekende gebruiker
18-03-2012 16:27
Wachtwoord met md5 opslaan? Ik zou toch eerder het volgende doen:
<?php
# Wachtwoord en salt:
$password = 'Kikker123';
$salt = 'Ac86yt5D';
# Het wachtwoord veilig maken:
$password_safe = hash('sha512', $salt.$password);