/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Inkludering
Fra : David Trasbo


Dato : 07-02-06 15:46

http://webdesignwiki.frac.dk/artikler har jeg følgende script:

<?php
$artikler = explode("/", $_SERVER['REQUEST_URI']);

$overskrift = $artikler['2'];

$artikel=$overskrift'.php';

include($artikel);
?>

(Det er så kort at, jeg synes det er fint nok at skrive det her.)

Scriptet bruges til at inkludere artikel1.php eller artikel2.php via at
skrive henholdsvis /artikler/artikel1 eller /artikler/artikel2 som adresse.
Den metode bruges via http://webdesignwiki.frac.dk/.htaccess.

--
David Trasbo.
Vær en god Usenet-bruger. http://usenet.dk/netikette.



 
 
Johan Holst Nielsen (07-02-2006)
Kommentar
Fra : Johan Holst Nielsen


Dato : 07-02-06 17:59

David Trasbo wrote:
> På http://webdesignwiki.frac.dk/artikler har jeg følgende script:
>
> <?php
> $artikler = explode("/", $_SERVER['REQUEST_URI']);
>
> $overskrift = $artikler['2'];
>
> $artikel=$overskrift'.php';
>
> include($artikel);
> ?>

Du bør lave noget validering på $overskrift før du inkluderer...

>
> (Det er så kort at, jeg synes det er fint nok at skrive det her.)
>
> Scriptet bruges til at inkludere artikel1.php eller artikel2.php via at
> skrive henholdsvis /artikler/artikel1 eller /artikler/artikel2 som adresse.
> Den metode bruges via http://webdesignwiki.frac.dk/.htaccess.

Hmmm - ja og? Hvad er er dit spørgsmål ;)

mvh
Johan

Johan Holst Nielsen (07-02-2006)
Kommentar
Fra : Johan Holst Nielsen


Dato : 07-02-06 18:01

David Trasbo wrote:
> På http://webdesignwiki.frac.dk/artikler har jeg følgende script:

oh fejl i scriptet

> <?php
> $artikler = explode("/", $_SERVER['REQUEST_URI']);
>
> $overskrift = $artikler['2'];

Bø rvære $artikler[2];

> $artikel=$overskrift'.php';

Skal være $overskrift.'.php';

> include($artikel);
> ?>

Igen - lav validering på $overskrift

mvh
Johan

David Trasbo (08-02-2006)
Kommentar
Fra : David Trasbo


Dato : 08-02-06 14:42

Johan Holst Nielsen skrev:

>> På http://webdesignwiki.frac.dk/artikler har jeg følgende script:
>
> oh fejl i scriptet

[Snip]

