Yes , I agree,But that is exactly where my problem comes in, when I link 
the person forward, it DOES NOT take the new value for the project_id, 
as it is a form element and it only becomes variable on the action page. 
This is where I'm unsure about how to "initialize" the variable. As 
mentioned earlier in my posts, I simply do a 
session_register("project_id"); on the action page, I DO NOT say 
anything like

$_SESSION['project_id'] = "45"; or any other form of assignment whatsoever, as I leave 
the work to register_globals=on and it's normal expected behaviour. And I think this 
is where the problem lies.
It seems I MUST actually do that for things to work??? Unfortunately I cannot test 
this yet, as I'm busy with something else, and just trying to get the basic academics 
right. I understand the way you are explaining sessions 100%, but when I put that 
knowledge to practise, things doesn't seem to work... :( . 
I am still to test yours and Rasmus' sugestions and will come back shortly.

Thanks for the help so far.




Justin French wrote:

>*shakes head a bit*
>
>I'm not REALLY sure what the problem is here, but let's take a step back.
>
>A session ID is a unique, random number assigned to a user as they kick
>around your site.
>
>To maintain state (a session) across multiple pages, you pass the session id
>around.  This can be done with the URL or cookies.  Yes, trans_sid is in
>there as well, but all it does is re-write URLs.
>
>No surprises so far.
>
>
>You then assign variables to the session.  If you're using PHP >= 4.1, I'd
>use $_SESSION['varname'] = "value"; rather than session_register(), because
>it's a lot more logical, and clearer to think through.
>
>Furthermore, the manual tells us NOT to mix use of session_register('var')
>and $_SESSION['var'] = 'value'... so, pick a method, and stick to it...
>since the $_SESSION array is the new way, I'd be going with it.
>
>
>So, the first two session vars YOU assign after the user logs in is the
>username and password (I wouldn't register the password).
>
>$_SESSION['username'] = "justin";
>$_SESSION['password'] = "secret";
>
>
>Then a few pages later, they pick an option from a pull-down list, and you
>assign another variable to the session:
>
>$_SESSION['project_id'] = "45";
>
>The user clicks through a few more pages, and later wants to work on a
>different project, so you link them through (forward) to the options page.
>
>They select a new project from the pull down, so you need to overwrite the
>old project_id session var with a new one:
>
>$_SESSION['project_id'] = "74";
>
>
>Now, when they kick around through pages, they will be doing it under
>project_id 74.
>
>If you wanted to delete the project_id all together (no project), you could
>use unset().
>
>
>Now, go back, and have a look at your code, check out the logic, and I'm
>sure you'll see the mistake(s).
>
>
>As far as the "maintaining session forever" thing, I'd highly recommend
>it... it's highly insecure (walk away from your computer, someone else has
>access to everything)... besides, sessions are a temporary thing by nature,
>with garbage cleanouts, etc etc.
>
>If you really wanted to maintain state 'forever', you would have to set a
>cookie with the username and password to that person's computer, hence your
>website would 'remember them' all the time.
>
>Of course there are plenty of reasons why your shouldn't do this.  I guess
>the client should be informed of the options here:
>
>1. log in every so-often as needed (if there is lots of activity, the
>session probably won't die all day anyway), and have heaps more security
>
>2. log in once only, and have the whole system wide-open forever
>
>
>I'd pick 1 over 2 anytime.
>
>I'd also provide a logout button with either system, so that people CHOOSE
>TO DESTROY THEIR SESSION.  Personally, I log-out when I leave my desk, just
>in case.
>
>Imagine if you left a session open which disclosed everyone's pay rates in
>an office... not good for your career at all :)
>
>
>Hope this all helps,
>
>Justin French
>
>
>
>
>on 30/07/02 6:04 PM, Petre ([EMAIL PROTECTED]) wrote:
>
>>Yes, it is a forward link to the page, but as mentioned, that page
>>contains a form with the selection options, and on that form's action
>>page is where I don't see the values change, so the question should
>>probably be something like "how do I change the value in the session_var
>>with the newly selected value?
>>And oh, I almost forgot:
>>Due to that fact that this type of app doesn't really have a logical end
>>page, I cannot issue a session_destroy() anywhere logically ( except
>>using a logout button), but that's not going to ensure that people use it...
>>I would ideally like to have this "app" run on an intranet, where people
>>will most probably have this app open indefinately, and thus  I also
>>battle with my logic of keeping a session alive.
>>
>>Thanks
>>.
>>
>>Rasmus Lerdorf wrote:
>>
>>>Well, how exactly do you implement the back button?  If it is a normal
>>>client-side back, then of course the previous value will be shown.  If it
>>>is actually a forward-link to the previous page, then your logic on that
>>>target page is bogus.
>>>
>>>By the way, trans-sid is compiled in by default in PHP so should always be
>>>available.  And it will fallback to sid mangling only if cookies are
>>>disabled.  You would probably be better off just letting php manage this
>>>for you.
>>>
>>>-Rasmus
>>>
>>>On Tue, 30 Jul 2002, Petre wrote:
>>>
>>>>Well, I have asked a couple of questions on this list, but they havn't
>>>>really helped alot. Maybe you can help?
>>>>
>>>>My situation background is as follow:
>>>>I have always written my apps in the following way: register_globals=on,
>>>>so I allowed PHP to "generate" my variables for me on the action page,
>>>>and if I cannot use a form to "send" variables to the next pages, I
>>>>added them manually to the url.
>>>>So, then I discovered sessions and thought my probelms were solved, only
>>>>to discover that it uses cookies by default, and has to have the
>>>>--trans-sid option compiled to have PHP handle the app if you don't want
>>>>cookies ( like me, don't want cookies at all, or for that matter,
>>>>anything that relies on the client's side). So, I couldn't just jump in
>>>>and use sessions as I would not be sure that my app would work on any
>>>>PHP4 system regardless of the options it was compiled with. ( Oh, I am
>>>>writing my apps to work with register_globals=off now, so that shouldn't
>>>>be a problem).
>>>>So I started to look for a way to code with sessions that will not
>>>>require cookies nor require any special compile features; the answer
>>>>came in adding <?=SID?> to all relative URL's in my app.
>>>>Alas, that is where I'm at, and it's still not working as I would have
>>>>expected.
>>>>My problem is with the way my proposed app works/should work.
>>>>
>>>>I am trying to write an app that allows the user to log in, then
>>>>add/remove projects to his list, then, when a project is selected, he
>>>>should have access to all the relevan documents in that project, again
>>>>allowing him to add/remove documents from the project here, and in the
>>>>last step, when a document is selected, allows hime to add/remove/edit
>>>>chapters to the document.
>>>>
>>>>My first attempt at using sessions with this failed miserably ( keeping
>>>>in mind my approach of adding SID at end of urls). I have a "back" link
>>>>on all the pages that takes the user to the previous  step(s) and thus
>>>>on the last page ( the chpaters edit/remove/add page), there is a link
>>>>to go back one level, two and three levels. Yet, using these causes
>>>>unexpected results.
>>>>I think the problem comes in with overriding the value of the session
>>>>variable.
>>>>For instance, on the first page you have a login form, on the action
>>>>page I session_register("username","password"), and that works fine even
>>>>when using the back buttons as the values are never changed. But, on the
>>>>2nd page I have the drop down select containing all the project names (
>>>>gets built with a while that reads all the project names from the
>>>>project_table) and send over the project_id.
>>>>On that actio page, I session_register("project_id"); and it also works
>>>>fine for all pages "down stream", however, when I come back to that page
>>>>to select a new project, it keeps the old variable...
>>>>At first I did nothing special in the sence of assigning a value to the
>>>>session variables, as I let the register_globals=on do it's trick, but
>>>>later I explicitly said
>>>>$project_id = $HTTP_POST_VARS["project_id"];
>>>>
>>>>But that also did not overwrite the value of the session var. In the end
>>>>I was forced to again add all my variables to the end of the url,
>>>>keeping the session solely for the username and password.
>>>>
>>>>I don't know if you would like  me to post my code (  it is quite a bit
>>>>already ) but I would really appreciate it if someone could look at it,
>>>>and then point out where I'm missing the picture, as then I would have
>>>>two pictures that I can compare and see where my reasoning failed.
>>>>
>>>>Thanks for your time.
>>>>
>>>>
>>>>Rasmus Lerdorf wrote:
>>>>
>>>>>What issues?  Just ask.
>>>>>
>>>>>-Rasmus
>>>>>
>>>>>On Mon, 29 Jul 2002, Petre wrote:
>>>>>
>>>>>>What are good books/websites about sessions.
>>>>>>I'm looking for more advanced stuff, I have the Luke Welling/Laura
>>>>>>Tompson book, and have read the manual, but I still have issues that are
>>>>>>unresolved.
>>>>>>
>>>>>>Thanks
>>>>>>
>>>>>>
>>>>>>
>>>>>>--
>>>>>>PHP General Mailing List (http://www.php.net/)
>>>>>>To unsubscribe, visit: http://www.php.net/unsub.php
>>>>>>
>>
>
>



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to