abonnement Unibet Coolblue Bitvavo
  donderdag 26 oktober 2006 @ 16:01:40 #26
85514 ralfie
!Yvan eht nioj
pi_42956070
quote:
Op maandag 23 oktober 2006 12:27 schreef Nevermind het volgende:
Ik maak gebruik van sessies om users te kunnen laten inloggen. Hoe kan ik die sessiewaarden opslaan in de database en een 'stay logged in' functie maken? Links naar goede tutorials zijn ook welkom.
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
//get database session
if (!isset($_SESSION['controle']) && isset($_COOKIE['sessionhash'])) {
   
$res=mysql_query("SELECT sessie from sessions_table WHERE sessionhash='".mysql_real_escape($_COOKIE['sessionhash'])."' LIMIT 1");
   
$x=mysql_fetch_assoc($res);
   
$_SESSION=unserialise($x['sessie']);
   
$_SESSION['controle']=true;//om ervoor te zorgen dat een al bestaande sessie niet vervangen wordt door die uit de db
}


//create new database entry
$u=md5($username.$password);
$s=serialise($_SESSION);
mysql_query("INSERT INTO sessions_table (sessionhash,sessie) values('{$u}','{$s}')");
$_COOKIE['sessionhash']=$u;
?>

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)
pi_42957101
maar wat is het nu van zo'n soort registratie dan?
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_42957801
quote:
Op donderdag 21 september 2006 22:09 schreef Rumboon het volgende:
Ben pas begonnen met PHP en loop nu onverklaarbaar vast.

Versies:
Apache/1.3.19
PHP Version 4.0.4pl1

Files:
newcustomer.html
[ code verwijderd ]

process_newcustomer.php
[ code verwijderd ]

Als ik de html pagina draai krijg ik vervolgens te zien:

Welcome new customer! You have entered the following information:

Full Name:
User Name:

Verder niets! Hoe kan dit?????
Zoals eerder gezegd werkt $_POST met die versie inderdaad nog niet. $_POST is pas beschikbaar vanaf 4.1.0. Dus ik zou inderdaad maar eerst even wat updates uitvoeren
Ik ben best bereid om toe te geven dat ik niet altijd gelijk heb, maar ik heb het nooit bij het verkeerde eind
pi_42958292
quote:
Op donderdag 26 oktober 2006 16:49 schreef Giel83 het volgende:

[..]

Zoals eerder gezegd werkt $_POST met die versie inderdaad nog niet. $_POST is pas beschikbaar vanaf 4.1.0. Dus ik zou inderdaad maar eerst even wat updates uitvoeren
In dat geval zou het kunnen zijn dat register_globals nog aan staat, dus als je het eerste stuk code weglaat (waar je de variabelen defineert), zou het zomaar kunnen dat het wel werkt.

Neemt niet weg dat je moet updaten
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_42960423
ik haal data uit de DB met:
1$result = $db->getRow($sql)


Hoe kan ik in result iets doen met de cel 'body'?
$result[body] werkt bijv niet..
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;
}
?>
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')