Unset () ve tarayıcı arka düğmesi ile session sorunu

0 Cevap php

Ben PEAR'ın DB nextId() kullanarak Postgres (kayıt id sırasını almak) için ön tahsis kayıt numarasını ayarlamak için bir OTURUM değişkeni kullanıyorum. Ben çünkü çalışıyorum eski kod sorunları kapsam bir oturum değişkeni ben id ayarlayın. INSERT olur sonra (Bu kullanılan kayıt id temizlemek için) OTURUM değişkeni kaldırmak için unset() kullanın. Kaldırılır olan sadece next_id elemanın, bozulmadan kalır yanı oturumda daha fazla bilgi yok.

Sahte kod:

// Get the next Id and set to SESSION
$_SESSION['next_id'] = $db->nextId();

... more code here

// After insert
unset($_SESSION['next_id']);

Benim soru tarayıcınızın geri düğmesini tıklayarak bir şekilde OTURUM değişkeni sıfırlanır misiniz, bir $_SESSION['next_id']? Belki NULL neden? Bir unsur kaldırıldı ancak kullanıcı bir önceki durumuna geri döndü sonra nasıl ÖNBELLEK OTURUMU ele?

EDIT: the reason for the question is that the code in production is randomly (by any user) trying to INSERT with a NULL record id (Which is the next_id from SESSION). Just trying to debug the process as the code is very minimal, reviewed by my peers and has just stumped us???

EDIT 2: Wow I guess there is an issue with how I'm using the SESSION variable. Well I'll explain as much as I can as to why I chose this method. First the code is in the process on being rewritten from PHP 4, but the current production version is mostly PHP 4 with a ton a newly added module code in PHP 5. The reason I chose the SESSION variable is because of a scoping issue that would need to be hard coded on several hundred pages of legacy code or on one page and cast the value into the SESSION which all pages have access to. (well my boss who pays my salary like the option I chose). The original problem is they (my boss) wanted to display the id to the end user before the insertion of the information. Hence the PEAR DB call nextId(). We use PostgreSQL and I'm using the record id sequence to ensure that the next id will be unique and allocated to the end user only (No duplicates as Postgres handles locking this in the sequence). So the end user can also navigate to multiple pages during the process, this also is another scoping issue. Now using the SESSION and retrieving the next Id with some validation and checks is about 50 lines of code for the whole process instead of the thousands of lines of code that would have been written to do this the correct way. Again NOT MY CODE in the first place, just making the best solution at the least possible cost.

Başka varsa, daha iyi, daha ucuz, kolay, çözüm uzakta göndermek için çekinmeyin. Eğer kod hakkında benim karar üzerine işemek için gidiyoruz Ama eğer, o benim faturaları ödemek ve lütfen ben tamamen iyi kodlama standardı, uygulamalar, çözüm aşağıdaki ile kabul edecektir.

0 Cevap