Re: [PHP] PHP can't access txt files (but TCL can..??)
On Sat, 2002-05-11 at 14:53, Phil Powell wrote: TCL 1, PHP 0 Ok, I am frustrated.. here is my code and this portion has to be done in PHP. I have a frame that can only be accessed if 1 of 2 things occur: 1) if $HTTP_REFERER has a specific value 2) if your nickname passed in the query string is found in the existing nicknames.txt file found in /chat/nicknames.txt Here is the code: Notes: o What version of PHP? o Is register_globals on or off? i.e. are you sure $DOCUMENT_ROOT has a value and that you're not trying to open '/chat/nicknames.txt'? o Quote the 'r' in the fopen() call. o Try this all with error_reporting(E_ALL) and fix (not with '@') everything it complains about. o Your second regex checks that $contents contains at least one alpha- numeric or an underscore or a hyphen. Looks like it should be checking that the string contains *only* those characters. o fread() takes 2 parameters, not one. o 'damage galore' doesn't tell us anything. What *exactly* is the current result of running the below? ? // Security measure to prevent bookmarking of page unless nickname exists in nicknames.txt $contents = ; if (!preg_match(/\bchat_process_nickname\b/i, $HTTP_REFERER)) { $canAccessChatroom = 1; if (strlen($nickname) 2) $canAccessChatroom = 0; if (!file_exists($DOCUMENT_ROOT . /chat/nicknames.txt)) $canAccessChatroom = 0; if ($canAccessChatroom == 1) { $fileID = fopen($DOCUMENT_ROOT. /chat/nicknames.txt, r) or die (could not open file); if (!$fileID) { $canAccessChatroom = 0; } else { $contents = fread($fileID); fclose($fileID); } } if ($canAccessChatroom == 1 strlen($contents) == 0) $canAccessChatroom = 0; if ($canAccessChatroom == 1 !preg_match(/[a-zA-Z0-9_\-]+/, $contents)) $canAccessChatroom == 0; if ($canAccessChatroom == 1) { if (!preg_match(/\b$nickname\b/i, $contents)) $canAccessChatroom == 0; } if ($canAccessChatroom == 0) { echo meta http-equiv=Refresh content='1;URL=http://; . $SERVER_NAME . /chat/chat_login.php'\n; echo script\n!--\n location.href='http://; . $SERVER_NAME . /chat/chat_login.php';\n\/\/--\n/script\n; } } ? No matter what I do, however, the file cannot be accessed if it exists and causes damage galore. Can anyone out there help me figure out what I did wrong; I'm completely stumped and may have to rewrite this portion of the chatroom in TCL, all of my TCL scripts have had NO problems whatsoever accessing the txt files. Phil -- Torben Wilson [EMAIL PROTECTED] http://www.thebuttlesschaps.com http://www.hybrid17.com http://www.inflatableeye.com +1.604.709.0506 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] PHP can't access txt files (but TCL can..??)
TCL 1, PHP 0 Ok, I am frustrated.. here is my code and this portion has to be done in PHP. I have a frame that can only be accessed if 1 of 2 things occur: 1) if $HTTP_REFERER has a specific value 2) if your nickname passed in the query string is found in the existing nicknames.txt file found in /chat/nicknames.txt Here is the code: ? // Security measure to prevent bookmarking of page unless nickname exists in nicknames.txt $contents = ; if (!preg_match(/\bchat_process_nickname\b/i, $HTTP_REFERER)) { $canAccessChatroom = 1; if (strlen($nickname) 2) $canAccessChatroom = 0; if (!file_exists($DOCUMENT_ROOT . /chat/nicknames.txt)) $canAccessChatroom = 0; if ($canAccessChatroom == 1) { $fileID = fopen($DOCUMENT_ROOT. /chat/nicknames.txt, r) or die (could not open file); if (!$fileID) { $canAccessChatroom = 0; } else { $contents = fread($fileID); fclose($fileID); } } if ($canAccessChatroom == 1 strlen($contents) == 0) $canAccessChatroom = 0; if ($canAccessChatroom == 1 !preg_match(/[a-zA-Z0-9_\-]+/, $contents)) $canAccessChatroom == 0; if ($canAccessChatroom == 1) { if (!preg_match(/\b$nickname\b/i, $contents)) $canAccessChatroom == 0; } if ($canAccessChatroom == 0) { echo meta http-equiv=Refresh content='1;URL=http://; . $SERVER_NAME . /chat/chat_login.php'\n; echo script\n!--\n location.href='http://; . $SERVER_NAME . /chat/chat_login.php';\n\/\/--\n/script\n; } } ? No matter what I do, however, the file cannot be accessed if it exists and causes damage galore. Can anyone out there help me figure out what I did wrong; I'm completely stumped and may have to rewrite this portion of the chatroom in TCL, all of my TCL scripts have had NO problems whatsoever accessing the txt files. Phil -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] PHP can't access txt files (but TCL can..??)
Swell, I found the error, and it was a STUPID one.. I misconfigured fread()! Thanx though Phil TCL 1, PHP 2 - Original Message - From: Lars Torben Wilson [EMAIL PROTECTED] To: Phil Powell [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Sent: Saturday, May 11, 2002 6:13 PM Subject: Re: [PHP] PHP can't access txt files (but TCL can..??) On Sat, 2002-05-11 at 14:53, Phil Powell wrote: TCL 1, PHP 0 Ok, I am frustrated.. here is my code and this portion has to be done in PHP. I have a frame that can only be accessed if 1 of 2 things occur: 1) if $HTTP_REFERER has a specific value 2) if your nickname passed in the query string is found in the existing nicknames.txt file found in /chat/nicknames.txt Here is the code: Notes: o What version of PHP? o Is register_globals on or off? i.e. are you sure $DOCUMENT_ROOT has a value and that you're not trying to open '/chat/nicknames.txt'? o Quote the 'r' in the fopen() call. o Try this all with error_reporting(E_ALL) and fix (not with '@') everything it complains about. o Your second regex checks that $contents contains at least one alpha- numeric or an underscore or a hyphen. Looks like it should be checking that the string contains *only* those characters. o fread() takes 2 parameters, not one. o 'damage galore' doesn't tell us anything. What *exactly* is the current result of running the below? ? // Security measure to prevent bookmarking of page unless nickname exists in nicknames.txt $contents = ; if (!preg_match(/\bchat_process_nickname\b/i, $HTTP_REFERER)) { $canAccessChatroom = 1; if (strlen($nickname) 2) $canAccessChatroom = 0; if (!file_exists($DOCUMENT_ROOT . /chat/nicknames.txt)) $canAccessChatroom = 0; if ($canAccessChatroom == 1) { $fileID = fopen($DOCUMENT_ROOT. /chat/nicknames.txt, r) or die (could not open file); if (!$fileID) { $canAccessChatroom = 0; } else { $contents = fread($fileID); fclose($fileID); } } if ($canAccessChatroom == 1 strlen($contents) == 0) $canAccessChatroom = 0; if ($canAccessChatroom == 1 !preg_match(/[a-zA-Z0-9_\-]+/, $contents)) $canAccessChatroom == 0; if ($canAccessChatroom == 1) { if (!preg_match(/\b$nickname\b/i, $contents)) $canAccessChatroom == 0; } if ($canAccessChatroom == 0) { echo meta http-equiv=Refresh content='1;URL=http://; . $SERVER_NAME . /chat/chat_login.php'\n; echo script\n!--\n location.href='http://; . $SERVER_NAME . /chat/chat_login.php';\n\/\/--\n/script\n; } } ? No matter what I do, however, the file cannot be accessed if it exists and causes damage galore. Can anyone out there help me figure out what I did wrong; I'm completely stumped and may have to rewrite this portion of the chatroom in TCL, all of my TCL scripts have had NO problems whatsoever accessing the txt files. Phil -- Torben Wilson [EMAIL PROTECTED] http://www.thebuttlesschaps.com http://www.hybrid17.com http://www.inflatableeye.com +1.604.709.0506 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php