OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
php-general Digest 28 May 2008 06:16:12 -0000 Issue 5483

php-general-digest-helplists.php.net
Date: Wed May 28 2008 - 01:16:12 CDT


php-general Digest 28 May 2008 06:16:12 -0000 Issue 5483

Topics (messages 274749 through 274757):

Re: Header Redirect
        274749 by: Robert Cummings
        274750 by: Stut
        274752 by: Stut

looking a regular expresion
        274751 by: Manuel Pérez López

Re: scanned in & manipulate to a pdf
        274753 by: Christian Flickinger
        274754 by: Christian Flickinger

PEAR_Exception & PEAR_Error
        274755 by: Al

read xml files with namespaces
        274756 by: Selwyn Polit

Restricting access to a file
        274757 by: John Comerford

Administrivia:

To subscribe to the digest, e-mail:
        php-general-digest-subscribelists.php.net

To unsubscribe from the digest, e-mail:
        php-general-digest-unsubscribelists.php.net

To post to the list, e-mail:
        php-generallists.php.net

----------------------------------------------------------------------

attached mail follows:


On Tue, 2008-05-27 at 18:04 +0100, Stut wrote:
> On 27 May 2008, at 17:54, Robert Cummings wrote:
> > On Tue, 2008-05-27 at 17:10 +0100, Stut wrote:
> >> On 27 May 2008, at 17:06, Yui Hiroaki wrote:
> >>> I would like to have some question.
> >>>
> >>> For example,
> >>> I am in http://example.com/?12324242
> >>>
> >>> I would like to REDIRECT from http://example.com/?1312323232
> >>> to http://example.com/
> >>>
> >>> I can REDIRECT from http://example.com/index.php to http://example.com
> >>>
> >>>
> >>> Please do tell me how I can redirect!
> >>>
> >>>
> >>> This is the sample what I test below!
> >>>
> >>> <?php
> >>> if ($_SERVER['REQUEST_URI'] == '/index.php') {
> >>> header("HTTP/1.1 301 Moved Permanently");
> >>> header("Location: http:///example.com/");
> >>> exit();
> >>> }
> >>> ?>
> >>
> >> 1) Why? Redirects should be avoided where possible for performance
> >> reasons.
> >
> > Didn't this topic get covered several months back. I always do
> > redirects
> > so as not to bugger browser history, titles, indexing, etc. If someone
> > requests a page and they need to be logged in, I redirect to the login
> > page, I never just present the login page... that's just incorrect
> > from
>
> Personally I tend to only use redirects when a form handler has done
> it's job to avoid evil messages when the user hits back. However, I
> have used both redirected and non-redirected login workflows in the
> past for various reasons, and I don't believe there is a "standard"
> way to do it. It depends on how the site will be used and by whom.
>
> > a hierarchical and semantic point of view. Similarly, if I'm doing 404
> > handling with fuzzy request sniffing to determine what was actually
> > requested, I again perform a redirect once I've ascertained what was
> > probably desired. If you don't, then Google and other search engines
> > will index these malformed URLs instead of the correct URL.
>
> The correct response to a 404 page is 404. No arguments. If you
> redirect missing pages then your site effectively contains an infinite
> number of pages. By all means display a useful page when you return
> your 404 but not marking it as a missing page does little if anything
> for your SEO rank and absolutely nothing for your users.

404 "Not Found", but it was found, but it's not where you asked for it,
it's over there... we've permanently moved it from here to there (even
if only virtually)... let's redirect you to the correct location. Since
you perform a redirect to the correct location, the content is
appropriately indexed where it actually exists. If you return a 404
status I'm pretty sure Google discards the content.

> IMHO if you're going to use a semantic argument to defend one point
> you need to carry that attitude throughout.

My semantic argument is still intact. If I found it, then it's not
deserving of "404 Not Found" status. Sure it may not be at the requested
location, but that's what the moved status is for.

