Вызов функции из включенного файла? - PullRequest
3 голосов
/ 03 мая 2011

Я делаю PHP-скрипт, который кое-что для меня делает, поэтому мне не нужно будет снова и снова печатать весь код в документах моего сайта.

Вот что я делаю:

// MyFunc.php
<?php
 function DoStuff()
 {
  $var = 'something'; 
  return $var;
 }
?>


// index.php
<html>
<head></head>
<body>
 Hi, I am currently doing <?php include "MyFunc.php"; echo DoStuff(); ?>, pretty cool, right?
</body>
</html>

Однако, похоже, моя функция не вызывается. Я делаю что-то не так?

Вот мой полный источник

//splashgen.php
<?php

$refid = $_GET['ref'];
$output = 'Company';

function GetSponsor()
{

    if($refid!='')
    {
        $dbhost = "localhost";
        $dbuser = "myuser";
        $dbpass = "mypass";

        $dbname = "mydb";

        $sqlselect = "SELECT * FROM egbusiness_members WHERE loginid='$refid';";

        $con = mysql_connect($dbhost,$dbuser,$dbpass) or die('Unable to connect to Database Server!');
        mysql_select_db($dbname) or die('Could Not Select Database!');

        $refid   = stripslashes($refid);
        $refid   = mysql_real_escape_string($refid);

        $result = mysql_query($sqlselect);

        while ($row = mysql_fetch_array($result))
           {
            $output = $row['name_f']." ".$row['name_l']." (".$refid.")";  
           } 
        mysql_close($con); 
    }   
    return $output;

}


?>

/////////

// index.php

...

<font style="font-size:19px" color="#0093C4" face="Calibri"><b>
This page was brought to you by: <?php $_GET['ref']; include "../splashgen.php"; echo GetSponsor(); ?> 
</b></font></div>
...

Ответы [ 6 ]

3 голосов
/ 03 мая 2011
<body>
 Hi, I am currently doing <?php include "MyFunc.php";  echo DoStuff(); ?>, pretty cool, right?
</body>

И убедитесь, что ваши php файлы должны начинаться с <?php

2 голосов
/ 03 мая 2011

Вы хотите, чтобы DoStuff() (с круглыми скобками) действительно вызывал функцию.Кроме того, ваш код в порядке.

1 голос
/ 03 мая 2011

Я подумал, что это потому, что я использовал переменную, не объявленную внутри функции, и, очевидно, функция нуждается в параметре, например:

Function DoStuff($var)
{
  if($var != '')
  {
   return 'I am currently '.$var;
  }
}

...

echo DoStuff('posting on Stack Overflow');
1 голос
/ 03 мая 2011

Вы забыли добавить скобки к вызову функции .. измените

    <body>
     Hi, I am currently doing <?php include "MyFunc.php"; echo DoStuff; ?>, 
pretty cool, right?
    </body>

на

    <body>
     Hi, I am currently doing <?php include "MyFunc.php"; 
echo DoStuff(); ?>, pretty cool, right?
    </body>

ОБНОВЛЕНИЕ

В ответ на вашобновить .. в вашем "полном источнике" ..

Изменить

function GetSponsor() {

на

function GetSponsor($refid) {

и в HTML

Изменить

<font style="font-size:19px" color="#0093C4" face="Calibri"><b>
This page was brought to you by: <?php $_GET['ref']; 
include "../splashgen.php"; echo GetSponsor(); ?> 
    </b></font>

что-то вроде

<font style="font-size:19px" color="#0093C4" face="Calibri"><b>
This page was brought to you by: 
<?php 
include "../splashgen.php"; 
$refid = $_GET['ref']; 
echo GetSponsor($refid); ?> 
</b></font>

Я также посоветую вам продезинфицировать этот $ refid, чтобы избежать инъекций sql ...

1 голос
/ 03 мая 2011

пропущенный паратез?

echo DoStuff();
0 голосов
/ 03 мая 2011

Вы проверили расположение включенного верно? попробуйте добавить "echo" hello world "вне функции в MyFunc.php, просто чтобы убедиться, что он вызывается.

...