Inlog probleem
Hi, ik ben bezig met een website bouwen en ik ben een CMS aan het bouwen en de db connect is goed maar hij zegt telkens weer dat de gegevens fout zijn terwijl ik ze uit de db kopieër, kan iemand mij helpen?
Dit is mijn code:
Dit is mijn code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$iq = "SELECT*FROM Tabelname WHERE name='".$_POST['name']."' AND password='".$_POST['password']."' LIMIT 1";
$q = mysql_query($iq);
if (mysql_num_rows($q) == 1) {
$_SESSION['login']=$_POST['name'];
echo "<script> window.location = 'Website locatie(is goed)'; </script>";
} else {
echo "Fout wachtwoord of gebruikersnaam";
}
?>
$iq = "SELECT*FROM Tabelname WHERE name='".$_POST['name']."' AND password='".$_POST['password']."' LIMIT 1";
$q = mysql_query($iq);
if (mysql_num_rows($q) == 1) {
$_SESSION['login']=$_POST['name'];
echo "<script> window.location = 'Website locatie(is goed)'; </script>";
} else {
echo "Fout wachtwoord of gebruikersnaam";
}
?>
Ik denk dat je er beter aan doet om goede foutafhandeling in te bouwen, en over te stappen op de functie-bibliotheek van MySQLi.
Tevens raad ik met klem aan om mysqli_real_escape_string() op je $_POST-variabelen in je query ($iq) te gebruiken omdat je nu behoorlijk vatbaar bent voor hacking via SQL-injection.
Tevens raad ik met klem aan om mysqli_real_escape_string() op je $_POST-variabelen in je query ($iq) te gebruiken omdat je nu behoorlijk vatbaar bent voor hacking via SQL-injection.
Gewijzigd op 15/07/2014 18:48:32 door - Ariën -
Aanvullend daarom gebruik je een wildcard (*)
Veiliger is om enkel de velden uit de database te benoemen die je echt nodig hebt.
Het * moeten spaties omheen.
Veiliger is om enkel de velden uit de database te benoemen die je echt nodig hebt.
Het * moeten spaties omheen.
Bedankt ik zal er naar gaan kijken
Ik heb de code aangepast alleen nu stuit ik er op dat zodra hij de pagina reset hij niks weergeeft, dit is mijn code nu:
Toevoeging op 15/07/2014 18:23:21:
Hij weergeeft alleen de style
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$con = mysqli_connect('host','username','ww','db-naam');
if (mysqli_connect_errno($con)) {
echo mysqli_connect_error($con)
}
$name = mysqli_real_escape_string($con, $_POST['name']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$iq = "SELECT*FROM userscms WHERE name='".$name."' AND password='".$password."' LIMIT 1";
$q = mysqli_query($iq);
if (mysqli_num_rows($q) == 1) {
$_SESSION['login'] = $name;
echo "<script> window.location = 'website locatie'; </script>";
} else {
echo "Fout wachtwoord of gebruikersnaam";
}
?>
$con = mysqli_connect('host','username','ww','db-naam');
if (mysqli_connect_errno($con)) {
echo mysqli_connect_error($con)
}
$name = mysqli_real_escape_string($con, $_POST['name']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$iq = "SELECT*FROM userscms WHERE name='".$name."' AND password='".$password."' LIMIT 1";
$q = mysqli_query($iq);
if (mysqli_num_rows($q) == 1) {
$_SESSION['login'] = $name;
echo "<script> window.location = 'website locatie'; </script>";
} else {
echo "Fout wachtwoord of gebruikersnaam";
}
?>
Toevoeging op 15/07/2014 18:23:21:
Hij weergeeft alleen de style
Bas IJzelendoorn op 13/07/2014 19:14:12:
Het * moeten spaties omheen.
En waar is de foutafhandeling?
Gewijzigd op 15/07/2014 18:34:40 door - SanThe -
Waarom regel 9 en 10?
Overigens zie ik het nut niet in om mysqli_real_escape_sting op een wachtwoord los te laten.
Een wachtwoord hoor je namelijk gecodeerd op te slaan in een database.
Kijk bv. naar bcrypt.
Overigens zie ik het nut niet in om mysqli_real_escape_sting op een wachtwoord los te laten.
Een wachtwoord hoor je namelijk gecodeerd op te slaan in een database.
Kijk bv. naar bcrypt.
En voor een password die je gehashed op wilt slaan in het niet nodig om deze nog door mysql(i)_real_escape_string() te halen. De output zelf kan al geen schadelijke tekens meer bevatten.
Ik heb de code weer veranderd en nu doet hij hetzelfde als eerst, hij zecht dat het altijd fout is dit is mijn code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$con = mysqli_connect('host','naam','ww','dbnaam');
if (mysqli_error($con)) {
echo mysqli_error($con);
}
$name = $_POST['name'];
$password = $_POST['password'];
$iq = "SELECT * FROM userscms WHERE name='".$name."' AND password='".$password."' LIMIT 1";
$q = mysqli_query($iq);
if (mysqli_num_rows == 1) {
$_SESSION['login'] = $_POST['name'];
echo "<script> window.location = 'Website locatie'; </script>";
} else {
echo "Fout wachtwoord of gebruikersnaam";
}
?>
$con = mysqli_connect('host','naam','ww','dbnaam');
if (mysqli_error($con)) {
echo mysqli_error($con);
}
$name = $_POST['name'];
$password = $_POST['password'];
$iq = "SELECT * FROM userscms WHERE name='".$name."' AND password='".$password."' LIMIT 1";
$q = mysqli_query($iq);
if (mysqli_num_rows == 1) {
$_SESSION['login'] = $_POST['name'];
echo "<script> window.location = 'Website locatie'; </script>";
} else {
echo "Fout wachtwoord of gebruikersnaam";
}
?>
mysqli_num_rows is wel een functie, dus je moet wel aangeven voor welke query deze moet gelden.
O thx, helemaal over het hoofd gezien
Denk je ook aan encryptie van je wachtwoord en bescherming tegen SQL-injection??
Foutafhandeling op $q is ook wel aangeraden om toe te voegen.
Foutafhandeling op $q is ook wel aangeraden om toe te voegen.
Ik heb een fouthandeling ingebouwd en er gaat inderdaad iets fout maar met de connect is niets mis
Wat gaat er fout? Relevante code?
Weet ik niet ik heb er iets bij gezet dat de error moet weergeven maar dat doet hij dan weer niet =(
Toevoeging op 17/07/2014 19:42:02:
Dit is de code nu :
Toevoeging op 17/07/2014 19:42:02:
Dit is de code nu :
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
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
<?php
define('DEBUG_MODE',true);
$con = mysqli_connect('host','naam','ww','db_naam');
if (mysqli_error($con)) {
echo mysqli_error($con);
}
$name = mysqli_real_escape_string ($con,$_POST['name']);
$password = $_POST['password'];
$iq = "SELECT * FROM userscms WHERE name='".$name."' AND password='".$password."' LIMIT 1";
$q = mysqli_query($con, $iq);
$fouth = $con->query($iq);
if (!$fouth) {
echo "Er is ergens een fout opgetreden <BR />";
if (DEBUG_MODE) {
echo $con->error() . "<BR />" . $ig;
}
}
if (mysqli_num_rows($q) == 1) {
$_SESSION['login'] = $_POST['name'];
echo "<script> window.location = 'Website locatie'; </script>";
} else {
echo "Fout wachtwoord of gebruikersnaam";
}
?>
define('DEBUG_MODE',true);
$con = mysqli_connect('host','naam','ww','db_naam');
if (mysqli_error($con)) {
echo mysqli_error($con);
}
$name = mysqli_real_escape_string ($con,$_POST['name']);
$password = $_POST['password'];
$iq = "SELECT * FROM userscms WHERE name='".$name."' AND password='".$password."' LIMIT 1";
$q = mysqli_query($con, $iq);
$fouth = $con->query($iq);
if (!$fouth) {
echo "Er is ergens een fout opgetreden <BR />";
if (DEBUG_MODE) {
echo $con->error() . "<BR />" . $ig;
}
}
if (mysqli_num_rows($q) == 1) {
$_SESSION['login'] = $_POST['name'];
echo "<script> window.location = 'Website locatie'; </script>";
} else {
echo "Fout wachtwoord of gebruikersnaam";
}
?>
Waarom gebruik je $con->query (OOP-stijl) terwijl je daarboven de procedurele mysqli_query() gebruikt?
Ik heb dit dit van internet gekopieërd (databases in php is niet mijn sterkste kant)
Je moet wel weten wat je script uiteindelijk doet. Met lukraak code kopiëren schiet je weinig op.
Je mengt nu twee verschillende MySQLfuncties-methodes met elkaar, en dat werkt niet!
Je mengt nu twee verschillende MySQLfuncties-methodes met elkaar, en dat werkt niet!
Ok
Toevoeging op 17/07/2014 19:53:14:
Wat voor fouthandeling kan ik het beste erin zetten?
Toevoeging op 17/07/2014 19:53:14:
Wat voor fouthandeling kan ik het beste erin zetten?
Vergeet de $con-> variabelen, en richt je op mysqli_... ()
Gewijzigd op 17/07/2014 19:58:44 door - Ariën -
Ok ik moet dus mysqli_..... dat gebruiken
Toevoeging op 17/07/2014 19:59:35:
Thx
Toevoeging op 17/07/2014 19:59:35:
Thx