Here's a physical world analogy. Walk into a hardware store ask for
object X. If they have it they will tell you. If they don't then either
they will say, "Sorry, we don't have that. I don't have a clue where you
can get it", or if they do know (and want to help) they'll say "It's
over there at Rob's Hardware Store". What they almost certainly won't
say is hang on, then run over to Rob's hardware Store, buy item X, come
back and try to sell it to you. Almost certainly, but who knows, people
do weird things sometimes :)

So here's something else since you played the performance card. Click on
the following link and tell me where you end up when not already logged
in:

    http://mail.google.com/mail/

I'm sure Google had a good reason for that behaviour, as in it's follows
more correctly the standard expected request behaviour, and I'm sure
they get a LOT of hits ;)

Cheers,
Rob.
--
http://www.interjinn.com
Application and Templating Framework for PHP

attached mail follows:


On 27 May 2008, at 18:58, elk dolk wrote:
> What about using .htaccess for redirection for example, to redirect
> a single page:
>
> Redirect 301 /oldpage.html http://www.example.com/newpage.html

I'm assuming the OP is actually doing something with that number
before throwing it away. If not then the whole thing becomes a bit
pointless.

-Stut

--
http://stut.net/

> Stut <stuttlegmail.com> wrote: CC: PHP General List <php-generallists.php.net
> >
> From: Stut <stuttlegmail.com>
> To: Robert Cummings <robertinterjinn.com>
> Date: Tue, 27 May 2008 18:04:02 +0100
> Subject: Re: [PHP] Header Redirect
>
> On 27 May 2008, at 17:54, Robert Cummings wrote:
>> On Tue, 2008-05-27 at 17:10 +0100, Stut wrote:
>>> On 27 May 2008, at 17:06, Yui Hiroaki wrote:
>>>> I would like to have some question.
>>>>
>>>> For example,
>>>> I am in http://example.com/?12324242
>>>>
>>>> I would like to REDIRECT from http://example.com/?1312323232
>>>> to http://example.com/
>>>>
>>>> I can REDIRECT from http://example.com/index.php to http://example.com
>>>>
>>>>
>>>> Please do tell me how I can redirect!
>>>>
>>>>
>>>> This is the sample what I test below!
>>>>
>>>>>>> if ($_SERVER['REQUEST_URI'] == '/index.php') {
>>>> header("HTTP/1.1 301 Moved Permanently");
>>>> header("Location: http:///example.com/");
>>>> exit();
>>>> }
>>>> ?>
>>>
>>> 1) Why? Redirects should be avoided where possible for performance
>>> reasons.
>>
>> Didn't this topic get covered several months back. I always do
>> redirects
>> so as not to bugger browser history, titles, indexing, etc. If
>> someone
>> requests a page and they need to be logged in, I redirect to the
>> login
>> page, I never just present the login page... that's just incorrect
>> from
>
> Personally I tend to only use redirects when a form handler has done
> it's job to avoid evil messages when the user hits back. However, I
> have used both redirected and non-redirected login workflows in the
> past for various reasons, and I don't believe there is a "standard"
> way to do it. It depends on how the site will be used and by whom.
>
>> a hierarchical and semantic point of view. Similarly, if I'm doing
>> 404
>> handling with fuzzy request sniffing to determine what was actually
>> requested, I again perform a redirect once I've ascertained what was
>> probably desired. If you don't, then Google and other search engines
>> will index these malformed URLs instead of the correct URL.
>
> The correct response to a 404 page is 404. No arguments. If you
> redirect missing pages then your site effectively contains an infinite
> number of pages. By all means display a useful page when you return
> your 404 but not marking it as a missing page does little if anything
> for your SEO rank and absolutely nothing for your users.
>
> IMHO if you're going to use a semantic argument to defend one point
> you need to carry that attitude throughout.
>
> -Stut
>
> --
> http://stut.net/
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
>

attached mail follows:


