data gaat de database niet in

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Sandy Cohen

Sandy Cohen

23/12/2008 18:56:00
Quote Anchor link
Ik heb een script geschreven, dat een account registreerd in een database, maar om een of andere reden werkt deze niet correct. Er zitten geen uitvoer fouten in, want ik krijg gewoon de pagina te zien. Hopelijk kan iemand mij helpen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?
include("nav.php");
$user    = $_POST['user'];
$pass    = $_POST['pass'];
$pass2   = $_POST['pass2'];
$email   = $_POST['email'];
$name    = $_POST['name'];
$subname = $_POST['subname'];
$country = $_POST['country'];

// Query to input registration data
$input = "INSERT * into 'accounts' ('login','password','email','name','subname','country') VALUES ('$user','$pass','$email','$name','$subname','$country')";

echo "<center><br /><br /><br />";

// Connect to mysql
mysql_connect(localhost,root,security3);
@
mysql_select_db(logon) or die("Connection failed");
// Password checkup
if ($pass == $pass2){
mysql_query($input);
echo "Please remember your account details:<br />Username: $user<br /> Password: $pass";
}

else
{ echo "Your passwords don't match!<br />"; }
mysql_close();
?>
 
PHP hulp

PHP hulp

27/04/2024 00:09:27
 

23/12/2008 18:59:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?
include("nav.php");
$user    = $_POST['user'];
$pass    = $_POST['pass'];
$pass2   = $_POST['pass2'];
$email   = $_POST['email'];
$name    = $_POST['name'];
$subname = $_POST['subname'];
$country = $_POST['country'];

// Query to input registration data
$input = "INSERT * into 'accounts' ('login','password','email','name','subname','country') VALUES ('".$user."','".$pass."','".$email."','".$name."','".$subname."','".$country."')";

echo "<center><br /><br /><br />";

// Connect to mysql
mysql_connect(localhost,root,security3);
@
mysql_select_db(logon) or die("Connection failed");
// Password checkup
if ($pass == $pass2){
mysql_query($input);
echo "Please remember your account details:<br />Username: $user<br /> Password: $pass";
}

else
{ echo "Your passwords don't match!<br />"; }
mysql_close();
?>



(niet getest)
Gewijzigd op 01/01/1970 01:00:00 door
 
Dennis

dennis

23/12/2008 19:00:00
Quote Anchor link
doe aub dit

$user = mysql_real_escape_string($_POST['user']);

gebruik echt mysql_real_escape_string. anders kan je onveilige user invoeren in de database laten vloeien.

verder gebruik ook overal include_once en require_once (met _once) erachter. en moeten die passwords niet worden opgeslagen met een hash eromheen.

en md5 is achterhaald gebruik dan minimaal md5.

waar ik zelf fan van ben is
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $pass = hash('sha512',$_POSt['pass']); ?>
 
Frank -

Frank -

23/12/2008 19:03:00
Quote Anchor link
Dit rijtje kan richting afvalbak:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?
$user
    = $_POST['user'];
$pass    = $_POST['pass'];
$pass2   = $_POST['pass2'];
$email   = $_POST['email'];
$name    = $_POST['name'];
$subname = $_POST['subname'];
$country = $_POST['country'];
?>

Waarom? Omdat je geen flauw idee hebt of de variabelen wel bestaan en of ze wel veilig zijn. Weggooien die zooi, heb je niets aan. Tenzij je meer bugs in je systeem wilt hebben...

De INSERT-query lijkt iets op SQL, maar is het niet. Zie de eerste de beste database-handleiding, daar staat toch echt iets anders in. Danzij een paar vieze vuile gore backticks ` die iemand jou heeft aangeleerd, gaat het nu goed fout. Vergeet die sukkel die dat op zijn geweten heeft en ga nooit meer backticks ` of quotes ' rondom tabel- en kolomnamen zetten, dat kan niet, mag niet en werkt niet.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
INSERT INTO
  tabelnaam (
    kolomA,
    kolomB
  )
VALUES (
  'waarde 1',
  'waarde 2'
);


En verder haal je variabelen buiten de quotes, quotes staan om een string en een variabele is geen string.

Uiteraard ga je de input beveiligen, met mysql_real_escape_string(), en controleren of de query wel is gelukt. Zie de beginnerstutorials die hier op phphulp staan, zul je een hoop plezier aan beleven.

Ps. Wat is het idee achter de wachtwoordcontrole?
 
Sandy Cohen

Sandy Cohen

23/12/2008 19:06:00
Quote Anchor link
ze bestaan wel, defined in index.php waar mensen de gegevens invullen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<form action="register.php" method="post">
Username:<br />
<input type="text" name="user"><br />
Password: <br />
<input type="text" name="pass"><br />
Password Verification:<br />
<input type="text" name="pass2"><br />
E-mail:<br />
<input type="text" name="email"><br />
Name:<br />
<input type="text" name="name"><br />
Last Name:<br />
<input type="text" name="subname"><br />
Country:<br />
<input type="text" name="country"><br />
<input type="submit" value="Register!">
Gewijzigd op 01/01/1970 01:00:00 door Sandy Cohen
 
- SanThe -

- SanThe -

23/12/2008 19:09:00
Quote Anchor link
Bouw foutafhandeling in voor de query's.
Copiëer niet nutteloos $vars.
Let op sql-injection.
$vars buiten quotes houden.

Zet dit bovenin je script.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
 
Dennis

dennis

23/12/2008 19:10:00
Quote Anchor link
en we vergeten de wachtwoorden die niet veilig worden opgeslagen ik hoop dat ik op jouw systeem nooit een account hoef te nemen.
Gewijzigd op 01/01/1970 01:00:00 door dennis
 
Frank -

Frank -

23/12/2008 19:13:00
Quote Anchor link
Sandy Cohen schreef op 23.12.2008 19:06:
ze bestaan wel, defined in index.php waar mensen de gegevens invullen
Goed, ik geloof je op je woord...

Waar staat het script? Zal ik de boel wel even hacken en dan zal ook direct blijken dat jouw zogenaamde variabelen niet bestaan.

Jij denkt dat ze bestaan, maar dat controleer je nergens en dus mag je aannemen dat ze niet bestaan. Zeker niet wanneer een grappenmaker de boel hackt!

Een goed script begint bij goede controles en goede foutafhandeling. Alles wat fout kan gaan, zal ook fout gaan. Die garantie heb je.
 
Sandy Cohen

Sandy Cohen

23/12/2008 19:21:00
Quote Anchor link
controles komen later zoals ik van plan was, ik wil alleen de basis aan de gang krijgen
 
- SanThe -

- SanThe -

23/12/2008 19:34:00
Quote Anchor link
Sandy Cohen schreef op 23.12.2008 19:21:
controles komen later zoals ik van plan was, ik wil alleen de basis aan de gang krijgen

Je gaat ook eerst een tijdje autorijden en dan neem je later nog wel eens les als je daar zin in hebt. Handig, doch levensgevaarlijk.
 
Frank -

Frank -

23/12/2008 19:38:00
Quote Anchor link
Sandy Cohen schreef op 23.12.2008 19:21:
controles komen later zoals ik van plan was, ik wil alleen de basis aan de gang krijgen

Dat wordt dan een legendarisch moment in de geschiedenis, je bent dan de eerste die dat voorelkaar krijgt.

Ik durf te wedden dat je dit niet gaat lukken, je gaat ergens een lek dat je zelf hebt gemaakt, over het hoofd zien. Dat is niets bijzonders, het is de normaalste zaak van de wereld, ga dan ook niet dromen dat jij deze fout niet maakt. Dat zou nog de allergrootste fout zijn die je kunt maken.

Kortom, begin bij de controles en foutafhandeling, dat is de basis.
 
Sandy Cohen

Sandy Cohen

23/12/2008 20:09:00
Quote Anchor link
Vanwaar de haat, ik wil alleen dit script te werken krijgen
 
Frank -

Frank -

23/12/2008 20:55:00
Quote Anchor link
Haat? Hoe kom je daar nou bij? Heb je wel enig idee wat "haat" betekent?

Beetje domme opmerking, zoek het dan ook maar lekker zelf uit.

Prettige kerstdagen!
 
Sandy Cohen

Sandy Cohen

23/12/2008 21:06:00
Quote Anchor link
Heel leuk dat je php goed van buiten kent, heb ik ook respect voor. Maar vanaf post 1 zit je mijn code al afkraken, we kunnen niet allemaal meteen goed zien vanaf week 1. Ik vraag alleen of iemand weet wat er fout is aan de des betreffende code.
 
PHP Newbie

PHP Newbie

23/12/2008 21:10:00
Quote Anchor link
Ik denk dat Frank je wel duidelijk gemaakt heeft wat er mis is met je code. Je geeft echter niet de indruk dat je ook maar iets met zijn commentaar doet. Daar kan Frank niet zo goed tegen en wenst je daarom fijne feestdagen toe.
 
Sandy Cohen

Sandy Cohen

23/12/2008 21:13:00
Quote Anchor link
Ik doe wel iets met die informatie, heb ook handige dingen geleerd zoals het gebruik van mysql_real_escape_string() tegen injecties. Wil alleen een fix hebben voor mijn code en vraag daar hulp bij
 
Rens nvt

Rens nvt

23/12/2008 21:20:00
Quote Anchor link
@Sandy: Frank is nog best lief in deze post hoor ;-)

Heb je de error reporting al bovenaan je script gezet (zie tip santhe)? Dit zou je op zijn minst een duidelijke fout moeten geven...
 
Sandy Cohen

Sandy Cohen

23/12/2008 21:26:00
Quote Anchor link
owja, helemaal vergeten te posten.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
Notice: Use of undefined constant localhost - assumed 'localhost' in C:\xampp\htdocs\register.php on line 27

Notice: Use of undefined constant root - assumed 'root' in C:\xampp\htdocs\register.php on line 27

Notice: Use of undefined constant security3 - assumed 'security3' in C:\xampp\htdocs\register.php on line 27
?>


Iets mis met de verbinding zelf?
Gewijzigd op 01/01/1970 01:00:00 door Sandy Cohen
 
Klaasjan Boven

Klaasjan Boven

23/12/2008 21:31:00
Quote Anchor link
Gooi het even op een codedump, de ubbparser kan niet met je code verweg zo te zien
 
Sandy Cohen

Sandy Cohen

23/12/2008 21:35:00
Quote Anchor link
Notice: Use of undefined constant localhost - assumed 'localhost' in C:\xampp\htdocs\register.php on line 27

Notice: Use of undefined constant root - assumed 'root' in C:\xampp\htdocs\register.php on line 27

Notice: Use of undefined constant security3 - assumed 'security3' in C:\xampp\htdocs\register.php on line 27
 
Rens nvt

Rens nvt

23/12/2008 21:36:00
Quote Anchor link
Ok, ik had al zo'n vermoeden... Je gebruikt de volgende code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
mysql_connect(localhost,root,security3);
?>

De foutmelding die je krijgt geeft aan dat je database gegevens niet gedefinieerd zijn...

Is het niet zo dat het eigenlijk dit moet zijn?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
mysql_connect("localhost","root","security3");
?>


Als dit zo is, dan graag even rekening houden met het volgende:
1. Werk niet met de root user in je database
2. Post je wachtwoorden niet op fora, al helemaal niet je root wachtwoord
3. Het is in veel gevallen handiger om je database gegevens in een config bestandje te zetten, en dan via variabelen een verbinding te maken... Zoals bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
mysql_connect($db_host, $db_user, $db_password);
?>


Overigens een ERG goed argument om foutafhandeling tijdens het bouwen aan te zetten, en al je acties via foutafhandeling af te vangen! Je had dan meteen gezien wat er aan de hand was...

Dus, bij het connecten doe je bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$connection
= mysql_connect($db_host, $db_user, $db_password) or die ("Could not connect to database server");
?>
Gewijzigd op 01/01/1970 01:00:00 door Rens nvt
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.