Ik heb de php tutorial doorgelopen en de MySQL tutorial en ik ben er uiteraard wijzer van geworden maar ik loop nu nog steeds vast op dit probleem.
Dit is wat ik zelf heb geschreven;

De login pagina;


<table width="150px" border="0" align="center">
<tr>
<form method="post" action="logincheck.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>Login</strong></td>
</tr>
<tr>
<td width="78">Gebruikersnaam</td>
<td width="6">:</td>
<td width="294"><input name="myusername" type="text" id="myusername"></td>
</tr>
<tr>
<td>Wachtwoord</td>
<td>:</td>
<td><input name="mypassword" type="password" id="mypassword"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>


Je word dus d.m.v de action door gestuurd naar logincheck.php;


<?php
$host="localhost";
$username="root";
$password="";
$db_name="test";
$tbl_name="members";

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];


$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1)
{
session_register("myusername");
session_register("mypassword");
header("location:succes.php");
}
else
{
echo "<center><strong style='color:red;'>Verkeerde gebruikersnaam en/of wachtwoord!</strong></center>";
}
?>


Hier kijkt die dus of het klopt dan ga je door naar de pagina succes.php;

<?php
session_start();
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

if(!session_is_registered(myusername))
{
header("location:link.php");
}
?>



<?php

$conn = mysql_connect("localhost", "root");

if (!$conn)
{
echo "Kan niet vebinden met de DB: " . mysql_error();
}

if (!mysql_select_db("test"))
{
echo "Kan de database niet selecteren: " . mysql_error();
}

$sql = "SELECT * FROM members WHERE link ";

$result = mysql_query($sql);

if (!$result)
{
echo "Kan de query niet uitvoeren" . mysql_error();
}

if (mysql_num_rows($result) == 0)
{
echo "Niks gevonden";;
}

while ($row = mysql_fetch_assoc($result))
{
echo $row["link"];
}

mysql_free_result($result);

?>


Ik krijg dus. Niks gevonden. Wat doe ik verkeerd?

Ik wil graag als iemand is ingevolgd dat hij/zij een link krijgt naar een andere website. De gebruikers maak ik zelf aan + die link. Dit wordt opgeslagen in een database. username, password, link .

Ik wil van de ingelogd persoon de juiste link zien, althans dat is de bedoeling.

[size=xsmall]Toevoeging op 30/03/2012 13:10:09:[/size]

Joey Schroder op 30/03/2012 13:05:59

Ik heb de php tutorial doorgelopen en de MySQL tutorial en ik ben er uiteraard wijzer van geworden maar ik loop nu nog steeds vast op dit probleem.
Dit is wat ik zelf heb geschreven;

De login pagina;


<table width="150px" border="0" align="center">
<tr>
<form method="post" action="logincheck.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>Login</strong></td>
</tr>
<tr>
<td width="78">Gebruikersnaam</td>
<td width="6">:</td>
<td width="294"><input name="myusername" type="text" id="myusername"></td>
</tr>
<tr>
<td>Wachtwoord</td>
<td>:</td>
<td><input name="mypassword" type="password" id="mypassword"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>


Je word dus d.m.v de action door gestuurd naar logincheck.php;


<?php
$host="localhost";
$username="root";
$password="";
$db_name="test";
$tbl_name="members";

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];


$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1)
{
session_register("myusername");
session_register("mypassword");
header("location:succes.php");
}
else
{
echo "<center><strong style='color:red;'>Verkeerde gebruikersnaam en/of wachtwoord!</strong></center>";
}
?>


Hier kijkt die dus of het klopt dan ga je door naar de pagina succes.php;

<?php
session_start();
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

if(!session_is_registered(myusername))
{
header("location:link.php");
}
?>



<?php

$conn = mysql_connect("localhost", "root");

if (!$conn)
{
echo "Kan niet vebinden met de DB: " . mysql_error();
}

if (!mysql_select_db("test"))
{
echo "Kan de database niet selecteren: " . mysql_error();
}

$sql = "SELECT * FROM members WHERE link ";

$result = mysql_query($sql);

if (!$result)
{
echo "Kan de query niet uitvoeren" . mysql_error();
}

if (mysql_num_rows($result) == 0)
{
echo "Niks gevonden";;
}

while ($row = mysql_fetch_assoc($result))
{
echo $row["link"];
}

mysql_free_result($result);

?>


Ik krijg dus. Niks gevonden. Wat doe ik verkeerd?

Ik wil graag als iemand is ingelogd dat hij/zij een link krijgt naar een andere website. De gebruikers maak ik zelf aan + die link. Dit wordt opgeslagen in een database. username, password, link .

Ik wil van de ingelogd persoon de juiste link zien, althans dat is de bedoeling.


session_register en session_is_registered zijn antiek waarom gebruik je ze nog? Escape je variabelen in query, je mist session_start op sommige paginas. Onnodig kopieeren van variabelen. $sql = "SELECT * FROM members WHERE link "; wat is dit in je WHERE? haal dat weg.
Ok ik heb die sessions veranderd en op elke pagina gezet.

Wat bedoel je met onnodig kopieeren van variabelen.

Die WHERE heb ik er staan omdat ik graag wil dan alleen de link moet worden weergegeven. Maar hij pakt nu de eerste link in de table en niet de link die bij de login gegevens horen.
probeer goede foutafhandeling in te bouwen, gebruik geen wildcard * maar schrijf voluit wat je wilt hebben in je query overigens klopt je query voor geen meter want je doet WHERE link als je dit naar normale vraagtaal zou omzetten krijg je

selecteer alles vanuit memberstable waar link.

dat is geen goede zin toch? Juist! daarom krijg je ook niks. maar stel dat je zoiets hebt.

SELECTEER naam, password, link VANUIT memberstable WAAR gebruiker is gelijk aan gebruiker(ingelogd).

dan kom je al heel gauw rond dit scriptje, ik heb het niet getest helemaal en ik denk dat het ook niet gaat werken bij jou omdat ik niet weet of alle dingen wel zo kloppen maar je hebt nu wel een goede opzet :)

<?php

$conn = mysql_connect("localhost", "root");

if (!$conn)
{
echo "Kan niet vebinden met de DB: " . mysql_error();
}

if (!mysql_select_db("test"))
{
echo "Kan de database niet selecteren: " . mysql_error();
}

$sql = "SELECT naam, password, link
FROM members
WHERE naam='".$_SESSION['naam']."'
";

$result = mysql_query($sql);

if ($result === false){

echo "Kan de query niet uitvoeren";
}

if (mysql_num_rows($result) == 0){

echo "Niks gevonden";
}

while ($row = mysql_fetch_assoc($result)){

echo $row["link"];
}

?>
Ja hoe moet de database weten welke link bij welke gebruiker hoort? Dan moet je in de where iets zetten wat terugslaat op de gebruiker..


$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];


$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);


is hetzelfde als


$_POST['myusername'] = mysql_real_escape_string(stripslashes($_POST['myusername']));
$_POST['mypassword'] = mysql_real_escape_string(stripslashes($_POST['mypassword']));


Als ik jou was zal ik wel eerst kijken of ze wel gepost zijn. Met bijv. isset of != ''
Gerhard l op 30/03/2012 13:20:51

Ja hoe moet de database weten welke link bij welke gebruiker hoort? Dan moet je in de where iets zetten wat terugslaat op de gebruiker..


zie query in mijn vb :)
Reshadd Farid ik heb jouw script overgenomen en zoals je al zij het zal niet werken maar een opzetje. Dat klopt het werkt ook niet. Want ik krijg nu dit;

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\Joey\succes.php on line 45

dat is op
<?php

if ($result === false){

echo "Kan de query niet uitvoeren";
}

if (mysql_num_rows($result) == 0){

echo "Niks gevonden";
}

while ($row = mysql_fetch_assoc($result)){

echo $row["link"];
}


?>

Bij de eerste if. Maar het zal waarschijnlijk te maken hebben met de
<?php
$sql = "SELECT username, password, link
FROM members
WHERE naam='".$_SESSION['naam']."'
";
?>

gerhard l
Hoe kan ik dat kijken of er wel wat in de POST zit?
Bekijk je database structuur, heb je de velden wel die Reshadd als voorbeeld gaf? echo '<pre>'; print_r($_SESSION); zit er in de sessie alles wat je verwacht?? Echo je mysql_error
Ja dat heb ik net aagepast wat Reshadd mij gaf.

De gewenste informatie zit in de POST.

Het gaat gewoon fout van ;

<?php

$sql = "SELECT username, password, link
FROM members
WHERE naam='".$_SESSION['naam']."'
";

$result = mysql_query($sql);

if ($result === false){

echo "Kan de query niet uitvoeren";
}

if (mysql_num_rows($result) == 0){

echo "Niks gevonden";
}

while ($row = mysql_fetch_assoc($result)){

echo $row["link"];
}
?>
er moet een else achter je if ($result === false){

zoiets

<?php

$sql = "SELECT username, password, link
FROM members
WHERE naam='".$_SESSION['naam']."'
";

$result = mysql_query($sql);

if ($result === false){

echo "Kan de query niet uitvoeren";
}

else {

if (mysql_num_rows($result) == 0){

echo "Niks gevonden";
}

while ($row = mysql_fetch_assoc($result)){

echo $row["link"];
}
}
?>
Dat haalt niks uit omdat ik nog steeds met die foutocdes zit.

Reageren