Avatar billede Slettet bruger
15. september 2007 - 22:20 Der er 18 kommentarer og
1 løsning

Mangende variable på tværs af inkluderede PHP-filer

Hej eksperter!

Jeg har til min PHP-baserede hjemmeside en fil, core.php, der indeholder funktioner til oprettelse af forskellige elementer på siden. core.php inkluderes i starten af min hovedside (indholder er her irrelevant), index.php. core.php inkluderer desuden en tredje fil, settings.php, i første linie. settings.php indeholder variable med præferencer for udførslen af funktionerne i core.php.
Problemet er så bare, at settings.php aldrig bliver inkluderet - alle variablene er i hvert fald udefinerede. Hvordan kan det være?
Avatar billede olebole Juniormester
15. september 2007 - 22:32 #1
<ole>

Det mest relevante er måske i virkeligheden indholdet af core.php. I det hele taget er netop indholdet af dine filer af stor betydning for at kunne svare fornuftigt. "Du gør noget forkert" er nok det tætteste, man kan komme det  :)

/mvh
</bole>
Avatar billede olebole Juniormester
15. september 2007 - 22:36 #2
- husker du f.eks. at 'importere' variablerne i dine evt. funktioner:

function doDaShit() {
    global $settings;  // - meget vigtig linje!
    // Gør noget med $settings
}
Avatar billede olebole Juniormester
15. september 2007 - 22:38 #3
- eller bruger du måske en forkert sti til inkluderingen af 'settings.php'? Hvorfra 'ser' du stien? Fra det dokument, der inkluderer 'core.php' - eller fra 'core.php' selv?

Uden indholdet af dine filer kan det blive en lang quiz  ;o)
Avatar billede Slettet bruger
16. september 2007 - 14:03 #4
Hmm... Tjekker lige filplaceringerne.
Avatar billede Slettet bruger
16. september 2007 - 14:03 #5
Hehe ja, jeg skriver et eksempel, hvis det bliver nødvendigt :)
Avatar billede Slettet bruger
16. september 2007 - 14:05 #6
Argh ok, her kommer alt indholdet - der er intet galt med filnavnene.
Avatar billede Slettet bruger
16. september 2007 - 14:05 #7
--- settings.php ---

<?PHP
   
    // SETTINGS
       
        // MySQL
        $MYSQL_username = "***";
        $MYSQL_password = "***";
        $MYSQL_database = "***";
        $MYSQL_tables["users"] = "***";
       
        // Drawing
        $DRAWING_Data_Author = "Toke Skovbo Krainert, 2007";
        $DRAWING_Body_BackgroundColor = "001133";
        $DRAWING_Body_TextFont = "verdana";
        $DRAWING_Body_TextSize = "11";
        $DRAWING_Window_HeadBackgroundColor = "002244";
        $DRAWING_Window_HeadTextColor = "AAAAFF";
        $DRAWING_Window_BodyBackgroundColor = "003355";
        $DRAWING_Window_BodyBorderColor = "AAAAFF";
        $DRAWING_Window_BodyTextColor = "AAAAFF";
        $DRAWING_Frame_HeadBackgroundColor = "002244";
        $DRAWING_Frame_HeadTextColor = "AAAAFF";
        $DRAWING_Frame_BodyBackgroundColor = "003355";
        $DRAWING_Frame_BodyBorderColor = "AAAAFF";
        $DRAWING_Frame_BodyTextColor = "AAAAFF";
        $DRAWING_Line_Source = "line.bmp";
        $DRAWING_Message_TextColor = "FF0000";
        $DRAWING_Detail_TextSize = "9";
        $DRAWING_Author_TextColor = "AAAAFF";
        $DRAWING_Author_TextSize = "10";
        $DRAWING_Button_BackgroundColor = "002244";
        $DRAWING_Button_BorderColor = "AAAAFF";
        $DRAWING_Button_TextColor = "AAAAFF";
        $DRAWING_Textfield_BackgroundColor = "001133";
        $DRAWING_Textfield_BorderColor = "AAAAFF";
        $DRAWING_Textfield_TextColor = "CCCCFF";
        $DRAWING_Password_BackgroundColor = "001133";
        $DRAWING_Password_BorderColor = "AAAAFF";
        $DRAWING_Password_TextColor = "CCCCFF";
       
