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:

<?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";
}

?>
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.
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.
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:

<?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";
}

?>

[size=xsmall]Toevoeging op 15/07/2014 18:23:21:[/size]

Hij weergeeft alleen de style
Bas IJzelendoorn op 13/07/2014 19:14:12

Het * moeten spaties omheen.


En waar is de foutafhandeling?
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.
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:

<?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";
}

?>
mysqli_num_rows is wel een functie, dus je moet wel aangeven voor welke query deze moet gelden.

Reageren