Glemte at stille spørgsmålet, men tak fordi du alligevel gennemskuede mig.
(-;

Nu virker det også, og det er sådan set der vigtigste.

> Igen - lav validering på $overskrift

Ska' nok. Jeg er først startet for et par dage siden med PHP, så jeg skal
lige have helt styr på det først...

--
David Trasbo.
Vær en god Usenet-bruger. http://usenet.dk/netikette.



Michael Zedeler (07-02-2006)
Kommentar
Fra : Michael Zedeler


Dato : 07-02-06 16:03

David Trasbo wrote:
> På http://webdesignwiki.frac.dk/artikler har jeg følgende script:
>
> <?php
> $artikler = explode("/", $_SERVER['REQUEST_URI']);
>
> $overskrift = $artikler['2'];
>
> $artikel=$overskrift'.php';
>
> include($artikel);
> ?>
>
> (Det er så kort at, jeg synes det er fint nok at skrive det her.)
>
> Scriptet bruges til at inkludere artikel1.php eller artikel2.php via at
> skrive henholdsvis /artikler/artikel1 eller /artikler/artikel2 som adresse.
> Den metode bruges via http://webdesignwiki.frac.dk/.htaccess.

Du skriver ikke noget spørgsmål, men jeg vil lige knytte en kommentar:
du åbner op for et sikkerhedshul med denne tilgang. Hvad sker der hvis
man f. eks. åbner http://din.server.dk/artikler/../../../../../etc/passwd ?

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

David Trasbo (09-02-2006)
Kommentar
Fra : David Trasbo


Dato : 09-02-06 13:41

Michael Zedeler skrev:

>> Scriptet bruges til at inkludere artikel1.php eller artikel2.php via at
>> skrive henholdsvis /artikler/artikel1 eller /artikler/artikel2 som
>> adresse. Den metode bruges via http://webdesignwiki.frac.dk/.htaccess.
>
> Du skriver ikke noget spørgsmål, men jeg vil lige knytte en kommentar: du
> åbner op for et sikkerhedshul med denne tilgang. Hvad sker der hvis man f.
> eks. åbner http://din.server.dk/artikler/../../../../../etc/passwd ?

Problemet er løst. Metoden bruges nu kun til at trække data ud af en
MySQL-database.

--
David Trasbo.
Vær en god Usenet-bruger. http://usenet.dk/netikette.



David Trasbo (09-02-2006)
Kommentar
Fra : David Trasbo


Dato : 09-02-06 14:36

David Trasbo skrev:

>> Du skriver ikke noget spørgsmål, men jeg vil lige knytte en kommentar: du
>> åbner op for et sikkerhedshul med denne tilgang. Hvad sker der hvis man
>> f. eks. åbner http://din.server.dk/artikler/../../../../../etc/passwd ?
>
> Problemet er løst. Metoden bruges nu kun til at trække data ud af en
> MySQL-database.

Nu er jeg selvfølgelig stødt ind i et nyt problem. Når jeg vil indsætte data
i den database, som jeg trækker data ud fra via PHP, vises en blank side
uden fejl, men dataen bliver ikke indsat. Jeg har prøvet det før med en
alvorlig syntaksfejl. Men denne gang kan jeg ikke se den.

<?php
require("funktioner.php");
aabn_forbindelse_og_vaelgdb();
sql_spoerg("insert into Artikler
(Overskrift1,Overskrift2,Overskrift3,Overskrift4,Overskrift5,Forfatter,Beskrivelse,Tekst)
values ('Dette er en prøveartikel','En
prøveartikel','Prøveartikel','Prøve','Pr.','David Trasbo','Dette er kun en
prøve...','Lorem Ipsum. tekst. tekst.')");
luk_forbindelse();
?>

Funktioner.php kan ses her: http://webdesignwiki.frac.dk/funktioner.txt.
Siden det drejer sig om kan ses her: http://webdesignwiki.frac.dk/nydb.

--
David Trasbo.
Vær en god Usenet-bruger. http://usenet.dk/netikette.



Kasper Johansen (09-02-2006)
Kommentar
Fra : Kasper Johansen


Dato : 09-02-06 17:12

David Trasbo skrev:
> sql_spoerg("insert into Artikler
> (Overskrift1,Overskrift2,Overskrift3,Overskrift4,Overskrift5,Forfatter,Beskrivelse,Tekst)
> values ('Dette er en prøveartikel','En
> prøveartikel','Prøveartikel','Prøve','Pr.','David Trasbo','Dette er kun en
> prøve...','Lorem Ipsum. tekst. tekst.')");

For det første overholder du ikke normalitetsstandarder, når du laver
flere felter med overskrifter i din SQL-database (det er en god ide at
overholde, hvis du ønsker at lave udvidede søgefunktioner og lignende
til din database senere, eller hvis en anden programmør, skal arbejde
med dine scripts på et andet tidspunkt).

Løsningen er at tilføje en database kun med titler i stedet.


Når du kører forspørgsler til en MySQL-database, kan du fejlfinde dem
med følgende syntaks (dette her sparer dig for meget kode, set i forhold
til hvor mange funktioner, du har lavet til at lave præcis det samme):

<?
mysql_query("en masse SQL") or die(mysql_error());
?>


Hvis MySQL returnerer en fejl, vil scriptet afsluttes og udskrive en
fejl i stedet. Det burde hjælpe dig med din fejlfinding af SQL-scripts
(uden at bruge så mange funktioner og så meget kode).


I tilfælde af PostgreSQL bruges:

<?
pq_query("en masse SQL") or die(pg_last_error());
?>


> Funktioner.php kan ses her: http://webdesignwiki.frac.dk/funktioner.txt.

Selv om det generelt er flinke mennesker her i gruppen, så bør du nok
alligevel skifte din adgangskode (det ser ud som om, at du har glemt at
slette den i din offentliggjorte fil "funktioner.txt").


> luk_forbindelse();

Du behøver faktisk ikke holde styr på at lukke forbindelsen til
databasen i PHP - Det gør PHP selv ;) Husk at hver gang du laver en
funktion, så kræver det ressourcer. Lad PHP gøre meget af dit
slavearbejde, så kan du tage dig af alt det andet ;)



Prøv at indsætte forskellige echo() i din kode, som udskriver "test1",
"test2" osv., så du kan se, hvor langt at scriptet når. Det vil
yderligere hjælpe med fejlfinding.


--
Med venlig hilsen
Kasper Johansen

David Trasbo (09-02-2006)
Kommentar
Fra : David Trasbo


Dato : 09-02-06 18:24

Kasper Johansen skrev:

> For det første overholder du ikke normalitetsstandarder, når du laver
> flere felter med overskrifter i din SQL-database

Jeg bruger de mange overskrifter sådan, at man har flere forskellige navne
at vælge imellem. F.eks. er det jo hurtigere at skrive "Prøveartikel" end
"Dette er en prøveartikel". Det forhindrer ikke noget.

Men hvad skal jeg rette før at det virker?

--
David Trasbo.
Vær en god Usenet-bruger. http://usenet.dk/netikette.



Søg
Reklame
Statistik
Spørgsmål : 177516
Tips : 31968
Nyheder : 719565
Indlæg : 6408629
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste