Avatar billede hewa Nybegynder
04. februar 2007 - 14:46 Der er 12 kommentarer og
1 løsning

Mix af udtræk fra en database og php kode

Jeg har tidligere haft et mix af tekst og php kode i en celle i en database, det trak jeg så ud med eval(). I går lærte jeg, at det ikke var så sundt, at bruge eval og have php kode i databasen.

Min tanke var så, at teksten skulle være i databasen og så kunne jeg include min php kode, når dokumentet blev skabt - men det kan jeg slet ikke få til at virke. Jeg har både prøvet med <!-- #include file="dinelinks.php" --> og include("dinelinks.php");

Hvad gør jeg for at få include til at virke, eller hvad gør alle andre, der har et mix af tingene?

Det skal lige siges, jeg bruger one.com, og de kører php i safe mode, hvis det har noget at sige.
Avatar billede showsource Seniormester
04. februar 2007 - 15:28 #1
ikke sundt => afhænger vel af om DU sørger for hvad bliver afviklet, eller om brugere kan gøre det også.

Altså, hvis en hacker kan komme i din db, kan han/hun vel også ændre dine filer, hvilket vel formodentlig er det første en hacker prøver på?

Med andre ord, brugen af eval() er selvf. risikabel, men er vel næppe større end brugen af include()

Uanset hvad, skal du sørge for at lave din kode "skudsikker"
Avatar billede hewa Nybegynder
04. februar 2007 - 15:38 #2
Så include er lige så usikker..?

Men hvis jeg bruger include, hvordan kan jeg så bruge den i virkeligheden, jeg har jo ikke kunnet få det til at virke?
Avatar billede showsource Seniormester
04. februar 2007 - 15:45 #3
usikker => al phpkode er vel usikker, vis ikke den laves ordentligt.

Men din include,

<?php
include("filnavn.php");
?>

burde virke hvis filen ligger i samme mappe
Avatar billede showsource Seniormester
04. februar 2007 - 15:46 #4
<?php

if(is_file("filnavn.php")) {
include("filnavn.php");
}else{
echo"Nix, filen findes ikke";
}

?>
Avatar billede showsource Seniormester
04. februar 2007 - 15:48 #5
Eller, ( fra manualen )

<?php
$filename = 'filnavn.php';
if (is_readable($filename)) {
    echo 'The file is readable';
} else {
    echo 'The file is not readable';
}
?>
Avatar billede hewa Nybegynder
04. februar 2007 - 16:03 #6
Det er jo det, jeg vil gerne lave det sikkert - selvom jeg synes, det hele virker enormt svært, men jeg er også ret ny i det her :)

Jeg skal jo kunne lave en include i en celle i en tabel, og det virker ikke, hvis jeg bruger <? include("filnavn.php"); ?>
Andre ideer?
Avatar billede showsource Seniormester
04. februar 2007 - 16:08 #7
Foruden to nævnte ex.

<?php
include("filnavn.php");
?>

eller

<?php
include($_SERVER["DOCUMENT_ROOT"] ."/filnavn.php");
?>

Så ligger filnavn.php i roden af dit domain.

Og brug altid
<?php
som starttag. Det med <? er "sløseri" omend det virker på de fleste hosts.
Avatar billede showsource Seniormester
04. februar 2007 - 16:08 #8
Og hvis det ikke virker, er det nok fordi der er fejl i dit script, f.eks. du har allerede includet filen
Avatar billede hewa Nybegynder
04. februar 2007 - 16:13 #9
Men er vi ikke enige om, at hvis jeg bruger <?php include("filnavn.php"); ?> i en celle i databasen, kan den kun bruges, hvis jeg bruger eval()?

Jeg har kun brugt <? fremfor <?php, er det mere sikkert at bruge <?php?
Avatar billede hewa Nybegynder
04. februar 2007 - 17:13 #10
Jeg tænkte, jeg lige kunne prøve at ridse min problemstilling op:
Min menu bliver genereret dynamisk, hvor den slår op i databasen og hiver de menupunkter ud, der skal vises.
Alle de sider, der kun indeholder tekst, er der ikke nogen problemer med, der hives teksten bare ud, når jeg trykker på et menupunkt.

Der hvor 'ballanden' opstår, er, når der er noget tekst øverst på siden, og længere nede er der noget php, der skal vise noget fra en anden tabel i databasen. Det kunne f.eks. være et af områderne, hvor man kan "fortælle sin historie". Overst står der noget tekst, der fortæller, hvad man kan her og længere ned er der et link til "Opret din egen historie" og lidt længere nede vises en oversigt, over de historier, der allerede er oprettet og klikker man på en af dem, vises historien.

Jeg kunne selvfølgelig begynde at hård-kode en menu og vise den fil, man så trykker op, og der vil så være en tekst i toppen og længere nede php koden, der så kalder det, man gerne vil, oprette en historie eller vise en, der er oprettet af en anden.

Og hele ideen med at lave det med php og i database, er jo, at det hele gerne skulle være dynamisk og nemt at have med at gøre, når det først er lavet.

Forstår du problemstillingen?
- det er jo det samme en millinon må have stået i før :)
Avatar billede steven_ Nybegynder
05. februar 2007 - 12:26 #11
Avatar billede hewa Nybegynder
05. februar 2007 - 17:02 #12
Øh, Steven, det kan jeg ikke lige se, hvad det har med mit spørgsmål at gøre?
Avatar billede hewa Nybegynder
06. februar 2007 - 15:38 #13
Eftersom jeg ikke rigtig får svar på mine ting her, prøver jeg at oprette et nyt spørgsmål, der måske bedre uddyber, hvad jeg mener - tak for jeres bidrag.
- det med include kunne godt have været ok, det kom bare ikke til at virke :(
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