?>
Avatar billede Slettet bruger
16. september 2007 - 14:06 #8
--- core.php ---

<?PHP
   
    // SETTINGS
       
        // Load settings
        include "settings.php";
       
       
    // SETUP FUNCTIONS
       
        // MySQL
        function ConnectToDatabase()
        {
            mysql_connect("localhost", $MYSQL_username, $MYSQL_password);
            mysql_select_db($MYSQL_database);
        }
       
       
    // SCRIPT FUNCTIONS
       
        // Convert marks
        function ConvertMarks($string)
        {
            return str_replace("\"", "\\\"", $string);
        }
       
       
    // SESSION FUNCTIONS
       
        // Get username
        function GetUsername()
        {
            if (isSet($_SESSION["username"]))
            {
                return $_SESSION["username"];
            }
            else
            {
                return false;
            }
        }
       
        // Set username
        function SetUsername($username)
        {
            return $_SESSION["username"] = $username;
        }
       
        // Get password
        function GetPassword()
        {
            if (isSet($_SESSION["password"]))
            {
                return $_SESSION["password"];
            }
            else
            {
                return false;
            }
        }
       
        // Set password
        function SetPassword($passwprd)
        {
            return $_SESSION["password"] = $password;
        }
       
       
    // DATABASE FUNCTIONS
       
        // Create profile
        function CreateProfile($username, $password, $mail)
        {
            mysql_query("INSERT INTO ".$MYSQL_tables["users"]." (username, password, mail) VALUES ('$username', '$password', '$mail')");
        }
       
        // Check profile
        function CheckProfile($username)
        {
            if (mysql_result(mysql_query("SELECT COUNT(*) FROM ".$MYSQL_tables["users"]." WHERE username='$username'"), 0))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
       
        // Edit profile
        function EditProfile($username, $newUsername, $newPassword, $newMail)
        {
            if ($newUsername !== false)
            {
                mysql_query("UPDATE ".$MYSQL_tables["users"]." SET username='$newUsername' WHERE username='$username'");
            }
            if ($newPassword !== false)
            {
                mysql_query("UPDATE ".$MYSQL_tables["users"]." SET password='$newPassword' WHERE username='$username'");
            }
            if ($newMail !== false)
            {
                mysql_query("UPDATE ".$MYSQL_tables["users"]." SET mail='$newMail' WHERE username='$username'");
            }
        }
       
        // Delete profile
        function DeleteProfile($username)
        {
            mysql_query("DELETE FROM ".$MYSQL_tables["users"]." WHERE username='$username'");
        }
       
       
    // DRAWING FUNCTIONS
       
        // Draw body style
        function DrawBodyStyle()
        {
            return "style=\"background-color:$DRAWING_Body_BackgroundColor;font-family:$DRAWING_Body_TextFont;font-size:$DRAWING_Body_TextSize\"";
        }
       
        // Draw window
        function DrawWindow($head, $body, $width)
        {
            return "<TABLE style=\"margin-left:auto;margin-right:auto;margin-top:25text-align:center;width:$width\"><TR><TD style=\"background-color:$DRAWING_Window_HeadBackgroundColor;border:solid;border-width:1;color:$DRAWING_Window_HeadTextColor;font-size:12;font-weight:bold;padding-bottom:2;padding-left:5;padding-right:5;padding-top:2\">$head</TD></TR><TR><TD style=\"background-color:$DRAWING_Window_BodyBackgroundColor;border:solid;border-color:$DRAWING_Window_BodyBorderColor;border-width:1;color:$DRAWING_Window_BodyTextColor;font-size:11;padding-bottom:5;padding-left:5;padding-right:5;padding-top:5\">$body</TD></TR></TABLE>";
        }
       
        // Draw frame
        function DrawFrame($head, $body, $width)
        {
            return "<TABLE style=\"margin-left:auto;margin-right:auto;margin-top:10;text-align:center;width:$width\"><TR><TD style=\"background-color:$DRAWING_Frame_HeadBackgroundColor;color:$DRAWING_Frame_HeadTextColor;font-size:12;padding-bottom:2;padding-left:5;padding-right:5;padding-top:2\">$head</TD></TR><TR><TD style=\"background-color:$DRAWING_Frame_BodyBackgroundColor;border:solid;border-color:$DRAWING_Frame_BodyBorderColor;border-width:1;color:$DRAWING_Frame_BodyTextColor;font-size:11;padding-bottom:5;padding-left:5;padding-right:5;padding-top:5\">$body</TD></TR></TABLE>";
        }
       
        // Draw line
        function DrawLine($width)
        {
            return "<IMG src=\"$DRAWING_Line_Source\" style=\"height:1;margin-bottom:5;margin-top:5;width:$width\" />";
        }
       
        // Draw message
        function DrawMessage($value)
        {
            return "<P style=\"color:$DRAWING_Message_TextColor;margin-bottom:0;margin-top:0\">$value</P>";
        }
       
        // Draw detail
        function DrawDetail($value)
        {
            return "<P style=\"text-align:left;font-size:$DRAWING_Detail_TextSize;margin-bottom:1;margin-top:3\">$value</P>";
        }
       
        // Draw author
        function DrawAuthor()
        {
            return "<P style=\"color:$DRAWING_Author_TextColor;font-size:$DRAWING_Author_TextSize;margin-top:0;text-align:center;\">$DRAWING_Data_Author</P>";
        }
       
        // Draw help
        function DrawNote($text, $note)
        {
            return "<ABBR title=\"$note\">$text</ABBR>";
        }
       
        // Draw dynamic
        function DrawDynamic($id, $value)
        {
            return "<DIV id=\"$id\">$value</DIV>";
        }
       
        // Draw button
        function DrawButton($name, $id, $value, $title, $width, $click)
        {
            return "<INPUT type=\"button\" name=\"$name\" id=\"$id\" value=\"$value\" title=\"$title\" style=\"background-color:$DRAWING_Button_BackgroundColor;border:solid;border-color:$DRAWING_Button_BorderColor;border-width:1;color:$DRAWING_Button_TextColor;font-size:12;width:$width\" onclick=\"$click\">";
        }
       
        // Draw textfield
        function DrawTextfield($name, $id, $value, $title, $width)
        {
            return "<INPUT type=\"text\" name=\"$name\" id=\"$id\" value=\"$value\" title=\"$title\" class=\"TEXT\" style=\"background-color:$DRAWING_Textfield_BackgroundColor;border:solid;border-color:$DRAWING_Textfield_BorderColor;border-width:1;color:$DRAWING_Textfield_TextColor;font-size:12;padding-bottom:1;padding-left:5;padding-right:5;padding-top:1;width:$width\">";
        }
       
        // Draw password
        function DrawPassword($name, $id, $value, $title, $width)
        {
            return "<INPUT type=\"password\" name=\"$name\" id=\"$id\" value=\"$value\" title=\"$title\" class=\"TEXT\" style=\"background-color:$DRAWING_Password_BackgroundColor;border:solid;border-color:$DRAWING_Password_BorderColor;border-width:1;color:$DRAWING_Password_TextColor;font-size:12;padding-bottom:1;padding-left:5;padding-right:5;padding-top:1;width:$width\">";
        }
       
       
       
?>
Avatar billede Slettet bruger
16. september 2007 - 14:06 #9
index.php er irrelevant, da fejlen jo opstår mellem core.php og settings.php.
Avatar billede Slettet bruger
16. september 2007 - 14:30 #10
Her er fejlmeddelelserne:



Notice: Undefined variable: DRAWING_Detail_TextSize in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 149

Notice: Undefined variable: DRAWING_Textfield_BackgroundColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 179

Notice: Undefined variable: DRAWING_Textfield_BorderColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 179

Notice: Undefined variable: DRAWING_Textfield_TextColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 179

Notice: Undefined variable: DRAWING_Detail_TextSize in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 149

Notice: Undefined variable: DRAWING_Password_BackgroundColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 185

Notice: Undefined variable: DRAWING_Password_BorderColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 185

Notice: Undefined variable: DRAWING_Password_TextColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 185

Notice: Undefined variable: DRAWING_Line_Source in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 137

Notice: Undefined variable: DRAWING_Button_BackgroundColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 173

Notice: Undefined variable: DRAWING_Button_BorderColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 173

Notice: Undefined variable: DRAWING_Button_TextColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 173

Notice: Undefined variable: DRAWING_Frame_HeadBackgroundColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 131

Notice: Undefined variable: DRAWING_Frame_HeadTextColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 131

Notice: Undefined variable: DRAWING_Frame_BodyBackgroundColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 131

Notice: Undefined variable: DRAWING_Frame_BodyBorderColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 131

Notice: Undefined variable: DRAWING_Frame_BodyTextColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 131

Notice: Undefined variable: DRAWING_Button_BackgroundColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 173

Notice: Undefined variable: DRAWING_Button_BorderColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 173

Notice: Undefined variable: DRAWING_Button_TextColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 173

Notice: Undefined variable: DRAWING_Frame_HeadBackgroundColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 131

Notice: Undefined variable: DRAWING_Frame_HeadTextColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 131

Notice: Undefined variable: DRAWING_Frame_BodyBackgroundColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 131

Notice: Undefined variable: DRAWING_Frame_BodyBorderColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 131

Notice: Undefined variable: DRAWING_Frame_BodyTextColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 131

Notice: Undefined variable: DRAWING_Button_BackgroundColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 173

Notice: Undefined variable: DRAWING_Button_BorderColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 173

Notice: Undefined variable: DRAWING_Button_TextColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 173

Notice: Undefined variable: DRAWING_Frame_HeadBackgroundColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 131

Notice: Undefined variable: DRAWING_Frame_HeadTextColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 131

Notice: Undefined variable: DRAWING_Frame_BodyBackgroundColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 131

Notice: Undefined variable: DRAWING_Frame_BodyBorderColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 131

Notice: Undefined variable: DRAWING_Frame_BodyTextColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 131

Notice: Undefined variable: DRAWING_Author_TextColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 155

Notice: Undefined variable: DRAWING_Author_TextSize in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 155

Notice: Undefined variable: DRAWING_Data_Author in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 155

Notice: Undefined variable: DRAWING_Window_HeadBackgroundColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 125

Notice: Undefined variable: DRAWING_Window_HeadTextColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 125

Notice: Undefined variable: DRAWING_Window_BodyBackgroundColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 125

Notice: Undefined variable: DRAWING_Window_BodyBorderColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 125

Notice: Undefined variable: DRAWING_Window_BodyTextColor in c:\programmer\easyphp1-8\www\ovrkll\core.php on line 125
Avatar billede dkfire Nybegynder
16. september 2007 - 15:02 #11
Hvis du nu ser efter hvad Ole har skrevet ang. globale variabler og funktioner så kan du rette mange af dine fejl.
Avatar billede Slettet bruger
16. september 2007 - 15:05 #12
Okay, troede bare at variabler talte som lokale når jeg inkluderede på denne måde.
Avatar billede dkfire Nybegynder
16. september 2007 - 15:10 #13
Jamen, for at en funktion skal få fat på en variabel som er sat uden for funktionen, bliver du nød til at fortælle funktionen at den skal lede globalt og ikke inden i funktionen.
Avatar billede Slettet bruger
16. september 2007 - 15:11 #14
Okay, sådan. Der er tilsyneladende stadig mange basale ting, jeg endnu ikke ved om PHP ;)
Avatar billede Slettet bruger
16. september 2007 - 15:49 #15
Så, nu virker det! global var roden til problemet...
Bare smid nogle svar.
Avatar billede dkfire Nybegynder
16. september 2007 - 15:55 #16
Ingen svar fra mig, det er Ole som skal have point.
Avatar billede olebole Juniormester
16. september 2007 - 16:52 #17
Hvordan variabler administreres i forhold til forskellige scopes varierer (som så meget andet) fra sprog til sprog.

I JavaScript er variabler således i udgangspunktet globale. Regel #2 for JS siger, at variabler hører til det scope, i hvilket de er erklæret med 'var'.

I PHP er variabler derimod i udgangspunktet lokale. Regel #2 siger, at variabler 'gøres tilgængelige i' eller 'hentes fra' det globale scope med 'global'.
Avatar billede Slettet bruger
16. september 2007 - 18:26 #18
Okay, begge dele lyder jo meget logisk - man skal bare være opmærksom på det :)
Tak igen.
Avatar billede olebole Juniormester
16. september 2007 - 19:04 #19
- velbekomme - og tak for points  :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester