problem with include.

problem with include.

am 06.01.2008 21:19:55 von SoulIntruder

Hello folks.

I have a beginners question.

I have such script:

$User = $_POST['User'];
$Password = $_POST['Password'];
$Database = $_POST['Database'];

if (isset($User, $Password, $Database))
{
//do something here
}
else {
echo 'One or more of the connection parameters has not been set
up.';
}
?>

Now, I need to use some external functions. I need to include file
'common.php'. But when I do it like this:


include 'common.php';
$User = $_POST['User'];
$Password = $_POST['Password'];
$Database = $_POST['Database'];

if (isset($User, $Password, $Database))
{
//do something here
}
else {
echo 'One or more of the connection parameters has not been set
up.';
}
?>


nothing happens. I don't get any warning message but my script is not
running.

What is happening?

Thanks for your advice.

Re: problem with include.

am 06.01.2008 21:24:11 von Jonas Werres

> What is happening?

What makes you think that the generally working code is interesting but
the included code that causes the problem is not?

What is your error level? Is display_errors activated? Do you have
Access to the error log of the webserver?

Re: problem with include.

am 06.01.2008 21:31:37 von jonKushner

On Jan 6, 12:24 pm, Jonas Werres wrote:
> > What is happening?
>
> What makes you think that the generally working code is interesting but
> the included code that causes the problem is not?
>
> What is your error level? Is display_errors activated? Do you have
> Access to the error log of the webserver?


I don't see anything going on, which leads me to believe its working
fine. Add error_reporting(E_ALL | E_STRICT) inside common and run a
function inside the IF block that was icluded in common.

I.E.

// common.php
error_reporting(E_ALL | E_STRICT);

function scream_yayyyy( ) { echo "WOOOOOOOOOOT"; }


// main file
require_once 'common.php';
if( user && password && database ) scream_yayyyy();

Re: problem with include.

am 06.01.2008 21:51:39 von SoulIntruder

On 6 Sty, 21:24, Jonas Werres wrote:
> > What is happening?
>
> What makes you think that the generally working code is interesting but
> the included code that causes the problem is not?

I don't understand.

> What is your error level?
I don't know.
Is display_errors activated?
I guess so? Since I had (and saw) errors after runnig scripts.
Do you have
> Access to the error log of the webserver?

Yes I had. I've checked them out, but I have found nothing.

Re: problem with include.

am 06.01.2008 21:58:37 von SoulIntruder

> I don't see anything going on, which leads me to believe its working
> fine. Add error_reporting(E_ALL | E_STRICT) inside common and run a
> function inside the IF block that was icluded in common.
>
Thanks I did, what you said and still nothing. Let me tell you the
long story, instead of the short one;)

I've installed phpBB3 forum on my webserwer. I wanted to generate
posts automatically by running PHP script.

Here is the full script:


$User = $_POST['User'];
$Password = $_POST['Password'];
$Database = $_POST['Database'];

if (isset($User, $Password, $Database))
{
$link = mysql_connect('localhost', $User, $Password) or
die('Problems with connection occured: ' . mysql_error());

$db_selected = mysql_select_db($Database, $link);
if (!$db_selected)
{
mysql_close($link);
die( "Unable to select database");
}
$Result = mysql_query("SELECT topic_id FROM phpbb_topics,
phpbb_forums
WHERE topic_title = 'test tematu' AND phpbb_topics.forum_id =
phpbb_forums.forum_id
AND phpbb_forums.forum_name = 'PGIHASPFunctions' ");
if (!$Result) { print mysql_error() . "\n"; }
else {
if (mysql_num_rows($Result) > 1)
{
die("More than one record found, cannot update.\n");
}
elseif (mysql_num_rows($Result) == 1)
{
echo "Updating existing topic...\n";
}
else {
echo "Creating new topic...\n";
$Date = time() + 3600; //GMT + 1
$Result = mysql_query("SELECT forum_id FROM phpbb_forums WHERE
forum_name = 'PGIHASPFunctions' ");
if (!$Result) {
mysql_close($link);
die('Problems with finding forum.' . mysql_error() . "\n");
}
$ForumRow = mysql_fetch_array($Result);
$Forum_Id = $ForumRow['forum_id'];
// Create a topic
$TopicInsertQuery = "INSERT INTO phpbb_topics
( forum_id, icon_id, topic_attachment, topic_approved,
topic_reported, topic_title, topic_poster,
topic_time, topic_time_limit, topic_views, topic_replies,
topic_replies_real, topic_status,
topic_type, topic_first_post_id, topic_first_poster_name,
topic_first_poster_colour,
topic_last_post_id, topic_last_poster_id, topic_last_poster_name,
topic_last_poster_colour,
topic_last_post_subject, topic_last_post_time,
topic_last_view_time, topic_moved_id,
topic_bumped, topic_bumper, poll_title, poll_start, poll_length,
poll_max_options,
poll_last_vote, poll_vote_change)
VALUES ('$Forum_Id', '0', '0', '1', '0', 'test tematu', '2',
'$Date', '0', '0', '0', '0', '0', '0',
'0', 'Wodzu', 'AA0000', '0', '2', 'Wodzu', 'AA0000', '',
'$Date', '$Date', '0', '0', '0', '',
'0', '0', '1', '0', '0')";
$Result = mysql_query($TopicInsertQuery);
if (!$Result) {
mysql_close($link);
die('Problems with creating topic.' . mysql_error() . "\n");
}
$TopicSelectQuery = "SELECT topic_id FROM phpbb_topics WHERE
forum_id = '$Forum_Id' AND topic_time = '$Date'";
$Result = mysql_query($TopicSelectQuery);
if (!$Result) {
mysql_close($link);
die('Problems with finding newly inserted topic_id!.' .
mysql_error() . "\n");
}
$uid = $bitfield = $options = '';
$text = utf8_normalize_nfc(request_var('cos tutaj sobie napisalem',
'', true));
$text = generate_text_for_storage($text, $uid, $bitfield, $options,
true, true, true);
}
}
mysql_close($link);
}
else {
echo 'One or more of the connection parameters has not been set
up.';
}
?>


Everyting went fine until function :utf8_normalize_nfc.
I've received such error:
"Fatal error: Call to undefined function: utf8_normalize_nfc()"

So I was browsing internet and find out that I had to include
common.php file.
Unfortunately I can't define include_path, my webserver provider
doesn't allow that.

So I've copied my script into the folder where common.php exists.
I've included it at the top of the file and from now on I got silence
as a respone from server.
And nothing after include "common.php" doesn't execute.

Re: problem with include.

am 06.01.2008 22:20:15 von Jerry Stuckle

SoulIntruder wrote:
>> I don't see anything going on, which leads me to believe its working
>> fine. Add error_reporting(E_ALL | E_STRICT) inside common and run a
>> function inside the IF block that was icluded in common.
>>
> Thanks I did, what you said and still nothing. Let me tell you the
> long story, instead of the short one;)
>
> I've installed phpBB3 forum on my webserwer. I wanted to generate
> posts automatically by running PHP script.
>
> Here is the full script:
>
> >
> $User = $_POST['User'];
> $Password = $_POST['Password'];
> $Database = $_POST['Database'];
>
> if (isset($User, $Password, $Database))
> {
> $link = mysql_connect('localhost', $User, $Password) or
> die('Problems with connection occured: ' . mysql_error());
>
> $db_selected = mysql_select_db($Database, $link);
> if (!$db_selected)
> {
> mysql_close($link);
> die( "Unable to select database");
> }
> $Result = mysql_query("SELECT topic_id FROM phpbb_topics,
> phpbb_forums
> WHERE topic_title = 'test tematu' AND phpbb_topics.forum_id =
> phpbb_forums.forum_id
> AND phpbb_forums.forum_name = 'PGIHASPFunctions' ");
> if (!$Result) { print mysql_error() . "\n"; }
> else {
> if (mysql_num_rows($Result) > 1)
> {
> die("More than one record found, cannot update.\n");
> }
> elseif (mysql_num_rows($Result) == 1)
> {
> echo "Updating existing topic...\n";
> }
> else {
> echo "Creating new topic...\n";
> $Date = time() + 3600; //GMT + 1
> $Result = mysql_query("SELECT forum_id FROM phpbb_forums WHERE
> forum_name = 'PGIHASPFunctions' ");
> if (!$Result) {
> mysql_close($link);
> die('Problems with finding forum.' . mysql_error() . "\n");
> }
> $ForumRow = mysql_fetch_array($Result);
> $Forum_Id = $ForumRow['forum_id'];
> // Create a topic
> $TopicInsertQuery = "INSERT INTO phpbb_topics
> ( forum_id, icon_id, topic_attachment, topic_approved,
> topic_reported, topic_title, topic_poster,
> topic_time, topic_time_limit, topic_views, topic_replies,
> topic_replies_real, topic_status,
> topic_type, topic_first_post_id, topic_first_poster_name,
> topic_first_poster_colour,
> topic_last_post_id, topic_last_poster_id, topic_last_poster_name,
> topic_last_poster_colour,
> topic_last_post_subject, topic_last_post_time,
> topic_last_view_time, topic_moved_id,
> topic_bumped, topic_bumper, poll_title, poll_start, poll_length,
> poll_max_options,
> poll_last_vote, poll_vote_change)
> VALUES ('$Forum_Id', '0', '0', '1', '0', 'test tematu', '2',
> '$Date', '0', '0', '0', '0', '0', '0',
> '0', 'Wodzu', 'AA0000', '0', '2', 'Wodzu', 'AA0000', '',
> '$Date', '$Date', '0', '0', '0', '',
> '0', '0', '1', '0', '0')";
> $Result = mysql_query($TopicInsertQuery);
> if (!$Result) {
> mysql_close($link);
> die('Problems with creating topic.' . mysql_error() . "\n");
> }
> $TopicSelectQuery = "SELECT topic_id FROM phpbb_topics WHERE
> forum_id = '$Forum_Id' AND topic_time = '$Date'";
> $Result = mysql_query($TopicSelectQuery);
> if (!$Result) {
> mysql_close($link);
> die('Problems with finding newly inserted topic_id!.' .
> mysql_error() . "\n");
> }
> $uid = $bitfield = $options = '';
> $text = utf8_normalize_nfc(request_var('cos tutaj sobie napisalem',
> '', true));
> $text = generate_text_for_storage($text, $uid, $bitfield, $options,
> true, true, true);
> }
> }
> mysql_close($link);
> }
> else {
> echo 'One or more of the connection parameters has not been set
> up.';
> }
> ?>
>
>
> Everyting went fine until function :utf8_normalize_nfc.
> I've received such error:
> "Fatal error: Call to undefined function: utf8_normalize_nfc()"
>
> So I was browsing internet and find out that I had to include
> common.php file.
> Unfortunately I can't define include_path, my webserver provider
> doesn't allow that.
>
> So I've copied my script into the folder where common.php exists.
> I've included it at the top of the file and from now on I got silence
> as a respone from server.
> And nothing after include "common.php" doesn't execute.
>
>

Ah - new and very critical information.

You can't just include common.php and expect it to work. It depends on
the PHPBB3 environment being set up correctly. And, in fact, it has
tests to ensure that is the case.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================

Re: problem with include.

am 06.01.2008 23:17:11 von Jonas Werres

> I don't understand.
You post code that works. Then you post the same code with an
include-Statement in it. Thats a lot of code which has obviously nothing
to do with your problem, since it works without include and ... well ...
there's not much you can break in an include-Line.
So, just perhaps, it _might_ have to do with the code you included, so
one _could_ think it's worth a try to post it.

>> What is your error level?
> I don't know.
Erm. Find out?

> Yes I had. I've checked them out, but I have found nothing.
Ok? Run again, post it.

Re: problem with include.

am 06.01.2008 23:18:49 von Jonas Werres

Copy common.php, write
echo 'test';
at the bottom, see if that works.

Re: problem with include.

am 06.01.2008 23:36:01 von SoulIntruder

On 6 Sty, 23:17, Jonas Werres wrote:
> > I don't understand.
>
> You post code that works. Then you post the same code with an
> include-Statement in it. Thats a lot of code which has obviously nothing
> to do with your problem, since it works without include and ... well ...
> there's not much you can break in an include-Line.
> So, just perhaps, it _might_ have to do with the code you included, so
> one _could_ think it's worth a try to post it.
>

Now I get it ;)

Here is the common.php code:

/**
*
* @package phpBB3
* @version $Id: common.php,v 1.214 2007/11/18 15:37:17 naderman Exp $
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public
License
*
* Minimum Requirement: PHP 4.3.3
*/

/**
*/

if (!defined('IN_PHPBB'))
{
exit;
}

$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];

// Report all errors, except notices
//error_reporting(E_ALL ^ E_NOTICE);
error_reporting(E_ALL | E_STRICT);

/*
* Remove variables created by register_globals from the global scope
* Thanks to Matt Kavanagh
*/
function deregister_globals()
{
$not_unset = array(
'GLOBALS' => true,
'_GET' => true,
'_POST' => true,
'_COOKIE' => true,
'_REQUEST' => true,
'_SERVER' => true,
'_SESSION' => true,
'_ENV' => true,
'_FILES' => true,
'phpEx' => true,
'phpbb_root_path' => true
);

// Not only will array_merge and array_keys give a warning if
// a parameter is not an array, array_merge will actually fail.
// So we check if _SESSION has been initialised.
if (!isset($_SESSION) || !is_array($_SESSION))
{
$_SESSION = array();
}

// Merge all into one extremely huge array; unset this later
$input = array_merge(
array_keys($_GET),
array_keys($_POST),
array_keys($_COOKIE),
array_keys($_SERVER),
array_keys($_SESSION),
array_keys($_ENV),
array_keys($_FILES)
);

foreach ($input as $varname)
{
if (isset($not_unset[$varname]))
{
// Hacking attempt. No point in continuing unless it's a COOKIE
if ($varname !== 'GLOBALS' || isset($_GET['GLOBALS']) ||
isset($_POST['GLOBALS']) || isset($_SERVER['GLOBALS']) ||
isset($_SESSION['GLOBALS']) || isset($_ENV['GLOBALS']) ||
isset($_FILES['GLOBALS']))
{
exit;
}
else
{
$cookie = &$_COOKIE;
while (isset($cookie['GLOBALS']))
{
foreach ($cookie['GLOBALS'] as $registered_var => $value)
{
if (!isset($not_unset[$registered_var]))
{
unset($GLOBALS[$registered_var]);
}
}
$cookie = &$cookie['GLOBALS'];
}
}
}

unset($GLOBALS[$varname]);
}

unset($input);
}

// If we are on PHP >= 6.0.0 we do not need some code
if (version_compare(PHP_VERSION, '6.0.0-dev', '>='))
{
/**
* @ignore
*/
define('STRIP', false);
}
else
{
set_magic_quotes_runtime(0);

// Be paranoid with passed vars
if (@ini_get('register_globals') == '1' ||
strtolower(@ini_get('register_globals')) == 'on' || !
function_exists('ini_get'))
{
deregister_globals();
}

define('STRIP', (get_magic_quotes_gpc()) ? true : false);
}

if (defined('IN_CRON'))
{
$phpbb_root_path = dirname(__FILE__) . DIRECTORY_SEPARATOR;
}

if (!file_exists($phpbb_root_path . 'config.' . $phpEx))
{
die("

The config.$phpEx file could not be found.

\"{$phpbb_root_path}install/index.$phpEx\">Click here to install
phpBB

");
}

require($phpbb_root_path . 'config.' . $phpEx);

if (!defined('PHPBB_INSTALLED'))
{
// Redirect the user to the installer
// We have to generate a full HTTP/1.1 header here since we can't
guarantee to have any of the information
// available as used by the redirect function
$server_name = (!empty($_SERVER['SERVER_NAME'])) ?
$_SERVER['SERVER_NAME'] : getenv('SERVER_NAME');
$server_port = (!empty($_SERVER['SERVER_PORT'])) ? (int)
$_SERVER['SERVER_PORT'] : (int) getenv('SERVER_PORT');
$secure = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ?
1 : 0;

$script_name = (!empty($_SERVER['PHP_SELF'])) ?
$_SERVER['PHP_SELF'] : getenv('PHP_SELF');
if (!$script_name)
{
$script_name = (!empty($_SERVER['REQUEST_URI'])) ?
$_SERVER['REQUEST_URI'] : getenv('REQUEST_URI');
}

// Replace any number of consecutive backslashes and/or slashes with
a single slash
// (could happen on some proxy setups and/or Windows servers)
$script_path = trim(dirname($script_name)) . '/install/index.' .
$phpEx;
$script_path = preg_replace('#[\\\\/]{2,}#', '/', $script_path);

$url = (($secure) ? 'https://' : 'http://') . $server_name;

if ($server_port && (($secure && $server_port <> 443) || (!$secure &&
$server_port <> 80)))
{
$url .= ':' . $server_port;
}

$url .= $script_path;
header('Location: ' . $url);
exit;
}

if (defined('DEBUG_EXTRA'))
{
$base_memory_usage = 0;
if (function_exists('memory_get_usage'))
{
$base_memory_usage = memory_get_usage();
}
}

// Load Extensions
if (!empty($load_extensions))
{
$load_extensions = explode(',', $load_extensions);

foreach ($load_extensions as $extension)
{
@dl(trim($extension));
}
}

// Include files
require($phpbb_root_path . 'includes/acm/acm_' . $acm_type . '.' .
$phpEx);
require($phpbb_root_path . 'includes/cache.' . $phpEx);
require($phpbb_root_path . 'includes/template.' . $phpEx);
require($phpbb_root_path . 'includes/session.' . $phpEx);
require($phpbb_root_path . 'includes/auth.' . $phpEx);

require($phpbb_root_path . 'includes/functions.' . $phpEx);
require($phpbb_root_path . 'includes/functions_content.' . $phpEx);

require($phpbb_root_path . 'includes/constants.' . $phpEx);
require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);

// Set PHP error handler to ours
set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER :
'msg_handler');

