[PHP] login script probleem

Pagina: 1
Acties:
  • 132 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een simpel inlog script maar er gebeurt iets heel vreemds.. een form verwijst de inlog informatie naar login.php en die lijkt er niet echt iets mee te doen.. het kan ook zijn dat hij gewoon geef output geeft (zelfs een echo geeft niks weer)

Ik heb de onderdelen apart getest en dat werkt allemaal maar afzonderlijk werkt het niet:

PHP:
1
2
3
4
5
6
7
8
<?
session_start();
include 'functions.php';
kerstDBconnect();
$result = confirmUser('jan001','School');
kerstDBclose();
echo $result;
?>


Dit werkt gewoon goed, hij geeft de juiste result terug (0 voor alles goed).

De $_POST variabelen komen ook goed binnen via de form, dit heb ik getest met het volgende script:

PHP:
1
2
3
4
5
<?
echo $_POST['name'];
echo "<BR>";
echo $_POST['pw'];
?>


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
session_start();
include 'functions.php';
if(!$_POST['name'] || !$_POST['pw']){
      die('U heeft een benodigd veld niet ingevuld.');
   }
   $_POST['name'] = trim($_POST['name']);
   kerstDBconnect();
   $result = confirmUser($_POST['name'], $_POST['pw']);
   kerstDBclose();
   echo $result;
?>


Maar met dit script (onderdeel ervan dan) geeft hij die echo bvb niet weer, echo's doen het nergens, de die ook niet.. het kan zijn dat hij de sessies wel goed opslaat (dat kan ik nu niet testen, moet het hier op IE doen |:( m'n moeders laptop, eigen pc niet hier en mag FF of opera niet installen) maar waarom kan ik geen output laten zien?

Acties:
  • 0 Henk 'm!

  • RuudBurger
  • Registratie: Oktober 2003
  • Laatst online: 20-09 21:38
code:
1
if(!$_POST['name'] || !$_POST['pw']){


!isset($_POST['name']) of empty($_POST['name'])...?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat ga ik zo even proberen. Dit zou ook moeten werken volgens mij.

Maar dat geeft nog niet aan waarom ik zelfs meteen na de session_start(); geen echo kan laten weergeven.. enig idee waarom dat niet werkt?

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Heb je geen errors bij die session_start? Dat om een of andere reden geen sessies gestart kunnen worden, en dat PHP er gewoon mee kapt?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
verder zou ik eerst trimmen, en dan pas checken of iets empty is, als iemand een spatie invult neem ik aan dat dit niet als username gezien hoeft te worden

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
CodeCaster schreef op zondag 26 augustus 2007 @ 17:02:
Heb je geen errors bij die session_start? Dat om een of andere reden geen sessies gestart kunnen worden, en dat PHP er gewoon mee kapt?
Dat zou kunnen, maar ik krijg helemaal geen errors, dit is de hele HTML file die gegenereerd wordt:

code:
1
2
3
4
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD>
<BODY></BODY></HTML>


Hoe zou ik erachter komen wat voor error die sessie geeft? :$

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
BasieP schreef op zondag 26 augustus 2007 @ 17:07:
verder zou ik eerst trimmen, en dan pas checken of iets empty is, als iemand een spatie invult neem ik aan dat dit niet als username gezien hoeft te worden
Ok zal ik doen :)

Acties:
  • 0 Henk 'm!

  • XiN-eViL
  • Registratie: Maart 2004
  • Laatst online: 29-08 10:13

XiN-eViL

kzie-nie-veel

Soms staat display_errors op off in je php.ini, of staat error_reporting fout ingesteld in php.ini, waardoor hij geen errors weergeeft, misschien moet je daar eens naar kijken :) .

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Misschien weten jullie dit ook niet, maar ik zit bij een webhost en ik kan iig via de ftp geen php.ini vinden. Kan je ook dingen uit php.ini aanpassen via een webhost of is die voor de algehele server en kan ik daar dus helemaal niks aan doen? Kan ik dat soort instellingen ook met PHP functies instellen (al dan niet temporary)? Of zou error_reporting(E_ALL) dat doen? Dat ga ik zo even testen eerst m'n toetje even opeten.

Acties:
  • 0 Henk 'm!

  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 01-09 14:15

mr_obb

Lakse Perfectionist

