Gå til innhold

Kode virker på en server men ikke en annen


Anbefalte innlegg

Har prøvd meg litt med PHP programmering i forbindelse med noen nettsider. Bruker PHP for å gjøre ting enklere med tanke på menyer, header, footer, etc.

 

Eksempel (har beskåret koden en del):

 

Link:

 

default.php3?filnavn=om.php3&menyvalg=1

 

 

Filen default.php3 ser slik ut:

 

<?php

$fil = $filnavn;

 

include("header.php3");

include("tekst/".$fil);

include("footer.php3");

?>

 

Virker som at dette fungerer forskjellig på forskjellige versjoner av php. Jeg kjører følgende på localhost: Apache/1.3.20 (Win32) PHP/4.0.6.

 

Administrerer flere kontoer hos domeneshop og på et nettsted er alt ok mens på et annet så funker det ikke.

 

Sjekk her:

 

www.flekkefjordkarateklubb.no

 

og her

 

www.jaru.no/karate

 

Ellers kan det nevnes at jeg har prøvd andre versjoner av phpdev på flere maskiner, men det er kun en av dem som jeg får til å fungere med php koden min.

 

Håper mitt spørsmål/problem var forståelig...

Lenke til kommentar
Videoannonse
Annonse

Der det virker har du register globals som på, der det ikke virker er det av. Register globals er en skikkelig farlig løsning, og burde slås av der du kan. Dette kan du gjøre i php.ini, eller i .htaccess med linjen: php_flag register_globals off

 

Den beste løsningen i php koden din er å bruke $fil = $HTTP_GET_VARS['filnavn'] istedenfor $filnavn og $$HTTP_GET_VARS['menyvalg'] istedenfor $menyvalg. Mer info om $HTTP_GET_VARS og $_GET her. PHP 4.0.6 er skikkelig gammel, og du burde oppgradere til en nyere versjon av PHP4 i det minste, da kan du bruke superglobalen $_GET. Helst burde du oppgradere til PHP5.

 

Koden din er foresten veldig usikker. Du burde definere hvilke filnavn som er gyldige i et array eller lignende, og kontrollere at filnavnet gitt i GET (eller POST) er der (med in_array).

Lenke til kommentar

Jeg er egentlig bare en amatør programmerer, er jo ikke de mest avanserte sidene jeg lager. Hva mener du med at koden er veldig usikker? Hva kan konsekvensene med usikker kode være?

 

Skal prøve å oppgradere til nyere php versjon. Har prøvd tidligere men da ble ikke akkurat sidene som forventet. Må kanskje programmere om en del da?

Lenke til kommentar
Jeg er egentlig bare en amatør programmerer, er jo ikke de mest avanserte sidene jeg lager. Hva mener du med at koden er veldig usikker? Hva kan konsekvensene med usikker kode være?

 

Skal prøve å oppgradere til nyere php versjon. Har prøvd tidligere men da ble ikke akkurat sidene som forventet. Må kanskje programmere om en del da?

Det største problemet er at de kan spørre etter et filnavn som ser ut som noe slikt ../../etc/passwd og se alle passordene dine på en linux server. For windows kan de spørre etter andre filer, ikke sikker på hvilke de helst vil laste ned der.

Endret av OIS
Lenke til kommentar

Har nå prøvd $HTTP_GET_VARS og dette funker lokalt men det funker ikke på domenehsop sin server.

 

Har prøvd meg med følgende kode www.flekkefjordkarateklubb.no/test.php3:

 

<?php

echo "<html>";

 

echo "<head>";

echo "<title>Flekkefjord Karateklubb</title>";

 

echo "</head>";

echo "<body>";

echo "Dette kommer direkte fra koden";

echo "<br>";

include ("testtekst.php");

echo "</body>";

echo "</html>";

?>

 

Resultatet er en blank side med følgende kildekode:

 

<?php

echo "<html>";

 

echo "<head>";

echo "<title>Flekkefjord Karateklubb</title>";

 

echo "</head>";

echo "<body>";

echo "Dette kommer direkte fra koden";

echo "<br>";

include ("testtekst.php");

echo "</body>";

echo "</html>";

?>

 

Denne koden er som du sikkert ser identisk med koden i php filen. Hva tyder dette på? Kan det være at jeg ikke kan kjøre php på sidene. I følge den pakken jeg har kjøpt så er CGI/SSI/PHP5/MySQL5/Unix shell innkludert.

Lenke til kommentar
  • 4 uker senere...

Har nå installert PHP Version 5.2.9-2 og Apache 2.2.11. (Kjører lokalt på WinXPsp3)

 

Bruker $fil = $HTTP_GET_VARS['filnavn']; for å hente et filnavn fra http link. Jeg får ikke med meg noen verdi og $fil er tom. Det merkelige med dette er at det funker på en 4.x versjon av PHP lokalt samt på webserveren (php 5.2.8) (Domeneshop)

 

Er det noen innstillinger jeg bør gjøre lokalt for å få dette til å funke?

 

mvh

 

Jan Rune

 

PS! Har lagt ved en pdf utskrift av phpinfo

 

 

 

 

LØST - Jeg satte register_long_arrays = on og så funket det.

phpinfo.pdf

Endret av JaRu
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...