functie returns niks
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
require_once 'functie.php';
$function = new functie;
if (isset($_POST['login']))
{
echo $function->checkLogin($_POST['email'],$_POST['wachtwoord']);
}
?>
require_once 'functie.php';
$function = new functie;
if (isset($_POST['login']))
{
echo $function->checkLogin($_POST['email'],$_POST['wachtwoord']);
}
?>
die roep de volgende functie op:
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
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
<?php
public function checkLogin($email,$wachtwoord)
{ // connectie met de database maken
$this->Connect('test');
if (!empty($email)&&!empty($wachtwoord))
{
$query = mysql_query("SELECT * FROM inloggegevens WHERE email='$email'");
while ($row = @mysql_fetch_row($query))
{
if ($wachtwoord==$row[2])
{
$_SESSION['email'] = $row[1];
$_SESSION['type'] = $row[3];
return "Welkom ".$row[1];
}
else
{
return 'Verkeerde wachtwoord ingevoerd. Probeer het nog eens.';
}
}
}
else
{
return 'Vul alle velden correct in AUB.';
}
}
?>
public function checkLogin($email,$wachtwoord)
{ // connectie met de database maken
$this->Connect('test');
if (!empty($email)&&!empty($wachtwoord))
{
$query = mysql_query("SELECT * FROM inloggegevens WHERE email='$email'");
while ($row = @mysql_fetch_row($query))
{
if ($wachtwoord==$row[2])
{
$_SESSION['email'] = $row[1];
$_SESSION['type'] = $row[3];
return "Welkom ".$row[1];
}
else
{
return 'Verkeerde wachtwoord ingevoerd. Probeer het nog eens.';
}
}
}
else
{
return 'Vul alle velden correct in AUB.';
}
}
?>
de database functie die hij eerder in de checkLogin functie gebruikt:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
public function Connect($table)
{
mysql_connect('localhost','root','');
mysql_select_db($table);
}
?>
public function Connect($table)
{
mysql_connect('localhost','root','');
mysql_select_db($table);
}
?>
als ik de functie checkLogin verander in het volgende:
Code (php)
krijg ik wel gewoon die text zichtbaar... waarom werkt dit wel en dat andere niet?
Gewijzigd op 11/05/2012 09:53:57 door Albert de Wit
Gaat je query wel goed? Fouten moet je niet onderdrukken met @.
er was helemaal niets in de database gezet. hij kon dus moeilijk kijken of het emailadres wel bestond... heb het al opgelost door aan het einde een
te zetten
Gewijzigd op 11/05/2012 10:07:31 door Albert de Wit
Dat is niet de oplossing, je kan beter na je query kijken hoeveel rows je terug krijgt. Meer dan 0 is resultaat anders niet gevonden. Maar volgens mij gaat $email zo ook niet werken in je query.
Dat is op zich niet slecht op deze manier, omdat je lege strings en 0 waarschijnlijk niet als geldige input beschouwt. Echter, als $_POST['email'] of $_POST['wachtwoord'] niet bestaan (want niet ingevuld door de gebruiker) dan ga je bij het aanroepen van de functie al in de problemen komen. php zal dan al een foutmelding genereren omdat je variabele probeert te gebruiken die niet bestaan. Check dus altijd eerst of ze bestaan voor je ze gebruikt.
Gerhard l op 11/05/2012 10:12:52:
Dat is niet de oplossing, je kan beter na je query kijken hoeveel rows je terug krijgt. Meer dan 0 is resultaat anders niet gevonden. Maar volgens mij gaat $email zo ook niet werken in je query.
email werkt zo wel in de query hoor ;)
Totdat je database straks leeg is (mysql_injection)
en dat kan ik oplossen door htmlentities() ?
Albert de Wit op 11/05/2012 10:24:26:
als ze niet worden ingevuld is de string dus empty en dus geen hij de else weer die een error weergeeft
Dat is een zeer slecht uitgangspunt. Wat als iemand doelbewust je pagina aanroept zonder die variabele ingevuld? Of als je zelf ooit nog eens een fout maakt en de naam van het veld verkeerd schrijft waardoor het niet meer is wat je eigenlijk wilt.
Altijd alles checken, want gaat er dan eens iets fout (bewust of onbewust) dan kan je er tenminste actie op ondernemen.
Code (php)
1
2
3
2
3
<?
mysql_query("SELECT iets FROM iets WHERE iets = '".mysql_real_escape_string($iets)."'");
?>
mysql_query("SELECT iets FROM iets WHERE iets = '".mysql_real_escape_string($iets)."'");
?>
ok. bedankt! ik zal hem direct gebruiken
Gewijzigd op 11/05/2012 11:34:12 door - SanThe -
Gewijzigd op 11/05/2012 12:12:23 door Chris PHP
ho... ik dacht toch dat mensen geen sessies konden lezen?
Quote:
ho... ik dacht toch dat mensen geen sessies konden lezen?
Lees eens dit stukje: http://www.pfz.nl/wiki/session-hijacking/
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
// session.inc.php
session_start();
ini_set('session.save_path', '/home/sijmen/tmp');
ini_set('session.name', 'hash'); # try to hide the session name..
if (!isset($_SESSION['ip']))
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
if ($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']);
trigger_error("Session Hijacking detected!", E_USER_WARNING);
?>
// session.inc.php
session_start();
ini_set('session.save_path', '/home/sijmen/tmp');
ini_set('session.name', 'hash'); # try to hide the session name..
if (!isset($_SESSION['ip']))
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
if ($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']);
trigger_error("Session Hijacking detected!", E_USER_WARNING);
?>
include bovenstaande script op elke pagina gewoon: