abonnement Unibet Coolblue Bitvavo
pi_42960797
Excuus.. toch wel
pi_42962261
Ik ben nu bezig met een scriptje te schrijven, maar ik kom er maar niet uit. Hopelijk kan hier iemand helpen.

Ik heb een login script dat gegevens uit mysql haalt en daarvan een sessie maakt. Het probleem is dat de sessie niet wordt onthouden. Als ik namelijk weer naar login.php ga dan kan ik weer inloggen en dat wil ik op dat moment niet want ik hoor al ingelogd te zijn. Sessie wordt opgeslagen zodra ik inlog maar als ik dan login.php weer open of naar een andere pagina ga is die alweer verwijderd.

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
<?php
session_start();
   include("config/mysql.php");
   include("config/util.php");

if(isset($_POST['gebruiker']) && isset($_POST['wachtwoord'])) {

    $_POST['gebruiker'] = make_safe($_POST['gebruiker']);
    $_POST['wachtwoord'] = make_safe($_POST['wachtwoord']);

    $result = mysql_query("SELECT * 
            FROM gebruiker
            WHERE username='".$_POST['gebruiker']."'
            AND hash=PASSWORD('".$_POST['wachtwoord']."')"
    ) or die(mysql_error());
   
    if(mysql_num_rows($result) == 1) {
       $regel = mysql_fetch_array($result);
       $_SESSION['username'] = $regel['username'];   
       $_SESSION['voornaam'] = $regel['voornaam'];
       $_SESSION['achternaam'] = $regel['achternaam'];
       $_SESSION['level'] = $regel['ulevel'];

       $inhoud="Ingelogd!"; 
    } else {
       // Foute login
       $inhoud="Foute login!";
    }
} else {
    $inhoud = 
   '<form name="loginform" method="post">
   Gebruikersnaam: <input type="text" name="gebruiker"><br>
   Wachtwoord: <input type="password" name="wachtwoord"><br>
   <input type="submit" value="Login" name="submit">
   </form>';
}

?>
<?php 
echo $inhoud;
echo $regel['username'];
?>


Iemand die kan helpen?
pi_42962425
Misschien roep je op de andere pagina's geen session_start(); aan?
Probeer anders na iedere session_start(); een print_r($_SESSION), dan kun je zien of je sessie variabelen zijn meegegeven, zoniet dan worden je sessies misschien niet goed opgeslagen.
Ik ben best bereid om toe te geven dat ik niet altijd gelijk heb, maar ik heb het nooit bij het verkeerde eind
pi_42962703
Kijk eens aan Met print_r($_SESSION); werkt die inderdaad, alleen jammer dat ik dan nog steeds de inlog formulier krijg. Bedankt voor je hulp in ieder geval. Ik was hier al best lang mee bezig vandaag en nu is het binnen een paar minuten opgelost.
pi_42963156
hm, heb je dan niet toevallig je session support op disabled staan?
staat in de phpmyinfo();
Ik ben best bereid om toe te geven dat ik niet altijd gelijk heb, maar ik heb het nooit bij het verkeerde eind
pi_42963238
Nope,

Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx

Staat trouwens niet op een eigen server ofzo. Ik heb een net als alle andere studenten een diskruimte gekregen waar ik dit soort opdrachten op kan zetten, maar denk je dat het met de code zelf goed zit?
pi_42963399
Naja, code ziet er goed uit...
Je kan ook nog session_register($regel['username']) proberen. Misschien werkt dat wel.
Ik ben best bereid om toe te geven dat ik niet altijd gelijk heb, maar ik heb het nooit bij het verkeerde eind
pi_42964086
Zodra ik session_register($regel['username']) invul in plaats van $_SESSION['username'] = $regel['username']; krijg ik de opgeslagen sessie niet meer te zien (met print_r($_SESSION); dus). En het probleem blijft er dan nog, want de login form komt dan weer terwijl ik al ingelogd ben.
pi_42965525
Ah op die fiets... Ik dacht dat je de sessies niet goed doorkreeg...
Krijg je dan wel de $_POST waarden goed door? Blijkbaar komtie dan niet hier voorbij: if(isset($_POST['gebruiker']) && isset($_POST['wachtwoord'])) {
kan je ook zien met print_r($_POST);

Bij mij werkt je script trouwens wel gewoon...
Ik ben best bereid om toe te geven dat ik niet altijd gelijk heb, maar ik heb het nooit bij het verkeerde eind
pi_42966304
session_register() en $_SESSION dien je nooit door elkaar te gebruiken. Dit staat ook in de manual
  donderdag 26 oktober 2006 @ 21:35:04 #41
120139 freiss
Hertog Jan :9~
pi_42966494
quote:
Op donderdag 26 oktober 2006 19:32 schreef Xevor het volgende:
Ik ben nu bezig met een scriptje te schrijven, maar ik kom er maar niet uit. Hopelijk kan hier iemand helpen.

Ik heb een login script dat gegevens uit mysql haalt en daarvan een sessie maakt. Het probleem is dat de sessie niet wordt onthouden. Als ik namelijk weer naar login.php ga dan kan ik weer inloggen en dat wil ik op dat moment niet want ik hoor al ingelogd te zijn. Sessie wordt opgeslagen zodra ik inlog maar als ik dan login.php weer open of naar een andere pagina ga is die alweer verwijderd.


[ code verwijderd ]

Iemand die kan helpen?
Is toch ook wel logisch, of zie ik het verkeerd ? Als je weer terug gaat naar login.php, zijn de POST-velden niet meer gevuld, en dus krijg je weer het inlogscherm te zien.
HJ 14-punt-gift.
Lijst met rukmateriaal!
pi_42976810
Kan iemand mij uitleggen waarom de onderstaande code niet werkt? zie ik wat over het hoofd?

1
2
3
4
5
6
7
8
9
10
11
12
<?php
//variabelen
$zoek_klantnaam = $_POST['zoek_klantnaam'];
$zoek_postcode = $_POST['zoek_postcode'];
$zoek_klantnummer = $_POST['zoek_klantnummer'];


  
//query
  
$query = "SELECT * FROM Klant WHERE Klantnaam LIKE '%$zoek_klantnaam%' OR Postcode = '$zoek_postcode' OR Klantnummer = '$zoek_klantnummer'";
  
$result = mysql_query($query)
       or die (
"Kan opdracht niet uitvoeren");
?>


Ik heb dus 3 zoekvelden waar je op kan zoeken:

- Postcode
- Klantnummer
- Klantnaam

* Ze hoeven niet allemaal ingevuld te worden.
* de postcode en klantnummer moeten precies ingevuld overeen komen
* klantnaam mag beetje afwijken (vandaar die LIKE)

en onder de pagina komt een overzicht van de zoekresultaten.

Nu werkt dus alleen als je zoekt op Klantnaam. Als je zoekt op postcode of klantnummer dan worden alle resultaten getoont ookal vul je een niet bestaande nummer of postcode in.


-edit- het werkt wel als ik die LIKE van de klantnaam weghaal maar die moet juist LIKE zijn omdat er meerdere resulaten getoond moeten worden. (klantnaam is ook geen unieke waarde, de postcode en klantnummer wel)

[ Bericht 6% gewijzigd door Xtr3mE op 27-10-2006 09:32:17 ]
It's time to kick ass and chew bubble gum... and I'm all out of bubble gum
  vrijdag 27 oktober 2006 @ 10:19:49 #43
120139 freiss
Hertog Jan :9~
pi_42977806
quote:
Op vrijdag 27 oktober 2006 09:27 schreef Xtr3mE het volgende:
Kan iemand mij uitleggen waarom de onderstaande code niet werkt? zie ik wat over het hoofd?


[ code verwijderd ]

Ik heb dus 3 zoekvelden waar je op kan zoeken:

- Postcode
- Klantnummer
- Klantnaam

* Ze hoeven niet allemaal ingevuld te worden.
* de postcode en klantnummer moeten precies ingevuld overeen komen
* klantnaam mag beetje afwijken (vandaar die LIKE)

en onder de pagina komt een overzicht van de zoekresultaten.

Nu werkt dus alleen als je zoekt op Klantnaam. Als je zoekt op postcode of klantnummer dan worden alle resultaten getoont ookal vul je een niet bestaande nummer of postcode in.


-edit- het werkt wel als ik die LIKE van de klantnaam weghaal maar die moet juist LIKE zijn omdat er meerdere resulaten getoond moeten worden. (klantnaam is ook geen unieke waarde, de postcode en klantnummer wel)
Als in $zoek_klantnaam niets in staat, gebruik je eigenlijk de query "SELECT * FROM Klant WHERE Klantnaam LIKE '%%' OR Postcode = '$zoek_postcode' OR Klantnummer = '$zoek_klantnummer'". Hij vindt dan dus gewoon alles.
HJ 14-punt-gift.
Lijst met rukmateriaal!
pi_42979233
quote:
Op vrijdag 27 oktober 2006 10:19 schreef freiss het volgende:

[..]

Als in $zoek_klantnaam niets in staat, gebruik je eigenlijk de query "SELECT * FROM Klant WHERE Klantnaam LIKE '%%' OR Postcode = '$zoek_postcode' OR Klantnummer = '$zoek_klantnummer'". Hij vindt dan dus gewoon alles.
enig idee hoe ik dat zou kunnen opvangen ?
It's time to kick ass and chew bubble gum... and I'm all out of bubble gum
  vrijdag 27 oktober 2006 @ 12:55:41 #45
71919 wonderer
Hung like a My Little Pony
pi_42981644
Mijn host heeft PHP gerecompiled (wat een lekker nederlands toch weer) en nu kan ik variabelen alleen nog maar aanroepen met $_GET["variable"] in plaats van $variable. Dit deed ik al voor POST, maar nooit met GET gedaan, eigenlijk... moet ik nu alle scripts door gaan lopen en aan gaan passen, of is daar een makkelijkere manier voor?
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
  vrijdag 27 oktober 2006 @ 13:00:26 #46
85514 ralfie
!Yvan eht nioj
pi_42981805
@Xtr3mE

je kunt de query dynamisch opbouwen. Dus

1
2
3
4
5
6
<?php
$query
='SELECT * FROM Klant WHERE';
if (isset(
$klantnaam)) $query.=" Klantnaam LIKE %$klantnaam%'";
else if (isset(
$pc)) $query.=" Postcode = '$pc'";
else if (isset(
$kn)) $query.=" Klantnummer = '$kn'";
?>

zal iets anders moeten als er ook combinaties mogelijk zijn, maar je zou het princype moeten snappen

@wanderer
http://nl3.php.net/manual/en/ini.core.php#ini.register-globals

het is een slechte gewoonte om register_globals aan te hebben en te gebruiken, daarom staat die vanaf 4.2 op uit standaard. Ik zou zeggen zoek een editor met regular expressions search en replace, dan heb je zo alles vervangen

[ Bericht 11% gewijzigd door ralfie op 27-10-2006 13:06:39 ]
pi_42981934
quote:
Op vrijdag 27 oktober 2006 12:55 schreef wonderer het volgende:
Mijn host heeft PHP gerecompiled (wat een lekker nederlands toch weer) en nu kan ik variabelen alleen nog maar aanroepen met $_GET["variable"] in plaats van $variable. Dit deed ik al voor POST, maar nooit met GET gedaan, eigenlijk... moet ik nu alle scripts door gaan lopen en aan gaan passen, of is daar een makkelijkere manier voor?
Er is een makkelijkere manier (zoek naar extract()) maar de betere manier is om het via $_GET, $_POST etc te doen
  vrijdag 27 oktober 2006 @ 13:10:26 #48
71919 wonderer
Hung like a My Little Pony
pi_42982115
quote:
Op vrijdag 27 oktober 2006 13:04 schreef JeRa het volgende:

[..]

Er is een makkelijkere manier (zoek naar extract()) maar de betere manier is om het via $_GET, $_POST etc te doen
Ik wil best alle scripts doorlopen, maar daar heb ik nu even geen tijd voor, ben dus alleen op zoek naar een quick fix.
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_42985299
quote:
Op vrijdag 27 oktober 2006 13:00 schreef ralfie het volgende:
@Xtr3mE

je kunt de query dynamisch opbouwen. Dus
[ code verwijderd ]

zal iets anders moeten als er ook combinaties mogelijk zijn, maar je zou het princype moeten snappen
Ik snap wat je bedoelt maar ook weer niet. :)

Maar maakt niet uit ik heb het al op een andere manier opgelost wat tot nu toe nog goed werkt.

1
2
3
4
5
6
7
8
9
10
11
12
<?php
  
if ($zoek_klantnaam=="") {
  
$query = "SELECT * FROM Klant WHERE Postcode = '$zoek_postcode' OR Klantnummer = '$zoek_klantnummer'";
  
$result = mysql_query($query)
       or die (
"Kan opdracht niet uitvoeren");
  }
  else {
  
$query = "SELECT * FROM Klant WHERE Klantnaam LIKE '%$zoek_klantnaam%' OR Postcode = '$zoek_postcode' OR Klantnummer = '$zoek_klantnummer'";
  
$result = mysql_query($query)
       or die (
"Kan opdracht niet uitvoeren");
       }
?>

;)
It's time to kick ass and chew bubble gum... and I'm all out of bubble gum
pi_42985945
quote:
Op vrijdag 27 oktober 2006 13:10 schreef wonderer het volgende:

[..]

Ik wil best alle scripts doorlopen, maar daar heb ik nu even geen tijd voor, ben dus alleen op zoek naar een quick fix.
Zoiets?

1
2
3
4
5
6
7
8
9
<?php
register_array
($array){
  foreach(
$array as $key =&gt$value)
  {
   ${
$key} = $value
  }
  return 
true;
}
?>
  vrijdag 27 oktober 2006 @ 15:47:12 #51
85514 ralfie
!Yvan eht nioj
pi_42986955
dan is extract toch iets makkelijker
pi_42992288
Geen flauw idee? Heb er niet naar gekeken
pi_43013875
kan fout omgaan met bepaalde php functies (mail en fsocketopen bijv ) een instabiele server tot gevolg hebben? of bijvoorbeeld het niet meer werken van pop en smtp?
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_43014270
quote:
Op zaterdag 28 oktober 2006 18:08 schreef Desdinova het volgende:
kan fout omgaan met bepaalde php functies (mail en fsocketopen bijv ) een instabiele server tot gevolg hebben? of bijvoorbeeld het niet meer werken van pop en smtp?
Zolang je de aan te roepen servers niet laat overstromen met requests van jouw kant of als je geen misbruik maakt van al dan niet bekende exploits in de gebruikte serversoftware niet, nee.
pi_43024296
klein vraagje:
ik wil een php/mysql boek bestellen echter weet ik door de hoeveelheid boeken gewoon niet welke ik het beste kan nemen
ik wil een boek bestellen via bol maar zowel onder nederlandstalige als engelstalige boeken heb je minimaal 15 verschillende boeken..

ik wil een goed naslag werk en ook een waar veel uitleg instaat over het gebruiken en toepassen van mysql+php
heeft iemand tips (voor dinsdag :s dat is namelijk de laatste dag dat ik een coupon kan inwisselen )
  zondag 29 oktober 2006 @ 09:29:34 #56
85514 ralfie
!Yvan eht nioj
pi_43028679
ik heb als naslagwerk de hele php en mysql manual gedownload en in een locale database draaien, compleet met zoekfunctie. Werkt super
pi_43028946
quote:
Op zondag 29 oktober 2006 09:29 schreef ralfie het volgende:
ik heb als naslagwerk de hele php en mysql manual gedownload en in een locale database draaien, compleet met zoekfunctie. Werkt super

tja ik wil er ook nog wat van opsteken (dus een boek vind ik dan handiger..)

ik heb nu deze op het oog:
PHP and MySQL Web Development
Web Database Applications with PHP and MySQL
iemand die deze boeken kent?

[ Bericht 40% gewijzigd door mschol op 29-10-2006 10:48:42 ]
pi_43039612
quote:
Op donderdag 26 oktober 2006 16:01 schreef ralfie het volgende:

[..]

hendigste is om een tabel te maken waarin je de $_SESSION array gewoon serialised en unserialised. Enige wat je moet doen is is dan met een cookie en/of ip bepalen of de huidige gebruiker al een sessie in je database heeft staan en als dat zo is deze eruit halen

Ik geloof dat als identificatie vaak een md5 has van username en password gebruikt wordt
[ code verwijderd ]

uiteraard kun je ook controleren dmv IP-adres, en zul je iets moeten verzinnen om deze tabel af en toe te kunnen legen (datum kolom toevoegen)
Bedankt voor je hulp! Ik heb het op een iets andere manier gedaan, maar ik weet niet zeker of het veilig genoeg is. Ik heb alles mbt sessies verwijderd en het zo gedaan:

Tabel xni_sessions
session_key (varchar[32])
session_expire (int)
session_uid (int)

Bij het inloggen wordt, na een geldige gebruikersnaam en wachtwoord, een md5-hash gemaakt van het ip en de browser van de gebruiker (plus twee extra tekens). Die session_key wordt dan in een cookie gestopt met dezelfde expiration date als in de session tabel. Bij elk bezoek aan de pagina wordt de hash weer gemaakt van de persoons huidige IP-adres en browser en indien die overeenkomt met de session_key is de persoon ingelogd onder het userid session_uid.

Is dit veilig genoeg? Misbruikgevoelig?

-edit-
Mijn huisgenoot die op hetzelfde ipadres zit (en dezelfde browser heeft) zorgt voor fouten. Logisch. Even kijken of het werkt als ik de username in de hash zet.

-edit2-
Dat lijkt te werken. Ben nog wel benieuwd of iemand iets weet over de veiligheid van deze manier

[ Bericht 5% gewijzigd door Nevermind op 29-10-2006 17:04:14 ]
  zondag 29 oktober 2006 @ 23:01:43 #59
94421 IceHeat
Spiritually bankrupt
pi_43052149
1
2
3
4
5
6
<?php
php
$plaatsen 
= array();
array_push($plaatsen1);
echo 
array_search(1$plaatsen);
?>


Dit moet toch 1 echo'en???
  zondag 29 oktober 2006 @ 23:13:19 #60
94421 IceHeat
Spiritually bankrupt
pi_43052567
never mind, array_search is geen boolean.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')