[PHP] Variabel die blijft bestaan

Pagina: 1
Acties:

Onderwerpen


Anoniem: 7431

Topicstarter
Sinds een dag of twee ben ik PHP aan het leren. Gezien dit soort scripts voor mij het beste in de praktijk te leren zijn, ben ik met een klein en nutteloos projectje begonnen dat steeds verder uitgebreid kan worden naarmate ik meer leer. Inmiddels ben ik bij het eerste obstakel beland waar ik helaas geen antwoord op heb kunnen vinden.

Ik heb een logingedeelte gemaakt, wanneer een gebruiker die geregd is in de database inlogt krijgt hij/zij zijn eigen specifieke pagina. Hierop staan ondermeer verschillende testen, persoonsgebonden informatie en personal messages.

De testen die er op staan kunnen worden ingevuld en aan de hand daarvan wordt een resultaat gegeven. Echter wil ik dit resultaat op meerdere pagina's kunnen laten bestaan afhankelijk van de ingelogde gebruiker. Het probleem is dat ik het resultaat niet specifiek per gebruiker kan inladen op nieuwe pagina's. De PHP engine heeft namelijk geen idee meer wie of wat $gebruiker is in de volgende regel:

code:
1
$resultaat = mysql_query("SELECT * FROM gebruikersdata WHERE Gebruiker LIKE '$gebruiker'");


Ook voor andere onderdelen zou ik graag variabelen willen laten bestaan. Dit is ongetwijfeld mogelijk maar ik kan het helaas niet vinden.

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Kijk eens naar sessions en/of cookies, die zijn hiervoor bedoeld.

Anoniem: 7431

Topicstarter
Bedankt voor de hulp. :)

Ik heb de hoofdstukken sessions gelezen maar ik krijg een error omdat ik globals niet kan gebruiken in een session:

Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

Ik heb eerst het loginscherm waarin de waarde $gebruiker en $wachtwoord uit een formulier wordt gehaald. Dit formulier forward de pagina naar gebruikerspagina. Hier heb ik:

code:
1
2
3
4
5
6
7
8
<?php session_start();
session_register ("gebruikersnaam");
$HTTP_SESSION_VARS ["gebruikersnaam"] = $gebruikersnaam;
?>
<html> // etc
$gebruiker = $_POST['gebruiker'];
$gebruikersnaam = $gebruiker;
// etc


In de volgende pagina gebruik ik:
code:
1
2
3
4
<?php session_start(); ?>
<html> // etc
$gebruiker= $_SESSION["gebruikersnaam"];
//etc


In principe werkt het maar dan wel met de foutmeldingen en dat lijkt me niet behoorlijk onveilig. Ik heb zoveel mogelijk over sessions gelezen op w3cschools, phpfreaks en in mijn eigen boek, maar kom er niet helemaal uit.

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Je moet maar 1 techniek tegelijk gebruiken. Het beste is om gewoon met $_SESSION te werken, en $HTTP_SESSION_VARS en de sessie register functies niet te gebruiken. Daarmee voorkom je iig. wel wat problemen.
PHP:
1
2
3
$_SESSION['gebruiker'] = 123; // variabel aanmaken
echo $_SESSION['gebruiker']; // het gebruiken
unset($_SESSION['gebruiker']); // en weer verwijderen

[ Voor 13% gewijzigd door Michali op 16-09-2006 13:38 ]

Noushka's Magnificent Dream | Unity


Anoniem: 7431

Topicstarter
Bedankt.

Ik heb net geprobeerd wat je schreef, maar kreeg hierbij dezelfde error.

Ik wil dat 123 in jouw voorbeeld de waarde van $gebruiker wordt omdat ik deze variable (samen met een aantal anderen) over de gehele website wil gebruiken in toepassingen. Is dit op enige manier mogelijk zonder errors te krijgen?

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 28-02 01:01
Wat is die error dan precies? Heb je wel in je php.ini een session dir gemaakt?

Anoniem: 7431

Topicstarter
Megamind schreef op zaterdag 16 september 2006 @ 14:10:
Wat is die error dan precies? Heb je wel in je php.ini een session dir gemaakt?
Sorry, het is geen error maar een warning:
Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

Ik heb in de php.ini geen session dir gemaakt.. dat stond niet in mijn boek (slecht boek overigens maar dat terzijde). Ik zal een gaan zoeken.

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

Anoniem: 7431 schreef op zaterdag 16 september 2006 @ 14:16:

Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
P&W FAQ - PHP

Aunt bunny is coming to get me!


  • GlowMouse
  • Registratie: November 2002
  • Niet online
