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')";

Hier pastie van het complete 'script'
http://pastebin.com/vCTdihhD


Wat waarschijnlijk wel niet zal werken, omdat ik voor mn gevoel heel veel zal missen, maar dat kan ook wanhoop zijn :P

Mvg.
@Aaron, dat kan natuurlijk ook.

Maar md5 is toch denk ik, beter om mee te beginnen.
Hij is ook nog maar net begonnen.
@Dem Ian
Heb je al eens eerder ergens gezien een opmerking van jou: als het werkt, ben ik tevreden.
Zo werkt het dus niet. Ook al is TS net begonnen, leer het dan gelijk goed. Anders kan hij/zij straks weer opnieuw gaan beginnen.
Ik wil het wel goed leren. Maar te grote stappen maken ben ik geen fan van.

Ben al wel weer wat verder met schrijven, want ben ondertussen al 2389237928x voor mn gevoel opnieuw begonnen.

Het ziet er nu al zo uit, werkt ook, alleen schrijft niet in de database. Alsof er geen connectie is, terwijl die er wel is, anders zou er een error zijn nml.

config.php
<?php

//Var's toekennen.
$host = "localhost"; //Server Adres.
$username = "djurrbm53"; //MySQL username.
$password = "////"; //MySQL Password.
$database = "djurrbm53_login"; //Database naam.
$ally = "allynaam"; //Alliantie naam.

//Connectie naar database toe.
$connect = mysql_connect("$host", "$username", "$password");
if(!$connect){
die(mysql_error());
}

//Selecting database
$select_db = mysql_select_db("$database", $connect);
if(!$select_db){
die(mysql_error());
}

?>


en register.php
<?php

include 'config.php';

//Functie die het registratieformulier laat zien.
function register_form(){

$date = date('D, M, Y');
echo "<form action='?act=register' method='post'>"
."Gebruikersnaam: <input type='text' name='login' size='30'><br>"
."Wachtwoord: <input type='password' name='pass' size='30'><br>"
."Bevestig je wachtwoord: <input type='password' name='password_conf' size='30'><br>"
."Email: <input type='text' name='email' size='30'><br>"
."<input type='hidden' name='date' value='$date'>"
."<input type='submit' value='Register'>"
."</form>";

}

//Functie om de registratie in gang te zetten.
function register(){

//Variablen toekennen om de informatie naar de database te sturen.
$login = $_REQUEST['login'];
$pass = $_REQUEST['pass'];
$password_conf = $_REQUEST['password_conf'];
$email = $_REQUEST['email'];
$date = $_REQUEST['date'];

//Controle of alles is ingevuld.
if(empty($login)) {
die("Oeps! Je hebt je gebruikersnaam nog niet ingevuld!");
}

if(empty($pass)) {
die("Oeps! Je hebt je wachtwoord nog niet ingevuld!");
}

if(empty($password_conf)) {
die("Oeps! Je hebt je wachtwoord nog niet bevestigt!");
}

if(empty($email)) {
die("Oeps! Je hebt je email adres nog niet ingevuld!");

}


//Controleer of de e-mailadressen of gebruikersnamen al in de DB voorkomen.
$usercheck = mysql_query("SELECT login FROM users WHERE login='$login'");
$do_user_check = mysql_num_rows($usercheck);

$emailcheck = mysql_query("SELECT email FROM users WHERE email='$email'");
$do_email_check = mysql_num_rows($emailcheck);

if($do_usercheck > 0 or $do_email_check > 0 ) {
die("Dit e-mail adres of deze gebruikersnaam is bij ons al bekend. Gebruik de 'Wachtwoord Vergeten' functie.");
}

//Controleer op dezelfde wachtwoorden.
if($pass != $password_conf){
die("De wachtwoorden komen niet overeen, probeer opnieuw.");
}

//Als alles voldaan is mag er geregistreerd worden.
$insert = mysql_query("INSERT INTO users (login, pass, email) VALUES ('$login', '$pass', '$email')");
if(!$insert){
die("There's little problem: ".mysql_error());
}

echo $login.", We hebben je succesvol kunnen registreren. Ga door naar de <br><a href=login.php>Login</a> of <a href=index.php>Index</a>";

}

switch($act){

default;
register_form();
break;

case "register";
register();
break;

}

?>





Djurre Visser op 20/03/2012 18:05:36

<?php

//Var's toekennen.
$host = "localhost"; //Server Adres.
$username = "djurrbm53"; //MySQL username.
$password = "////"; //MySQL Password.
$database = "djurrbm53_login"; //Database naam.
$ally = "allynaam"; //Alliantie naam.

//Connectie naar database toe.
$connect = mysql_connect("$host", "$username", "$password");
if(!$connect){
die(mysql_error());
}

