MySQLi object opslaan in in $_SESSION

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Chris Avontuur

Chris Avontuur

09/06/2009 17:26:00
Quote Anchor link
Ik loop al een tijdje met het idee om een mysqli object ($mysqli) aan te maken via mysqli_connct en deze op te slaan als $_SESSION["Mysqli"]

Ik heb dat echter (nog) niet gedaan omdat ik me zorgen maak over de veiligheid. Kan iemand vertellen of dit een veiligheidsrisico inhoudt?
 
PHP hulp

PHP hulp

22/12/2024 08:18:06
 
Emmanuel Delay

Emmanuel Delay

09/06/2009 19:40:00
Quote Anchor link
Of het echt onveilig is, weet ik niet, maar ik snap niet waarom je zoveel informatie in een sessie zou willen bijhouden.
 

09/06/2009 22:14:00
Quote Anchor link
makkelijk bij vele verschillende pagina's dus makkelijk te intergreren in meerdere pagina's zonder extra connects. Kortom qua connects minder server load, qua het in een sessie stoppen weet ik niet.
 
- SanThe -

- SanThe -

09/06/2009 22:18:00
Quote Anchor link
Ik weet het niet zeker, maar volgens mij kan je geen objects in een session bewaren.
 
TJVB tvb

TJVB tvb

09/06/2009 22:54:00
Quote Anchor link
Je kunt wel objecten in een sessie opslaan, maar het moeten standaard objecten zijn. Anders moet je gaan werken met serialize en unserialize Of altijd je class files laden voordat je een sessie start.
(Je class beschrijving moet eerst geladen zijn voordat je de objecten serialized. Dat gaat bij een sessie tijdens het starten)

Allen vermoed ik wel dat je de connectie verliest en dus er niet zo veel aan hebt.
Gewijzigd op 01/01/1970 01:00:00 door TJVB tvb
 
Emmanuel Delay

Emmanuel Delay

09/06/2009 23:41:00
Quote Anchor link
Mag ik toch even vragen waarom je dit zou willen doen?
 
Chris Avontuur

Chris Avontuur

10/06/2009 16:16:00
Quote Anchor link
Quote:
makkelijk bij vele verschillende pagina's dus makkelijk te intergreren in meerdere pagina's zonder extra connects. Kortom qua connects minder server load


@ Emmanuel Delay
Zoals Danny al schreef: 1 keer een database connectie maken en niet vanuit elk object een nieuwe connectie maken. ook naar aanleiding van problemen in het verleden bij verschillende klanten:

> > *Warning*: mysqli_connect() [function.mysqli-connect
> > <http://www.**************.com/function.mysqli-connect>]:
> > (08004/1040): Too many connections in *********.php

@ SanThe:
Het kan dus wel maar niet alles wat kan is ook verstandig/nuttig
 
Mark Puts

Mark Puts

10/06/2009 16:42:00
Quote Anchor link
Is het niet beter om dit in een define te doen?
 
Jelmer -

Jelmer -

10/06/2009 17:04:00
Quote Anchor link
Define kan alleen maar scalar types als waarden hebben, ook geen objecten. (of resources wel mogen weet ik zo niet, maar ze zijn er wel zoals STDIN en STDERR)

Als je in alle objecten dezelfde verbinding wilt gebruiken, zal je ze aan de objecten bij het aanmaken of net voor het gebruiken moeten geven. Of je gaat voor registery of singleton.

Of je doet makkelijk, en maakt voor jezelf even een functie die je voortaan gebruikt om verbinding op te vragen. Iets a la:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function mysqli_connection()
{

    static $connetion;
    
    if(!$connection)
        $connection = new MySQLi(...);
    
    return $connection;
}


$resource = mysqli_connection()->query('SELECT * FORM DUAL');
?>

Op die manier heb je maar 1 verbinding per aanroep, en kom je waarschijnlijk niet zo snel meer over het connection limit heen.

De verbinding in een sessie zetten gaat niet lukken. Een verbinding aanmaken is eigenlijk gewoon het PHP proces die een socket opent en handjes schudt met je database. De verbinding is dus onderdeel van het proces. Sessies zijn er om gegevens te bewaren, om ze aan het eind van het ene proces op te slaan, en ze het andere proces (de volgende request) weer in te laden. De sessie codeert, slaat de data op in een bestand., en decodeert later. Dat wil niet met verbindingen.
 
Chris Avontuur

Chris Avontuur

13/07/2009 18:32:00
Quote Anchor link
@ Jelmer

Bedankt!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.