Thread: [phplib-users] phplib and bookmarker - anyone still out there?
Brought to you by:
nhruby,
richardarcher
From: A. F. C. <af...@sh...> - 2009-12-09 03:11:34
|
Hi, Mmm... I see from the archives of this list that there hasn't been any activity in a long long time. Anybody still out there? I was using bookmarker years ago and it worked just fine. I accumulated many many bookmarks and then I upgraded from Debian woody to etch and it stopped working. Many OS, php, apache, etc... upgrades later, I got to debugging the problem. I had to change some code in bookmarker to accomodate php5 (it was written in the days of php3) but I'm now stuck with a problem with authentication. I can't log in. It appears that phplib is in charge of that, so I went looking for the latest version. In fact phplib has been updated quite a bit since the version that came packaged with bookmarker, so I installed the new files in the phplib directory where bookmarker wants it. I still can't get past the login screen (with user: bk, password: bk - the default administrator login/ password.) Is anyone using bookmarker these days? The author's web page has disappeared. Phplib hasn't been updated in a long time, is it also dead? This is my first foray into phplib so I could use a hint or two. How do I go about debugging this? Is there a better way than to put print() statements everywhere throughout the code? Augustine |
From: Lindsay H. <fmo...@fm...> - 2009-12-09 04:24:49
|
On Tue, 2009-12-08 at 22:09 -0500, A. F. Cano wrote: > Phplib hasn't been updated in a long time, is it also > dead? It's kinda dead, having been upstaged by PEAR, but a lot of us still have installed code which depends on PHPlib. I've been migrating some of this code to PEAR <http://pear.php.net/> routines and class by writing libraries which mimic the PHPlib API but rely on PEAR for their functionality. See <http://www.fmp.com/fmp/fmp_include/>. All the class files with "fmplib" in their names are PHPlib knockoffs and generally drop-in replacements unless you're using some of the more useless and arcane features of PHPlib. There's also a PermAuth class here which you may find useful. All these have substantial and hopefully adequate documentation in the header comments. > This is my first foray into phplib so I could use a hint or two. How do > I go about debugging this? Is there a better way than to put print() > statements everywhere throughout the code? Check out Krumo at <http://sourceforge.net/projects/krumo/>. You'll find it a big help. I still find, though, that using print or echo calls sprinkled throughout a PHP script has its place :-) -- Lindsay Haisley | "Never expect the people who caused a problem FMP Computer Services | to solve it." - Albert Einstein 512-259-1190 | http://www.fmp.com | |
From: A. F. C. <af...@sh...> - 2009-12-12 04:41:48
|
On Tue, Dec 08, 2009 at 09:44:19PM -0600, Lindsay Haisley wrote: > On Tue, 2009-12-08 at 22:09 -0500, A. F. Cano wrote: > > Phplib hasn't been updated in a long time, is it also > > dead? First, thanks for replying and the info below. It's taken a while to digest and learn some of this stuff... > It's kinda dead, having been upstaged by PEAR, but a lot of us still Mmm... So I installed PEAR and read quite a bit of the docs, but the class names don't have a 1 to 1 relationship with the phplib classes. As I was looking at something simpler than a rewrite, like replacing class names with the newer ones from PEAR, this option got pushed to the back burner. > have installed code which depends on PHPlib. I've been migrating some > of this code to PEAR <http://pear.php.net/> routines and class by > writing libraries which mimic the PHPlib API but rely on PEAR for their > functionality. See <http://www.fmp.com/fmp/fmp_include/>. All the I downloaded these right away and as they were closer to what bookmarker depended on, it was easier to replace class names, but then I got into other problems, like functions that don't exist in the fmp_include files, so it was back to square 1. > ... > Check out Krumo at <http://sourceforge.net/projects/krumo/>. You'll > find it a big help. I still find, though, that using print or echo > calls sprinkled throughout a PHP script has its place :-) This was good. I installed it and it's been helping debug the problem, in combination with print statements. I ended up installing the latest version of phplib where bookmarker expects it, but I'm having the same problem as with the old version. The login screen never lets me through. With some print statements I've found that the global variables in the php code $username and $password are not set. The values are entered with some javascript code in a template form. Looking around I've found this: http://www.irt.org/script/1065.htm but in this case the kludgy fix does nothing. At the end of the javascript code there is document.login.submit() but I haven't found this function yet. This is the javascript code: <script type="text/javascript"> <!-- start Javascript function doChallengeResponse() { str = document.login.username.value + ":" + MD5(document.login.password.value) + ":" + document.login.challenge.value; document.login.response.value = MD5(str); document.login.password.value = ""; //document.write(str); //document.write(MD5(document.login.password.value)); //document.write(document.login.response.value); document.login.submit(); } // end Javascript --> </script> The commented write statements return what is expected, so the problem is between document.login.submit() and the php global variables. Since this used to work in the days of php3, I wonder if something has changed that deals with the transmission of the variables between javascript and php at the server. Any other ideas out there? Thanks again for replying. Making some slow progress... Augustine |
From: Lindsay H. <fmo...@fm...> - 2009-12-12 06:20:28
|
On Fri, 2009-12-11 at 23:38 -0500, A. F. Cano wrote: > Mmm... So I installed PEAR and read quite a bit of the docs, but the > class names don't have a 1 to 1 relationship with the phplib classes. No, and the PEAR equivalent classes are much more sophisticated, with a lot more hooks. PHPlib wasn't a model or a guide when PEAR classes were written. Many times PEAR is overkill for a simple job, which is why I wrote the fmplib classes, which overlay the PHPlib API over the PEAR API. > As I was looking at something simpler than a rewrite, like replacing > class names with the newer ones from PEAR, this option got pushed to > the back burner. No, there's no such correspondence, for better or worse. > > have installed code which depends on PHPlib. I've been migrating some > > of this code to PEAR <http://pear.php.net/> routines and class by > > writing libraries which mimic the PHPlib API but rely on PEAR for their > > functionality. See <http://www.fmp.com/fmp/fmp_include/>. All the > > I downloaded these right away and as they were closer to what bookmarker > depended on, it was easier to replace class names, but then I got into > other problems, like functions that don't exist in the fmp_include > files, so it was back to square 1. The fmplib classes emulate a very large subset of the equivalent PHPlib classes. If there's something missing in them, I hope I've written the code clearly enough so that you, or anyone, could easily extend the functionality of these classes as needed. > > ... > > Check out Krumo at <http://sourceforge.net/projects/krumo/>. You'll > > find it a big help. I still find, though, that using print or echo > > calls sprinkled throughout a PHP script has its place :-) > > This was good. I installed it and it's been helping debug the problem, > in combination with print statements. I ended up installing the latest > version of phplib where bookmarker expects it, but I'm having the same > problem as with the old version. The login screen never lets me > through. With some print statements I've found that the global > variables in the php code $username and $password are not set. The > values are entered with some javascript code in a template form. Check your php.ini file and see if register_long_arrays = On or Off. This setting controls whether PHP recognizes the global arrays $HTTP_GET_VARS and friends or only the newer $_GET superglobal. PHPlib uses lots of long arrays, but modern PHP installations frequently have this variable set off. You can either turn it on, or convert the PHPlib scripts to use short arrays. I wrote a couple of conversion utilities which are available at <http://www.fmp.com/downloads/>. php_long_arrays.py converts long arrays to short arrays in code, and php_tags.py converts short PHP tags ("<?") to proper long tags ("<?php"). The programs are python scripts and self-doc, so they're easy to use. > Looking around I've found this: > > http://www.irt.org/script/1065.htm > > but in this case the kludgy fix does nothing. > > At the end of the javascript code there is document.login.submit() but > I haven't found this function yet. It's a javascript-driven way of submitting a form. > The commented write statements return what is expected, so the problem > is between document.login.submit() and the php global variables. > > Since this used to work in the days of php3, I wonder if something has > changed that deals with the transmission of the variables between > javascript and php at the server. The only true communication between JS and the server within the context of a page is the XMLHttpRequest object which is at the heart of AJAX technology. PHPlib doesn't use this, but simply relies on POST and GET to get values back to the server after a page submit. My guess is that your PHP installation doesn't properly recognize the long array globals mentioned above. -- Lindsay Haisley | "The difference between | PGP public key FMP Computer Services | a duck is because one | available at 512-259-1190 | leg is both the same" | http://pubkeys.fmp.com http://www.fmp.com | - Anonymous | |
From: A. F. C. <af...@sh...> - 2009-12-13 21:59:11
|
On Sat, Dec 12, 2009 at 12:20:14AM -0600, Lindsay Haisley wrote: > ... > > Check your php.ini file and see if register_long_arrays = On or Off. It was On, but right above that was "register_globals = Off". Turning that On solved the problem. Admittedly that's the quick fix, as register_globals should be Off. Maybe I'll dig into the code some more and figure out how to do away with the global variables, but at least bookmarker now works. > ... Thanks a bunch for your help! Augustine |
From: Lindsay H. <fmo...@fm...> - 2009-12-13 23:57:57
|
On Sun, 2009-12-13 at 15:00 -0500, A. F. Cano wrote: > On Sat, Dec 12, 2009 at 12:20:14AM -0600, Lindsay Haisley wrote: > > ... > > > > Check your php.ini file and see if register_long_arrays = On or Off. > > It was On, but right above that was "register_globals = Off". Turning > that On solved the problem. Admittedly that's the quick fix, as > register_globals should be Off. Maybe I'll dig into the code some more > and figure out how to do away with the global variables, but at least > bookmarker now works. Having register_globals on is considered a significant security risk, although in some circumstances you can get away with it. I've seen it exploited, and one of my hosting clients got in a fight with earthlink after someone exploited their code and Earthlink hosting had register-globals was on at the system level. I think the necessity of auto-registering globals was removed from PHPlib some time ago, but perhaps not from bookmarker. If the only problems you're having are with regard to logging in, you should be able to add the following lines to any file that needs these variables and the problem should be solved: $username = $_POST["username"]; $password = $_POST["password"]; -- Lindsay Haisley | "In an open world, | PGP public key FMP Computer Services | who needs Windows | available at 512-259-1190 | or Gates" | http://pubkeys.fmp.com http://www.fmp.com | | |