//Selecting database
$select_db = mysql_select_db("$database", $connect);
if(!$select_db){
die(mysql_error());
}

?>


Een tip die ik eens kreeg, om extra veiligheid te verkrijgen was de variabelen waarmee je 'inlogt' op je SQL-database te unsetten.
Stel dat iemand in KAN breken en een simpele echo $password; voor elkaar krijgt? Dan weet hij dus het wachtwoord.

Dus unset deze wachtwoorden OF zet ze direct in de opdracht.
Voorbeeldje:

<?php
//Var's toekennen
$host = "localhost"; //Server Adres.
$username = "djurrbm53"; //MySQL username.
$password = "////"; //MySQL Password.
$database = "djurrbm53_login"; //Database naam.
$ally = "allynaam"; //Alliantie naam.

//Connectie naar database toe.
$connect = mysql_connect($host, $username, $password);
if(!$connect){
die(mysql_error());
}
unset($username, $password, $database, $ally);
?>
Ah, bedankt :)

Mooie tip inderdaad, daar had ik nog niet van gehoord.
Verder, kan iemand mij vertellen waarom er niets naar de mysql db verstuurd word?

Login gegevens zijn sowiso goed, en de DB moet ook te vinden zijn, anders had ik al error's gehad. Table klopt ook, zit het hem in de php-opdracht?
Djurre Visser op 20/03/2012 18:05:36

Ik wil het wel goed leren. Maar te grote stappen maken ben ik geen fan van.

Nee, juist kleine stapjes, maar dan liever wel de goede...

Ik ga er van uit dat je nog een nettere/betere foutafhandeling gaat inbouwen. 'die' is dat niet. Iemand gaat toch niet dood, als hij een veld niet (juist) heeft ingevuld. Jouw script wel...

Je formulier heeft als method --> POST, waarom dan $_REQUEST gebruiken en niet $_POST?
Waarom die functie register() eigenlijk?
Je controle op de input is/blijft minimaal.

In je query's --> variabelen buiten quotes en er is geen enkele beveiliging op de input.

Echo je insert-query eens naar het scherm. Klopt het dan wat er staat?
Wat als je die kopieert naar phpadmin en daar direct uitvoert. Foutmelding?

Binnen html " gebruiken (en binnen php ') -->

<?php
echo $login.', We hebben je succesvol kunnen registreren. Ga door naar de <br><a href="login.php">Login</a> of <a href="index.php">Index</a>';
?>
Bedankt voor je reactie, dat als eerste.

Foutafhandeling kan inderdaad beter, wist alleen niet hoe ik dit snel netjes ging maken, zoals je misschien al wel door had, ik zoek veel verschillende source's op om te kijken hoe ze dingen afsluiten, of hoe ze dingen versturen. Ik probeer op basis daarvan mijn eigen login systeempje te maken.

Waarschijnlijk, (waar je me ook op wijst) is het nog niet veilig genoeg. Ik ben in eerste instantie tevreden als het uberhaupt werkt, dan kan ik in ieder geval vordering zien, en daarna gaan aanpassen zodat het ook niet meer hack gevoelig is, voor SQLI Injection, sessionstealing, en dat soort dergelijke dingen.

En, als laatste, Hoe bedoelt u de volgende zin?
Je controle op de input is/blijft minimaal.


Djurre Visser op 20/03/2012 22:46:33

En, als laatste, Hoe bedoelt u de volgende zin?
Je controle op de input is/blijft minimaal.

Is nog vroeg, mogelijk kijk ik er over heen:
Waar controleer je of de ingevoerde datum bestaat?
Waar controleer je of de opbouw van e-mail goed is (deel voor @, deel er na en een . er in)?
Zijn er geen eisen aan een login naam/wachtwoord?
Dat klopt inderdaad, dat bestaat allemaal nog niet, omdat ik NIET zou weten hoe ik dat moet controleren, maar dat zijn dingen die ik natuurlijk later pas kan implementeren.

Zoals ik al zei, als ik een werkend script heb, wat ook serieus registreert, kan ik het gaan uitbreiden tot een wat groter fatsoenlijk script wat ik zelf begrijp, aan anderen kan uitleggen, en waar ik zelf ook een beetje mee kan spelen, (aanpassen, verbeteren, nieuwe dingen toevoegen)
Heb hierboven al diverse zaken aangegeven waar je naar zou kunnen/moeten kijken.
1 daarvan is:
Obelix en Idefix op 20/03/2012 19:05:13

Echo je insert-query eens naar het scherm. Klopt het dan wat er staat?
Wat als je die kopieert naar phpadmin en daar direct uitvoert. Foutmelding?

Ik zie zo snel niet of je dat geprobeerd hebt/wat daar uit gekomen is.

Reageren