De melding lijkt te komen doordat je nog steeds session_register gebruikt.

De enige functie die je nodig hebt, heet 'session_start'. Daarna kun je via $_SESSION alle sessievariabelen aanmaken en uitlezen. Een boek of tutorial dat het over session_register heeft, kun je beter links laten liggen.

[ Voor 2% gewijzigd door GlowMouse op 16-09-2006 14:43 . Reden: url gefixt dmv quotes; ik vertrouw dingen als tinyurl maar half (imgshack effect) ]


  • Mr. Bondt
  • Registratie: Februari 2005
  • Laatst online: 10-06 10:11
GlowMouse schreef op zaterdag 16 september 2006 @ 14:32:
De melding lijkt te komen doordat je nog steeds session_register gebruikt.
Deze link werkt wel. :)

  • sjhgvr
  • Registratie: Januari 2004
  • Laatst online: 17-06 22:12
PHP upgraden dus O-)

oisd.nl


  • GlowMouse
  • Registratie: November 2002
  • Niet online
:? nee hoor, die conclusie kun je hier niet trekken.

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 18-06 21:43

MBV

Nee, als je het wilt oplossen met een andere php-versie zal je 4.2 moeten installeren, wat weer andere grote nadelen geeft (maar desondanks op mijn werk nog vrolijk gebruikt wordt :X). Gewoon doen wat hier gezegd wordt: alleen session_start() bovenaan zetten (na je includes van eventuele klasses). em $_SESSION gebruiken.

Acties:
  • 0 Henk 'm!

Anoniem: 7431

Topicstarter
Het lukt me nog steeds niet, nog steeds dezelfde error. Ik gebruik nu het volgende:

Pagina1 Inloggen en Post $gebruiker

Pagina2 Sessie beginnen met:
PHP:
1
2
3
<?php session_start(); ?>
$gebruiker = $_POST['gebruiker'];
$_SESSION['gebruikersnaam'] = $gebruiker;


Pagina3 Sessie uitlezen met:
PHP:
1
2
<?php session_start(); ?>
$_SESSION['gebruikersnaam'] = $gebruiker;



Wanneer ik $gebruiker verwijder en bijvoorbeeld john gebruik verdwijnt de warning. Wanneer ik $gebruiker echo staat er echter gewoon john op Pagina2 en niets op Pagina3

[ Voor 3% gewijzigd door Anoniem: 7431 op 17-09-2006 15:10 ]


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Dan is $gebruiker niet bekend op pagina 3. Zet error_reporting(E_ALL); eens bovenaan je pagina's, dat helpt ook wel tijdens debuggen. Overigens lees je die sessie op pagina 3 niet uit, maar geef je hem opnieuw een waarde. En waarom sluit je de php tags?

Pagina 2:
PHP:
1
2
session_start();
$_SESSION['gebruikersnaam'] = $gebruiker;


Pagina 3:
PHP:
1
2
session_start();
echo $_SESSION['gebruikersnaam']; // de sessie uitlezen

March of the Eagles


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Anoniem: 7431 schreef op zondag 17 september 2006 @ 15:08:
Pagina3 Sessie uitlezen met:
PHP:
1
2
<?php session_start(); ?>
$_SESSION['gebruikersnaam'] = $gebruiker;
PHP:
1
2
<?php session_start(); ?>
$gebruiker = $_SESSION['gebruikersnaam'];

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

Anoniem: 7431

Topicstarter
Pfff eindelijk gelukt.. heel erg bedankt iedereen dat jullie de tijd nemen om een newbie te helpen! :)

Dit is wat ik heb gebruikt:
PHP:
1
$_SESSION['gebruikersnaam'] = $_POST['gebruiker'];


Conclusie, ik heb een kloteboek ;) Ik ga vanaf nu de tutorials op php.net gebruiken, dat scheelt een hoop denk ik..

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Of neem deze eens door: http://hudzilla.org/phpbook/

March of the Eagles


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 28-02 01:01
Ik heb het geleerd uit een for dummies boek, die was opzich vrij goed. Ik koop zowat alleen van dat soort boeken om mee te beginnen

Acties:
  • 0 Henk 'm!

Anoniem: 147846

Ik was begonnen met een PHP5 boek van academic service.. Gebruikt wel session_register.. Maar het was een goede basis (echt een basis, dingen als OOP komen niet voor)
Voor de rest moet je inderdaad maar online zoeken, en dingen maken waarvan je niet direct weet hoe je dat moet doen.
Ik was bijvoorbeeld na het boek direct begonnen aan een forum.. Heb ik veel dingen geleerd :)
Pagina: 1