Beste iedereen.

Ik hoop dat hier een paar php freaks zijn die mij kunnen helpen

Ik beheer een kleine website voor onze fotoclub. Nu is de webhosting in eens over gegaan naar php7.
Hier door werken enkele scripts niet meer ik heb de meeste weer goed gekregen door aan passingen. Maar net de inlog script voor leden werkt niet meer.
Mijn mysql data base is goed daar worden wel gegeven uit opgehaald op een andere test pagina en voor de portfolio's


Na het inloggen komt er gelijk een fout.
Hier door komt er ook een stuk van het scrip in beeld wat normaal niet zou kunnen
Dit zie ik in beeld staan:

Fout: ingevoerd gebruikersnaam klopt niet!</p>";
}else{ //mailadres staat in de database, we gaan verder!
while($record = mysqli_fetch_object($ophalen)){
$password_db = $record->wachtwoord;

}


---------------------------------------
Ik weet niet of het nu wel mag maar hier onder mijn script wat is er fout?

<?
session_start();




if ($_POST['submit']=="login")
{
include "log.php";

$gebrnaam ==(strtolower ( $_POST['gebruikersnaam']));

$sql = "SELECT * FROM `leden` WHERE `gebruikersnaam` = '".$_POST['gebruikersnaam']."'";

$ophalen = mysqli_query($con, $sql);
$aantal = mysqli_num_rows($ophalen); // aantal records met verstuurd emailadres tellen

if($aantal == 0){

echo"<p>Fout: ingevoerd gebruikersnaam klopt niet!</p>";

}else{

//mailadres staat in de database, we gaan verder!

while($record = mysqli_fetch_object($ophalen)){
$password_db = $record->wachtwoord;

}

//password nu vergelijken met ingevoerd password

if($password_db != $_POST['wachtwoord']){

echo"<p>Verkeerd wachtwoord!</p>";

}else{

//email staat in database en password klopt, sessie starten!

while($record = mysqli_fetch_object($ophalen)){
$id = $record->id;}

//sessie opstarten

$idlog=(strtolower ($_POST['gebruikersnaam']));


$_SESSION["idlog"]= $idlog;

if ($idlog == "admin"){

echo "<meta http-equiv=REFRESH content=0;url=adm.php?idlog=". $_POST['gebruikersnaam'] . " target=main> ";

}
else{
echo "gelukt ";

$datenu=date("d-m-y");

mysqli_query ($con, "UPDATE leden SET datenu='$datenu' WHERE gebruikersnaam='$idlog'");

echo "<meta http-equiv=REFRESH content=0;url=loginstart.php?idlog=". $_POST['gebruikersnaam'] . " target=main> ";
}

}
}

}

?>

<head>
<link a href="instel.css"rel="stylesheet"type="text/css" />
</head>
<body class=body>

<?php include("top.php");
?>


<table align=center width=1100><tr><font color=white size=4 face=calibri>
<td align=center >



<font color=white size=4 face=calibri>



<form method="post" action="login.php">
<table width=300 border=1 cellpadding=3 cellspacing=1 align=center >
<tr>

<td colspan=2>
<font color=white size=4 face=calibri> Login leden fotoclub</td>
</tr><tr>
<td align=right>
<font color=white size=4 face=calibri> Loginnaam:
</td>

<td> <input type=text name=gebruikersnaam> </td></tr><tr>
<td align=right>
<font color=white size=4 face=calibri>&nbsp Wachtwoord:</td
>
<td> <input type=password name=wachtwoord></td></tr><tr>

<td colspan=2 align=center><br> <input type="submit" name="submit" value="login">
</td></tr></table>
</form>

<br><BR>
Ik weet mijn login gegevens niet meer? <a href=vergeten.php target=home>Klik hier</a>
</td>
Ja oke dat snap ik maar alle wachtwoorden moeten worden om gezet.. Maar Hier zal toch wel eerst het voorste gedeelte van de gebruikersnaam goed moeten worden verwerkt?

Nu is de gebruikersnaam vast gesteld lijkt me ??

Of zie ik dit verkeert?
Als er wordt voldaan aan 1 gevonden record met de juiste gebruikersnaam, dan vindt de controle op het wachtwoord plaats. Dus de gebruikernaam klopt verder. Aan jouw om een scriptje te maken om eenmalig de wachtwoorden om te zetten.
Heb dit al gedaan voor de gebruiker gilbert en de sleutel in de mysql geplakt op de juiste plek onder wachtwoord.
Toch logt het script nog nu nog steeds niet in.. en komt er nog te staan verkeerde wachtwoord
Dan moet je even debuggen wat $password_db als inhoud biedt, en wat er in password_hash($_POST['wachtwoord'], PASSWORD_DEFAULT) staat (lijn 36).

Debuggen is de eerste oplossing als je merkt dat variabelen niet de juiste waarden geven.
De inhoud van $password_db klopt wel met dat er in de data base staat..

pass uit db... rox

Verkeerd wachtwoord!

Heb het hier met en zonder sleutel het wachtwoord in de data base gezet...


Als rox letterlijk in de databse staat, dan gaat dat niet werken ;-)
Ik heb het nu goed.. De gebruiken gilbert kan inloggen in de site.. Zijn wachtwoord word nu herkent..

Maar probleem blijft nog steeds .. Er staat nu dan de gebruiker gilbert is zoals eerder de variabel werd op gegeven door :
$naam = 'Gilbert';

$gebrnaam = strtolower(trim($naam));

Nu kan een andere gebruiker niet inloggen nog?
De naam wordt normaal altijd aan de hand van een $_POST-request opgehaald. Dan vindt de validatie plaats of de gebruiker bestaat, en dan pas vindt de controle van het wachtwoord plaats.

Normaal hoor je gebruiker niet hard-coded in je script te zetten. Ik deed dat enkel vanwege mijn test-case. Dan wil je alles zo compact mogelijk hebben. (plus het feit dat er de sandbox geen mysql-support heeft)
Ben nog even aan het proberen geweest..
Het lijkt hier fout mee te gaan.

//$gebrnaam = strtolower(mysqli_real_escape_string(trim($_POST['gebruikersnaam'])));
deze regel heb ik even vervangen door:
$gebrnaam = strtolower($_POST['gebruikersnaam']);

Dan werkt het wel .. En is de gebruikersnaam te lezen.. en kunnen meerdere namen inloggen .
Ik zou sowieso wel mysqli_real_escape_string gebruiken, nu ben je vatbaar voor SQL-injection. Ik zie wel dat de connectie-parameter mist.


<?php
$gebrnaam = strtolower(mysqli_real_escape_string($con,trim($_POST['gebruikersnaam'])));
?>

Reageren