// Instantiate some basic classes
$user = new user();
$auth = new auth();
$template = new template();
$cache = new cache();
$db = new $sql_db();

// Connect to DB
$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false,
defined('PHPBB_DB_NEW_LINK') ? PHPBB_DB_NEW_LINK : false);

// We do not need this any longer, unset for safety purposes
unset($dbpasswd);

// Grab global variables, re-cache if necessary
$config = $cache->obtain_config();

// Add own hook handler
require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);
$phpbb_hook = new phpbb_hook(array('exit_handler',
'phpbb_user_session_handler', 'append_sid', array('template',
'display')));

foreach ($cache->obtain_hooks() as $hook)
{
@include($phpbb_root_path . 'includes/hooks/' . $hook . '.' .
$phpEx);
}

?>




I think that I might not understand correctly the function which
performs
"include". When I include something it is not only compiled but it is
also runned?
In such case, there might be some statement in the included file that
exits from runned script?

> >> What is your error level?
> > I don't know.
>
> Erm. Find out?

Ok, but how? I am quite net to PHP and server related tasks..

>
> > Yes I had. I've checked them out, but I have found nothing.
>
> Ok? Run again, post it.

This error log is empty. But maybe it is not the same error log which
you refer to?

Re: problem with include.

am 06.01.2008 23:39:20 von SoulIntruder

On 6 Sty, 23:18, Jonas Werres wrote:
> Copy common.php, write
> echo 'test';
> at the bottom, see if that works.

it works, so i I guess, this statement sopts the script:

echo 'test';
if (!defined('IN_PHPBB'))
{
exit;
}

Re: problem with include.

am 06.01.2008 23:42:06 von Jerry Stuckle

SoulIntruder wrote:
> On 6 Sty, 23:18, Jonas Werres wrote:
>> Copy common.php, write
>> echo 'test';
>> at the bottom, see if that works.
>
> it works, so i I guess, this statement sopts the script:
>
> echo 'test';
> if (!defined('IN_PHPBB'))
> {
> exit;
> }
>

Amongst other things. The whole script depends on the proper values
being set before it is included.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================

Re: problem with include.

am 06.01.2008 23:45:06 von Jerry Stuckle

SoulIntruder wrote:
> On 6 Sty, 23:17, Jonas Werres wrote:
>>> I don't understand.
>> You post code that works. Then you post the same code with an
>> include-Statement in it. Thats a lot of code which has obviously nothing
>> to do with your problem, since it works without include and ... well ...
>> there's not much you can break in an include-Line.
>> So, just perhaps, it _might_ have to do with the code you included, so
>> one _could_ think it's worth a try to post it.
>>
>
> Now I get it ;)
>



>
>
> I think that I might not understand correctly the function which
> performs
> "include". When I include something it is not only compiled but it is
> also runned?
> In such case, there might be some statement in the included file that
> exits from runned script?
>

When you use include(), PHP includes the file, just as if you had
manually copied and pasted the contents of the file. This means any
code not in a function will be executed.

>>>> What is your error level?
>>> I don't know.
>> Erm. Find out?
>
> Ok, but how? I am quite net to PHP and server related tasks..
>
>>> Yes I had. I've checked them out, but I have found nothing.
>> Ok? Run again, post it.
>
> This error log is empty. But maybe it is not the same error log which
> you refer to?
>
>

In this case you probably won't see an error - it's probably the die()
call which is causing your problems. This is not an error.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================

Re: problem with include.

am 06.01.2008 23:56:01 von SoulIntruder

Thanks.

It finally worked after adding:

define('IN_PHPBB', true);

$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
require_once($phpbb_root_path . 'common.' . $phpEx);

Thanks for your time.