On 27 May 2008, at 19:18, Robert Cummings wrote:
> On Tue, 2008-05-27 at 18:04 +0100, Stut wrote:
>> On 27 May 2008, at 17:54, Robert Cummings wrote:
>>> On Tue, 2008-05-27 at 17:10 +0100, Stut wrote:
>>>> On 27 May 2008, at 17:06, Yui Hiroaki wrote:
>>>>> I would like to have some question.
>>>>>
>>>>> For example,
>>>>> I am in http://example.com/?12324242
>>>>>
>>>>> I would like to REDIRECT from http://example.com/?1312323232
>>>>> to http://example.com/
>>>>>
>>>>> I can REDIRECT from http://example.com/index.php to http://example.com
>>>>>
>>>>>
>>>>> Please do tell me how I can redirect!
>>>>>
>>>>>
>>>>> This is the sample what I test below!
>>>>>
>>>>> <?php
>>>>> if ($_SERVER['REQUEST_URI'] == '/index.php') {
>>>>> header("HTTP/1.1 301 Moved Permanently");
>>>>> header("Location: http:///example.com/");
>>>>> exit();
>>>>> }
>>>>> ?>
>>>>
>>>> 1) Why? Redirects should be avoided where possible for performance
>>>> reasons.
>>>
>>> Didn't this topic get covered several months back. I always do
>>> redirects
>>> so as not to bugger browser history, titles, indexing, etc. If
>>> someone
>>> requests a page and they need to be logged in, I redirect to the
>>> login
>>> page, I never just present the login page... that's just incorrect
>>> from
>>
>> Personally I tend to only use redirects when a form handler has done
>> it's job to avoid evil messages when the user hits back. However, I
>> have used both redirected and non-redirected login workflows in the
>> past for various reasons, and I don't believe there is a "standard"
>> way to do it. It depends on how the site will be used and by whom.
>>
>>> a hierarchical and semantic point of view. Similarly, if I'm doing
>>> 404
>>> handling with fuzzy request sniffing to determine what was actually
>>> requested, I again perform a redirect once I've ascertained what was
>>> probably desired. If you don't, then Google and other search engines
>>> will index these malformed URLs instead of the correct URL.
>>
>> The correct response to a 404 page is 404. No arguments. If you
>> redirect missing pages then your site effectively contains an
>> infinite
>> number of pages. By all means display a useful page when you return
>> your 404 but not marking it as a missing page does little if anything
>> for your SEO rank and absolutely nothing for your users.
>
> 404 "Not Found", but it was found, but it's not where you asked for
> it,
> it's over there... we've permanently moved it from here to there (even
> if only virtually)... let's redirect you to the correct location.
> Since
> you perform a redirect to the correct location, the content is
> appropriately indexed where it actually exists. If you return a 404
> status I'm pretty sure Google discards the content.

If you can successfully fulfil the request then it's not a 404, but I
would question why you're getting requests for URLs that don't exist
but that you can accurately service. If you're using the URL as a
search field then your site truly has no missing pages.

However, in that case it's unlikely you'll be redirecting since for a
lot of queries you'll end up with multiple results meaning you're not
accurately fulfilling the request unless there's only one result from
the search. In that case I would agree that a redirect is the done
thing - except where the user got there by doing a search, which is
where things get cloudy as some would say it's appropriate to show
search results since that's the reasonable user expectation, and
others would say it should redirect to the single result - where I'd
come down on that would depend on the content and average user profile.

*breath!*

If you return a 404 Google does indeed discard the content - that's
the logical thing for it to do. 301's allow it to reduce the URLs
used to access your site to a core set of "real" content. Given that,
I agree to your premise that if you can successfully fulfil the
request by redirecting then you should, but only if it's an accurate
response to the request and not a "best guess". Best guesses should be
presented to the user (and Google) as a page suggesting content and
providing other ways to find it if your suggestion is not correct.

I'm starting to ramble so I'll stop here. I hope the point I'm making
is clear in there somewhere.

>> IMHO if you're going to use a semantic argument to defend one point
>> you need to carry that attitude throughout.
>
> My semantic argument is still intact. If I found it, then it's not
> deserving of "404 Not Found" status. Sure it may not be at the
> requested
> location, but that's what the moved status is for.

The 301 status code was created so web developers can re-organise
their websites without adversely affecting the user experience. A side
effect of this is that search engines also use them to keep their
index up to date without affecting the sites ranking.

> Here's a physical world analogy. Walk into a hardware store ask for
> object X. If they have it they will tell you. If they don't then
> either
> they will say, "Sorry, we don't have that. I don't have a clue where
> you
> can get it", or if they do know (and want to help) they'll say "It's
> over there at Rob's Hardware Store". What they almost certainly won't
> say is hang on, then run over to Rob's hardware Store, buy item X,
> come
> back and try to sell it to you. Almost certainly, but who knows,
> people
> do weird things sometimes :)

Taking that analogy a step further, the original hardware store is
unlikely to pick you up and physically take you to Rob's Hardware
Store. In fact you said it... [they'll say "It's over there]... which
in web terms would be a page saying "we couldn't find what you were
looking for where you were looking, but we found it over there".
That's what I'm advocating.

> So here's something else since you played the performance card.
> Click on
> the following link and tell me where you end up when not already
> logged
> in:
>
> http://mail.google.com/mail/
>
> I'm sure Google had a good reason for that behaviour, as in it's
> follows
> more correctly the standard expected request behaviour, and I'm sure
> they get a LOT of hits ;)

First off I really do wish people would get it out of their heads that
just because a company such as Google does something it's the best or
right way to do it. Secondly there are two separate scenario's that
are being mixed up.

Scenario 1 is redirecting when someone comes into your site from an
incorrect URL. Whether that incorrect URL is incorrect by design or
not is beside the point. For the purposes of bookmarking and search
engine friendliness the logical thing to do here is to redirect to the
correct URL with a 301 status code. As for the Gmail example you cite,
Google uses a single sign-on for all of its services, which is a
different kettle of fish. IOW it was a bad example. They redirect
because the sign-on functionality does not exist within the Gmail app,
it's external (ok, same root domain but you know what I mean).

Scenario 2 is redirecting within the same website. In the case of the
OP he's getting a request for the index page with some info in the
query string. He then wants to redirect to the same page but without
the query string. Let's assume the ID is an affiliate ID and he wants
to get rid of it to have a clean URL for people to bookmark. I can
kinda understand that, and it would come under Scenario 1.

However, the scenario in question is login which land squarely in
scenario 2. I mainly work on a site where 90% of it is accessible
anonymously. When you hit something that requires you to login it
redirects you to the login page. It does this because session handling
is done on a separate cluster. If that was not the case then I'd be
showing the login form inline because it saves the server an HTTP
request, PHP processing and potentially DB access... IOW server-side
resources. That may not be a big deal on small sites but on large busy
sites it could be fatal.

Let's take a step back and look at the HTTP spec. In the good old days
all authenticated access was done through HTTP authentication. If a
resource requiring a login was accessed anonymously the server returns
a status code indicating that a username and password was required.
Note no redirects, just a login form being displayed (albeit by the
browser rather than via HTML).

Ok, having typed that I'm not sure it's relevant, but I can't be arsed
to delete it. My main point is that internal redirects are a waste of
resources if they can be avoided and don't, as far as I can tell,
provide any tangible benefit to anyone.

Feel free to correct me if you think I'm wrong.

-Stut

--
http://stut.net/

attached mail follows:


Hello:

I need to include a pair of negations with two complete word into a regular
expresion for preg_replace. How to do this?
I want to replace "I want to be a SUN and a SIR" with "FRIKI FRIKI FRIKI
FRIKI FRIKI SUN FRIKI FRIKI SIR"

ie. the words are: SUN and SIR. And the replacement word is: FRIKI

$st = preg_replace ("\b([^S][^U][^N])|([^S][^I][^R]\b)", "FRIKI",$st);

This does not match

Anyone hep me?

Thanks

attached mail follows:


If that is the case, then the task is admittedly harder, but not impossible
;)

As for PDF manipulation & merging directly in PHP (with the help of imagick
extension), I will be posting the code to my blog (the website associated
with my email address) as per Scott MacVicar's suggestion, within the week.

- spoon

""Bastien Koert"" <phpstergmail.com> wrote in message
news:d7b6cab70805270923i78db9acag3ad818447c96fb35mail.gmail.com...
> On Tue, May 27, 2008 at 11:46 AM, Christian Flickinger <spoonnexdot.net>
> wrote:
>
>> It can certainly be done. It can easily be done using the Imagick
>> extension
>> (Image Magick extension for PHP), as I have just done something similar
>> (taking multiple PDFs and combining into flattened multi-page PDFs)
>>
>> Is PHP the best language for this? Depends on your knowledge and confort
>> level with PHP. The best language is the language you know best and can
>> easily accomodate your requirements.
>>
>> - spoon
>>
>>
> Christian,
>
> Interesting to know, however the OP's question was about using PHP to run
> the scanner, not on the already present PDFs in the FS. Can your solution
> handle the scanning? Could / Would you be willing to share you solution on
> merging the PDFs? That is something that I am interested in...
>
> Thanks,
> --
>
> Bastien
>
> Cat, the other other white meat
>

attached mail follows:


PDFTK is a great tool, but if you want to keep everything inside PHP, using
imagick is great.

I use PDFTK to populate form fields in PDF files before I do other things
using imagick.

- spoon

"Brady Mitchell" <mydarbgmail.com> wrote in message
news:ACA38488-8B46-4B51-871D-2D583DD1D311gmail.com...
>
> On May 27, 2008, at 923AM, Bastien Koert wrote:
>> Interesting to know, however the OP's question was about using PHP to
>> run
>> the scanner, not on the already present PDFs in the FS.
>
> That's not how I read the question, but clearly I could be wrong...
>
>
>> Could / Would you be willing to share you solution on
>> merging the PDFs? That is something that I am interested in...
>
> I've been meaning to suggest that the OP look at pdftk
> (http://www.accesspdf.com/pdftk/ ) - though it's not a PHP solution, it's
> a great tool for working with PDFs. It can make otherwise tedious, time
> consuming tasks with PDFs quick and easy.
>
> Brady

attached mail follows:


I'm using the pear class Mail_RFC822::parseAddressList() which apparently only throws an
error_object for PEAR_Error.

The manual says that PEAR_Error is deprecated, so I'd like to use PEAR_Exception; but; am having
trouble getting it to recognize the error.

Can anyone help me with this?

attached mail follows:


I am writing code to read a bunch of xml files which describe
pharmaceutical drugs. They have namespace references at the top of each
file that look like this:

<document xmlns:voc="http://www.hl7.org/v3/voc" xmlns="urn:hl7-org:v3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hl7-org:v3
http://www.fda.gov/oc/datacouncil/schemas/spl/spl.xsd">

I am having a challenging time coming up with an xpath query that works
even after registering a namespace like this:

  $xpath->registerNamespace("voc","http://www.hl7.org/v3/voc" );

I am trying a query like this:

$qry = '//component' ;
$nodeList = $xpath->query($qry);

I can't seem to make it work. Could someone please advise?

thanks
Selwyn

The whole program looks like this:
 
$dom=new DOMDocument;
$dom->load('./828C40F4-5969-4254-9008-36AF15CC601B.xml') ;
$qry = '//component' ;
$nodeList = $xpath->query($qry);

header('Content-Type: text/plain');
foreach ($nodeList as $node)
{
     echo $dom->saveXML($node) . "\r\n";
}

--
Selwyn Polit
Computer Consulting, programming, web sites
512-696-0410
www.AustinProgressiveCalendar.com

attached mail follows:


Hi Folks,

This may not be strictly a PHP question but there may be something in
PHP to do what I want. I am in the process of putting together a pretty
basic website using MySql and PHP on a third party host. One of the
function is to allow known stockist download a catalogue (.pdf). I am
fine to do login etc. but I am not sure how to approach restricting
the catalogue. I can do it so that the link is only visible if the user
logins in, but that doesn't stop the link being downloadable even if it
is not visible. I was thinking I could put it in a location not visible
to the public and transfer it to a location that is when the user logs
in, something with a cryptic name etc... but that doesn't really sit
right with me and at very least gives me some house keeping issues....

Anybody got a suggestion as to the best way to handle this ?

TIA,
  JC