Jeg har lige flyttet en php webside fra et webhotel til et nyt ifbm. køb af virksomhed.
Sælger kender intet til deres løsning pga. de har fået lavet alt i Indien. Jeg kender intet/meget lidt til php - har arbejdet i asp og asp.net i flere år så jeg kan godt nogenlunde forstå den kode der står.
Indtil videre fungere det meste af siden fint - har fået ændre alle de steder hvor der henvises til databasen.
Men nu er jeg rendt ind i et problem. En del af siden ser ud som om den er lavet vha. OsCommerce - shopping del på siden.
Der er et link til denne side, hvor der burde være en querystring bagefter linket (dette er generet dynamisk), ex.
link.php?PHPSESSID=xxxxxxxx
Men på det nye webhotel ser det ud som om dette ikke genereres - der står kun link.php og det medfører en fejl når jeg forsøger at tilgå den del af siden. Kan se at linket generes udfra en variabel i starten som defineres således
PHPSESSID som der ses i linket bruges normalt kun hvis browseren ikke understøtter eller ikke har slået cookies til. Dette er noget som automatisk sker på serveren og som man normalt ikke behøver tage hensyn til i koden.
$_REQUEST er en, ifølge mig, løs måde at hente eksterne variabler på. Man bør vide hvor sine variabler kommer fra og i dette tilfælde er det en session variabel, så jeg vil foreslå at du bare laver disse to linjer if($_REQUEST['osCsid']!="") $oscid="?osCsid=".$_REQUEST['osCsid']; om til if($_SESSION['osCsid']!="") $oscid="?osCsid=".$_SESSION['osCsid'];
Jeg tvivler dog på det virker, da $_REQUEST metoden stadig burde kunne gøre det. Jeg tror vi skal se mere kode, for at se hvordan sessions håndteres. Hvis det forrige webhotel havde en php konfiguration med session.auto_start = 1 kan en meget vigtig funktion som session_start() nemlig undlades.
og så synes jeg der mangler nogle 'curly brackets' {} - men hvis systemet virker uden, så er det bedst ikke at pille ved det - if it's not broken, don't fix it :-)
Jeg har svært ved at sende en masse mere kode - for der er rigtig meget og jeg ved (for at være ærlig) meget lidt om php og derfor heller ikke hvilken kode der vil være relevant. MEN jeg kan se, at de to filer der fejler på siden der står der faktisk session_start() i toppen.
Kan de være årsagen hvis nu det nye webhotel har session.auto_start = 1?
Det er ikke årsagen. Jeg var måske lidt hurtig til at bedømme at det var en session variabel.
Prøv at indsætte følgende før session_start() ini_set('error_reporting',E_ALL);
Ved at gøre dette vises eventuelle fejl i koden, både store og små. Det skal lige siges at variabelnavne kan blottes, hvilket udgør en potentiel sikkerhedsrisiko, så husk at fjerne det igen.
jeg mener nu at "Undefined index" blot er en warning, dvs pga variablen osCsid ikke er sat, men dette burde ikke give problemer på de fleste hoteller da denne "fejl" typisk ikke vises, da det alene er et spørgsmål om god kodeskik mere end det er en fejl.
lidt om felj typer hentet i php.ini ;o) ; error_reporting is a bit-field. Or each number up to get desired error ; reporting level ; E_ALL - All errors and warnings ; E_ERROR - fatal run-time errors ; E_WARNING - run-time warnings (non-fatal errors) ; E_PARSE - compile-time parse errors ; E_NOTICE - run-time notices (these are warnings which often result ; from a bug in your code, but it's possible that it was ; intentional (e.g., using an uninitialized variable and ; relying on the fact it's automatically initialized to an ; empty string) ; E_CORE_ERROR - fatal errors that occur during PHP's initial startup ; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's ; initial startup ; E_COMPILE_ERROR - fatal compile-time errors ; E_COMPILE_WARNING - compile-time warnings (non-fatal errors) ; E_USER_ERROR - user-generated error message ; E_USER_WARNING - user-generated warning message ; E_USER_NOTICE - user-generated notice message
avminarm > Ja, det er jo ikke en decideret fejl, selv om jeg vist fik det til at fremstå sådan :-)
Synes godt om
Ny brugerNybegynder
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.