Verwijderd schreef op zondag 26 augustus 2007 @ 17:50:
Misschien weten jullie dit ook niet, maar ik zit bij een webhost en ik kan iig via de ftp geen php.ini vinden. Kan je ook dingen uit php.ini aanpassen via een webhost of is die voor de algehele server en kan ik daar dus helemaal niks aan doen? Kan ik dat soort instellingen ook met PHP functies instellen (al dan niet temporary)? Of zou error_reporting(E_ALL) dat doen? Dat ga ik zo even testen eerst m'n toetje even opeten.
http://nl3.php.net/manual/nl/function.ini-set.php

en E_ALL geeft inderdaad alles.

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Dat kan ja, bij een shared hosting kun je zelf uiteraard niet de serverwide geldige php.ini aanpassen.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb met phpinfo() even gekeken en inderdaad staat error_reporting op off. Maar als ik

PHP:
1
error_reporting(E_ALL);


voor de session_start() doe verandert er verder niks. Hij geeft dus ook geen errors.

Overigens staat bij phpinfo() bij alles twee values, local value en master value. Betekent dat dat ik voor mijn host andere values kan aanpassen? Hoe zou ik dat kunnen doen?

Acties:
  • 0 Henk 'm!

  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 01-09 14:15

mr_obb

Lakse Perfectionist

Verwijderd schreef op zondag 26 augustus 2007 @ 18:06:
Ik heb met phpinfo() even gekeken en inderdaad staat error_reporting op off. Maar als ik

PHP:
1
error_reporting(E_ALL);


voor de session_start() doe verandert er verder niks. Hij geeft dus ook geen errors.

Overigens staat bij phpinfo() bij alles twee values, local value en master value. Betekent dat dat ik voor mijn host andere values kan aanpassen? Hoe zou ik dat kunnen doen?
Met ini_set kan je ook display_errors aanpassen. Kijk even naar de link in mijn vorige post.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Er komt nog steeds helemaal niets uit als output, ook geen errors. Hier is het hele script nu:

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
<?
ini_set('error_reporting',E_ALL);
session_start();
include 'functions.php';
if(!isset($_POST['name']) || !isset($_POST['pw'])){
      die('U heeft een benodigd veld niet ingevuld.');
   }
   $_POST['name'] = trim($_POST['name']);
   kerstDBconnect();
   $result = confirmUser($_POST['name'], $_POST['pw']);
   kerstDBclose();
   echo $result;
   if($result == 1){
      die('Deze username bestaat niet in onze database, dubbelcheck uw papiertje en is er 

iets mis, neem dan contact op met de persoon die u uw blaadje heeft gegeven.');
   }
   else if($result == 2){
      die('Incorrect password, probeer het opnieuw.');
   }
   $_POST['name'] = stripslashes($_POST['name']);
   $_SESSION['username'] = $_POST['name'];
   $_SESSION['password'] = $_POST['pw'];
}

?>


Dit zijn de functions:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function kerstDBconnect() {
$username="*****";
$password="*****";
$database="*****";
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
}

function kerstDBclose() {
mysql_close();
}

function checkLogin(){
   if(isset($_SESSION['username']) && isset($_SESSION['password'])){
      if(confirmUser($_SESSION['username'], $_SESSION['password']) != 0){
         unset($_SESSION['username']);
         unset($_SESSION['password']);
         return false;
      }
      return true;
   }
   else{
      return false;
   }
}

function confirmUser($username, $password){
   if(!get_magic_quotes_gpc()) {
    $username = addslashes($username);
   }
   $q = "SELECT password FROM UserDB WHERE username = '$username'";
   $result = mysql_query($q);
   if(!$result || (mysql_numrows($result) < 1)){
      return 1;
   }
   $dbarray = mysql_fetch_array($result);
   $dbarray['password']  = stripslashes($dbarray['password']);
   $password = stripslashes($password);
   if($password == $dbarray['password']){
      return 0;
   }
   else{
      return 2;
   }
}


Hoe kan het dat hij nog helemaal niks geeft, ook geen error terwijl ik die error_reporting wel heb ingesteld? Ik heb nog even getest of hij die ook daadwerkelijk instelt met dit:

PHP:
1
2
3
<?
if (!ini_set('error_reporting',E_ALL)) { echo "Kan niet instellen!"; } else { echo "Kan wel instellen"; }
?>


Iemand nog een idee? Ik verwacht eigenlijk wel dat hij de sessie aanmaakt maar ik snap gewoon niet waarom ik geen output meer kan maken. Ik ga nu even testen of de sessie wel is gemaakt.

Acties:
  • 0 Henk 'm!

  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 01-09 14:15

mr_obb

Lakse Perfectionist

PHP:
1
ini_set('display_errors',true);

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ah.

Als ik nu dit doe:

PHP:
1
2
3
4
5
6
7
<?
if (!ini_set('error_reporting',E_ALL)) { echo "Kan niet instellen!"; } else { echo "Kan wel 
instellen"; }
echo "<BR>";
if (!ini_set('display_errors',true)) { echo "Kan niet instellen!"; } else { echo "Kan wel 
instellen"; }
?>


Dan geeft hij bij de tweede aan dat ik die niet kan instellen... wtf? Waarom mag ik dat niet instellen? Hoe moet ik dan ooit goed debuggen?

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Verwijderd schreef op zondag 26 augustus 2007 @ 18:38:
Ah.

Als ik nu dit doe:

PHP:
1
2
3
4
5
6
7
<?
if (!ini_set('error_reporting',E_ALL)) { echo "Kan niet instellen!"; } else { echo "Kan wel 
instellen"; }
echo "<BR>";
if (!ini_set('display_errors',true)) { echo "Kan niet instellen!"; } else { echo "Kan wel 
instellen"; }
?>


Dan geeft hij bij de tweede aan dat ik die niet kan instellen... wtf? Waarom mag ik dat niet instellen? Hoe moet ik dan ooit goed debuggen?
Door xampp te downloaden en lokaal te devven?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja, ok. Dat is natuurlijk wel zo. Maar hoe kom ik er dan achter waarom ik na session_start geen output meer kan geven? Gewoon alle instellingen van de php van mijn webhost copy-en en van daaruit proberen?

Acties:
  • 0 Henk 'm!

Verwijderd

Zodra je xampp hebt gedownload staan de instellingen al goed om lokaal te devven.
Bovendien kan je dan wél error_reporting(E_ALL) doen, waarna je zou kunnen zien wat de fout is.

Check wel via de phpinfo van jouw host welke PHP hij heeft, PHP4 of 5, dan kun je jouw xampp daarop afstemmen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja ik weet dat de instellingen goed staan bij de standaard xampp maar ik moet de instellingen van m'n webhost naast de dingen voor debuggen wel hetzelfde hebben bij xampp voor een juiste simulatie van mijn webhost...

Maar niemand heeft een idee waardoor dit fout gaat? Wat wel heel vreemd is is dat een bijna soortgelijk script die in de hoofd httpdocs dit staat het wel gewoon doet, het kan daar niet iets mee te maken hebben? :$ Ik post morgen die andere ook wel, misschien dat jullie een essentieel verschil zien maar ik zie het in ieder geval niet.

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 09:34
Gooi eens een echo voor en na kerstDBconnect(); (regel 8 van je originele script), een simpel echo "regel 7"; / echo "regel 9" volstaat wel. Je surpressed output in je DB connector, op zich een verstandige maatregel maar ik vraag me af of'ie bij een crash wel verdergaat naar die die() erachter.

Mocht dat het nog niet fixen net zolang echo's blijven toevoegen tot je precies weet waar de fout zit.. Dat of de debugger aanjopen natuurlijk :+

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
De accolade op regel 24 van het 1e script in Verwijderd in "[PHP] login script probleem" hoort nergens bij. Verder is je indenting niet consistent.

{signature}


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

http://www.php.net/manual...nc.php#ini.display-errors
Opmerking: Although display_errors may be set at runtime (with ini_set()), it won't have any affect if the script has fatal errors. This is because the desired runtime action does not get executed.
Ik weet niet of je een Apache server hebt maar misschien kan je het aanpassen in de .htaccess. Dit is meestal wel mogelijk in shared hosts.
code:
1
php_flag display_errors on


Als dit niet mogelijk is dan moet je hoster eens mailen, het is namelijk van de zotte dat je dit soort instellingen niet zelf kan instellen. :)

[ Voor 13% gewijzigd door LuCarD op 27-08-2007 09:25 ]

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hehe, voutloos, mijn script was het dus niet helemaal. Ik heb de indenting consistent gemaakt en die accolade verwijderd en het kwam dus door die accolade. Heel erg bedankt!

Ik heb binnen 2 week een nieuwe computer en dan ga ik wel met xampp werken, krijg hem hier niet meer aan de praat.
Pagina: 1