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 halenquote: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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | //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; ?> |
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 uitvoerenquote: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?????
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.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
1 |
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 | 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']; ?> |
Is toch ook wel logisch, of zie ik het verkeerdquote: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?
1 2 3 4 5 6 7 8 9 10 11 12 | //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"); ?> |
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.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)
enig idee hoe ik dat zou kunnen opvangen ?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.
1 2 3 4 5 6 | $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'"; ?> |
Er is een makkelijkere manier (zoek naar extract()) maar de betere manier is om het via $_GET, $_POST etc te doenquote: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?
Ik wil best alle scripts doorlopen, maar daar heb ik nu even geen tijd voor, ben dus alleen op zoek naar een quick fix.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 snap wat je bedoelt maar ook weer niet. :)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
1 2 3 4 5 6 7 8 9 10 11 12 | 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"); } ?> |
Zoiets?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.
1 2 3 4 5 6 7 8 9 | register_array($array){ foreach($array as $key => $value) { ${$key} = $value; } return true; } ?> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |