functie returns niks

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Albert de Wit

Albert de Wit

11/05/2012 09:53:10
Quote Anchor link
ik roep een functie op 'checkLogin' alleen returnt hij niks.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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']);
}

?>


die roep de volgende functie op:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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.';
    }
  }

?>


de database functie die hij eerder in de checkLogin functie gebruikt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
public function Connect($table)
  {

    mysql_connect('localhost','root','');
    mysql_select_db($table);
  }

?>


als ik de functie checkLogin verander in het volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php  
public function checkLogin($email,$wachtwoord)
  {

    return 'Functie aangeroepen';
  }

?>


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
 
PHP hulp

PHP hulp

28/11/2024 21:01:17
 
Gerhard l

gerhard l

11/05/2012 10:05:16
Quote Anchor link
Gaat je query wel goed? Fouten moet je niet onderdrukken met @.
 
Albert de Wit

Albert de Wit

11/05/2012 10:07:05
Quote Anchor link
ik heb mn domme fout al :D

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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
return 'Emailadres bestaat niet';
?>

te zetten
Gewijzigd op 11/05/2012 10:07:31 door Albert de Wit
 
Gerhard l

gerhard l

11/05/2012 10:12:52
Quote Anchor link
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.
 
Erwin H

Erwin H

11/05/2012 10:17:58
Quote Anchor link
Kijk uit met de manier waarop je nu je checks doet. In de functie heb je staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if (!empty($email)&&!empty($wachtwoord))
?>

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.
 
Albert de Wit

Albert de Wit

11/05/2012 10:24:26
Quote Anchor link
als ze niet worden ingevuld is de string dus empty en dus geen hij de else weer die een error weergeeft


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 ;)
 
Gerhard l

gerhard l

11/05/2012 10:25:21
Quote Anchor link
Totdat je database straks leeg is (mysql_injection)
 
Albert de Wit

Albert de Wit

11/05/2012 10:30:38
Quote Anchor link
en dat kan ik oplossen door htmlentities() ?
 
Erwin H

Erwin H

11/05/2012 10:37:13
Quote Anchor link
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.
 
Gerhard l

gerhard l

11/05/2012 10:38:22
Quote Anchor link
mysql_real_escape_string() gebruiken op je variabelen in je query.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
mysql_query("SELECT iets FROM iets WHERE iets = '".mysql_real_escape_string($iets)."'");
?>
 
Albert de Wit

Albert de Wit

11/05/2012 10:43:28
Quote Anchor link
ok. bedankt! ik zal hem direct gebruiken
 
- SanThe -

- SanThe -

11/05/2012 11:33:53
Quote Anchor link
Waarom in de SELECT alleen de $email en niet ook $wachtwoord? Dan heb je in één keer wat je zoekt. De while() is overbodig, ook zoals het nu is.
Gewijzigd op 11/05/2012 11:34:12 door - SanThe -
 
Chris PHP

Chris PHP

11/05/2012 12:11:29
Quote Anchor link
Ik raad niet aan om emailadressen in sessies te bewaren, valt onder gevoelige informatie.
Gewijzigd op 11/05/2012 12:12:23 door Chris PHP
 
Albert de Wit

Albert de Wit

12/05/2012 10:09:14
Quote Anchor link
ho... ik dacht toch dat mensen geen sessies konden lezen?
 
Bart V B

Bart V B

12/05/2012 10:12:22
Quote Anchor link
Quote:
ho... ik dacht toch dat mensen geen sessies konden lezen?


Lees eens dit stukje: http://www.pfz.nl/wiki/session-hijacking/
 
Albert de Wit

Albert de Wit

12/05/2012 15:43:19
Quote Anchor link
werkt het deel dat eronder staat?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>

include bovenstaande script op elke pagina gewoon:





Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
include 'session.inc.php';
// ..
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.