mysql naar mysqli in een forum registratie-script
"Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\xampp\htdocs\forum\registreren.php on line 22"
Kan iemand mij helpen met hoe ik dat oplos?
De PHP Forum-tutorial kwam trouwens van http://www.phphulp.nl/php/tutorial/data-verwerking/2-simpel-forum-compleet-in-te-bouwen-v2/492/
Je moet in mysqli_error() ook de variabele opgeven van je mysqli_connect()
http://www.pfz.nl/forum/topic/10953-mysql-naar-mysqli/
Dat je op meerdere fora je vraag post, is prima, maar laat dat dan wel even weten.
Je zou de eerste niet zijn die op een ander forum een oplossing krijgt aangereikt of aanvullende informatie plaatst, maar dat niet deelt met bv. dit forum. Mensen proberen je dan te helpen, zonder te weten dat het probleem mogelijk al is opgelost.
Crossposting: Dat je op meerdere fora je vraag post, is prima, maar laat dat dan wel even weten.
Je zou de eerste niet zijn die op een ander forum een oplossing krijgt aangereikt of aanvullende informatie plaatst, maar dat niet deelt met bv. dit forum. Mensen proberen je dan te helpen, zonder te weten dat het probleem mogelijk al is opgelost.
documentatie...
Wat ik altijd zo opmerkelijk vind aan dit soort vragen, is dat de TS de moeite doet om op twee verschillende fora een bericht te plaatsen met als risico dat het dagen duurt voor er een goed antwoord uit komt (áls er al een zinnig antwoord komt) terwijl in minder dan de tijd die het kost om een bericht in te tikken het antwoord gevonden kan worden in de Die site heb ik gezien Willem VP, maar het is me niet gelukt daar een oplossing vandaan te halen.
Aar, zou je misschien je antwoord kunnen verduidelijken?
Gewijzigd op 01/11/2014 14:09:18 door bart de kinkelaar
$dbh = mysqli_connect($host,$user,$pass,$database);
Die $dbh (of hoe je dat ding ook wilt noemen) is de variabele die Aar bedoelde. Die moet je als parameter aan mysqli_error() meegeven:
mysqli_error($dbh);
De foutmelding die je nu krijgt, is omdat je mysqli_error() zonder parameters aanroept. PHP klaagt dan dat hij niet voldoende gegevens heeft om zijn werk te kunnen doen.
Quote:
Parse error: syntax error, unexpected 'if' (T_IF) in C:\xampp\htdocs\forum\registreren.php on line 23
Terwijl dit de code is in dat deel van de code (line 20-26):
Quote:
function gebruikersnaam_check($gebruikersnaam){
$con = $gebruikersnaam_query = "SELECT gebruiker_naam FROM gebruiker WHERE gebruiker_naam=".$gebruikersnaam.";";
$gebruikersnaam_sql = mysqli_query($con, $gebruikersnaam_query)or die(mysqli_error($dbh)
if(mysql_num_rows($gebruikersnaam_sql) == 0)
{$bezet = 'nee' ;}
else{$bezet = 'ja';}
return $bezet;
$con = $gebruikersnaam_query = "SELECT gebruiker_naam FROM gebruiker WHERE gebruiker_naam=".$gebruikersnaam.";";
$gebruikersnaam_sql = mysqli_query($con, $gebruikersnaam_query)or die(mysqli_error($dbh)
if(mysql_num_rows($gebruikersnaam_sql) == 0)
{$bezet = 'nee' ;}
else{$bezet = 'ja';}
return $bezet;
Gewijzigd op 01/11/2014 19:28:58 door bart de kinkelaar
Je begint een if-statement op een plek waar dat niet wordt verwacht.
Een mogelijke oorzaak is dat er een fout zit in de regel er voor.
Op PFZ zag ik volgens mij een stukje code staan die ik hier mis (pfz ligt er momenteel (weer) uit). Daar stond eregi in, als ik me niet vergis.
Gaat je een (fout)melding opleveren; eregi is vervallen. "Tip: eregi() is deprecated as of PHP 5.3.0. preg_match() with the i (PCRE_CASELESS) modifier is the suggested alternative."
Bart de kinkelaar op 01/11/2014 14:08:58:
Het klopt dat ik het ook op 1 ander forum heb staan. Maar stel op dat forum komt een goed antwoord dan post ik dat hier heus wel Obelix;)
Prima. Heb onlangs weer iemand gezien die dat dus niet doet. En ik vind dat niet netjes naar mensen die je proberen te helpen.
Volgens mij staat er overigens wel andere informatie (/code) op PFZ dan hier (kan dat nu niet controleren omdat PFZ plat ligt).
Quote:
<form action="registreren.php" method="POST">
<table>
<tr><td>Gebruikersnaam:</td><td><input type="text" name="gebruikersnaam" value=""></td></tr>
<tr><td>Wachtwoord:</td><td><input type="password" name="wachtwoord1" value=""></td></tr>
<tr><td>Wachtwoord nogmaals:</td><td><input type="password" name="wachtwoord2" value=""></td></tr>
<tr><td>Emailadres:</td><td><input type="text" name="emailadres" value=""></td></tr>
<tr><td></td><td><input type="submit" name="registreer" value="Aanmelden">
</table>
</form>
Code (php)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
error_reporting(E_ALL);
include('verbind.php');
if(isset($_POST['registreer'])){
function email_validator($email){
if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email))
{$geldig = 'ja'; }
else{$geldig = 'nee';}
return $geldig;
}
function email_check($email){
$email_query = "SELECT gebruiker_email FROM gebruiker WHERE gebruiker_email='".$email."';";
$email_sql = mysql_query($email_query)or die(mysql_error());
if(mysql_num_rows($email_sql) == 0)
{$bezet = 'nee';}
else{$bezet = 'ja' ;}
return $bezet;
}
function gebruikersnaam_check($gebruikersnaam){
$con = $gebruikersnaam_query = "SELECT gebruiker_naam FROM gebruiker WHERE gebruiker_naam=".$gebruikersnaam.";";
$gebruikersnaam_sql = mysqli_query($con, $gebruikersnaam_query)or die(mysqli_error($dbh)
if(mysql_num_rows($gebruikersnaam_sql) == 0)
{$bezet = 'nee' ;}
else{$bezet = 'ja';}
return $bezet;
}
if(trim($_POST['gebruikersnaam']) == ""){
echo 'U heeft geen gebruikersnaam ingevuld';
}elseif(gebruikersnaam_check($_POST['gebruikersnaam']) == 'ja'){
echo 'Deze gebruikersnaam is al in gebruik, kies a.u.b een ander.';
}elseif($_POST['wachtwoord1'] != $_POST['wachtwoord2']){
echo 'De opgegeven wachtwoorden komen niet overeen';
}elseif($_POST['wachtwoord1'] == ""){
echo 'Er zijn geen wachtwoord<b>en</b> opgegeven';
}elseif(email_validator($_POST['emailadres']) == 'nee'){
echo 'Het ingevulde emailadres is niet geldig';
}elseif(email_check($_POST['emailadres']) == 'ja'){
echo 'Er is al iemand geregistreerd met dit emailadres.';
}else{
$query = "INSERT INTO gebruiker
(gebruiker_naam, gebruiker_wachtwoord, gebruiker_email)
VALUES
('".mysql_real_escape_string($_POST['gebruikersnaam'])."',
'".md5($_POST['wachtwoord1'])."',
'".$_POST['emailadres']."');";
$sql = mysql_query($query)or die(mysql_error());
echo 'U bent succesvol aangemeld. Hieronder kunt u inloggen:';
include('inloggen.php');
}
}else{
?>
error_reporting(E_ALL);
include('verbind.php');
if(isset($_POST['registreer'])){
function email_validator($email){
if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email))
{$geldig = 'ja'; }
else{$geldig = 'nee';}
return $geldig;
}
function email_check($email){
$email_query = "SELECT gebruiker_email FROM gebruiker WHERE gebruiker_email='".$email."';";
$email_sql = mysql_query($email_query)or die(mysql_error());
if(mysql_num_rows($email_sql) == 0)
{$bezet = 'nee';}
else{$bezet = 'ja' ;}
return $bezet;
}
function gebruikersnaam_check($gebruikersnaam){
$con = $gebruikersnaam_query = "SELECT gebruiker_naam FROM gebruiker WHERE gebruiker_naam=".$gebruikersnaam.";";
$gebruikersnaam_sql = mysqli_query($con, $gebruikersnaam_query)or die(mysqli_error($dbh)
if(mysql_num_rows($gebruikersnaam_sql) == 0)
{$bezet = 'nee' ;}
else{$bezet = 'ja';}
return $bezet;
}
if(trim($_POST['gebruikersnaam']) == ""){
echo 'U heeft geen gebruikersnaam ingevuld';
}elseif(gebruikersnaam_check($_POST['gebruikersnaam']) == 'ja'){
echo 'Deze gebruikersnaam is al in gebruik, kies a.u.b een ander.';
}elseif($_POST['wachtwoord1'] != $_POST['wachtwoord2']){
echo 'De opgegeven wachtwoorden komen niet overeen';
}elseif($_POST['wachtwoord1'] == ""){
echo 'Er zijn geen wachtwoord<b>en</b> opgegeven';
}elseif(email_validator($_POST['emailadres']) == 'nee'){
echo 'Het ingevulde emailadres is niet geldig';
}elseif(email_check($_POST['emailadres']) == 'ja'){
echo 'Er is al iemand geregistreerd met dit emailadres.';
}else{
$query = "INSERT INTO gebruiker
(gebruiker_naam, gebruiker_wachtwoord, gebruiker_email)
VALUES
('".mysql_real_escape_string($_POST['gebruikersnaam'])."',
'".md5($_POST['wachtwoord1'])."',
'".$_POST['emailadres']."');";
$sql = mysql_query($query)or die(mysql_error());
echo 'U bent succesvol aangemeld. Hieronder kunt u inloggen:';
include('inloggen.php');
}
}else{
?>
<form action="registreren.php" method="POST">
<table>
<tr><td>Gebruikersnaam:</td><td><input type="text" name="gebruikersnaam" value=""></td></tr>
<tr><td>Wachtwoord:</td><td><input type="password" name="wachtwoord1" value=""></td></tr>
<tr><td>Wachtwoord nogmaals:</td><td><input type="password" name="wachtwoord2" value=""></td></tr>
<tr><td>Emailadres:</td><td><input type="text" name="emailadres" value=""></td></tr>
<tr><td></td><td><input type="submit" name="registreer" value="Aanmelden">
</table>
</form>
De foutmelding die ik krijg:
Quote:
Parse error: syntax error, unexpected 'if' (T_IF) in C:\xampp\htdocs\forum\registreren.php on line 23
Gewijzigd op 02/11/2014 11:20:20 door bart de kinkelaar
Bart de kinkelaar op 01/11/2014 23:29:54:
De foutmelding die ik krijg:
Quote:
Parse error: syntax error, unexpected 'if' (T_IF) in C:\xampp\htdocs\forum\registreren.php on line 23
Obelix en Idefix op 01/11/2014 21:36:50:
De foutmelding lijkt me toch vrij duidelijk....
Je begint een if-statement op een plek waar dat niet wordt verwacht.
Een mogelijke oorzaak is dat er een fout zit in de regel er voor.
Je begint een if-statement op een plek waar dat niet wordt verwacht.
Een mogelijke oorzaak is dat er een fout zit in de regel er voor.
Ten aanzien van de code:
eregi is, zoals aangegeven vervallen.
mysql komt te vervallen. Stap over op mysqli of pdo
Or die is geen nette foutafhandeling. Een bezoeker hoeft ook geen mysql error te zien.
md5 is een oude manier om een wachtwoord te beveiligen. Schijnt (eenvoudig) gekraatk te kunnen worden. Kijk naar bv. bcrypt.