Fwd: [PHP] Basic Auth

From: Date: Tue, 27 Aug 2013 15:56:00 +0000
Subject: Fwd: [PHP] Basic Auth
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-322000@lists.php.net to get a copy of this message
Oops, sent this message from the wrong email address, so the list rejected it. Begin forwarded message: > From: Stuart Dallas <stuart@3ft9.com> > Subject: Re: [PHP] Basic Auth > Date: 27 August 2013 16:36:27 BST > To: jim.giner@albanyhandball.com > Cc: php-general@lists.php.net > > On 27 Aug 2013, at 15:59, Jim Giner <jim.giner@albanyhandball.com> wrote: > >> On 8/27/2013 10:55 AM, Stuart Dallas wrote: >>> On 27 Aug 2013, at 15:51, Jim Giner <jim.giner@albanyhandball.com> wrote: >>> >>>> On 8/27/2013 10:39 AM, Stuart Dallas wrote: >>>>> On 27 Aug 2013, at 15:18, Jim Giner <jim.giner@albanyhandball.com> wrote: >>>>> >>>>>> On 8/27/2013 10:14 AM, Stuart Dallas wrote: >>>>>>> It's not really confusing so long as you understand how PHP works. >>>>>>> Each request is brand new - nothing is retained from previous requests. The two variable you're >>>>>>> changing are set by PHP when the request comes in from the browser. The fact you changed them in a >>>>>>> previous request is irrelevant because 1) that change was not communicated to the browser in any >>>>>>> way, and 2) PHP doesn't retain any data between requests [1]. >>>>>>> >>>>>>> If you've been coding assuming that changes you make to global >>>>>>> variables are retained between requests you must have been having some pretty frustrating times! >>>>>>> >>>>>>> -Stuart >>>>>>> >>>>>> Not really - this is the first time I've had something not work as >>>>>> expected. >>>>> That was said with my tongue very much firmly in my cheek, and so is this: >>>>> >>>>> I've been playing with dynamite since I was 4 - hey, it must be a safe, >>>>> proper thing to do! >>>>> >>>>> Just because nothing has blown up in your face yet doesn't mean it >>>>> won't, and I'm concerned that you might not actually see how important it is to make sure >>>>> you're using the tool correctly. >>>>> >>>>> -Stuart >>>>> >>>> This may very well be the first time with this problem because I haven't tried >>>> anything like this before. >>>> >>>> That said - can you give me some pointers on how to do the JS solution? I'm >>>> calling a script that is similar to the one I used to signon. It sends out something like: >>>> >>>> header("WWW-Authenticate: Basic realm=$realm"); >>>> header('HTTP/1.0 401 Unauthorized'); >>>> echo "<h3>You have entered invalid credentials<br>"; >>>> echo "Click <a href='$return_url'> here </a> to >>>> return to the menu."; >>>> exit(); >>>> >>>> when it doesn't detect the PHP_AUTH_USER or it is an invalid value. >>>> >>>> So - to effect a signoff, what does one do? You said to use an invalid value, but >>>> what do I do with that? How do I ignore the 401? Now I'm getting the signin dialog and >>>> I'm stuck. >>> You don't need to do anything on the server-side. You simply need a JS function >>> that sends a request to a URL that requires basic auth, with an Authenticate header that contains an >>> invalid username and password. Then, when your server responds with a 401 Authentication required >>> (which it should already do for an invalid request) you can set location.href to whatever URL you >>> want the logged out user to see. >>> >>> If you don't know how to make a request from Javascript -- commonly known as an >>> AJAX request -- then google for it. I'd recommend the jquery library if you want a very easy >>> way to do it. >>> >>> -Stuart >>> >> I am familiar with an ajax request (xmlhttprequest) and I have a function ready to call a >> script to effect this signoff. I just don't know what to put in that php script I'm >> calling. From what you just wrote I'm guessing that my headers as shown previously may be >> close - I"m confused about your mention of "contains an invalid username...". As you >> can see from my sample I don't include such a thing. > > For the last time: YOU DO NOT NEED TO MAKE ANY CHANGES SERVER-SIDE. > > From the Javascript, request any URL that requires authentication - it doesn't matter. > When you make the AJAX request, pass an Authentication header that contains an invalid username and > password. If you don't know what I mean by that, please google how HTTP Basic Auth works. > > -Stuart > > -- > Stuart Dallas > 3ft9 Ltd > http://3ft9.com/

« previous php.general (#322000) next »