Sessions virker fint på localhost men ikke på mit one hos one
Mine PHP sessions virker fint nok når jeg kører mit script på localhost men ligeså snart jeg kører scriptet på mit host hos one.com er det somom at mine sessions ikke bliver husket fra side til side...
For at rette op på dette skal du nok kontakte one.com da jeg ikke går ud fra de giver root adgang til det webhotel du har lejet, så derfor kan de kun ændre det.
Det er virkelig mærkeligt... Lige før virkede det ikke. Men nu er der ingen problemer på mit Host på one.... Det er totalt underligt..Og jeg har ingen ændringer lavet.
Jeg checkede.. Og Sesid var det samme på alle sider både på localhost og på one.com.
Det er virkelig mærkeligt.. Idag oplevede jeg at logge ind, klikke videre og den loggede ud... Loggede ind igen og så kunne den igen huske sessions... Jeg har checket at session_start() står skrevet før alt HTML og PHP kode. Der er heller ikke noget med URL's og fordi der kommer WWW foran for jeg har sikret mig at hostnamet forbliver det samme....
alle filerne i /include/ inkludere ikke nogen andre filer....
en stump af koden fra include/top.php (Login på alle siderne) <?php if(isset($_POST['Method'])=="logincheck"){ if($_POST['frmUsername'] && $_POST['frmPassword']){
$countusers = mysql_query("select * from users where email = '".$_POST['frmUsername']."' and md5pass = '".md5($_POST['frmPassword'])."'"); $count = mysql_num_rows($countusers); $row_info = mysql_fetch_array($countusers);
} else { $ErrText = "<font color=\"red\" size=\"1\"><b>Du har indtastet forkert brugernavn eller kodeord </b></font>"; } } else { $ErrText = "<font color=\"red\" size=\"1\"><b>Du skal udfylde begge felter for at kunne logge ind</b></font>"; }
} ?>
Coden jeg bruger til at tjekke om brugeren er logget ind er nogenlunde sådan her <?php if(isset($_SESSION["username"])){
Php opfatter " og ' ens, men det er altid en god ide at være konsekvent, har selv for vane at bruge ".
Hmm umiddelbart ville jeg tænke at dit problem ligger i din top.php (som jeg tænker er din menu bar i toppen af siden).
Du tjekker på hver side om brugerens kriterier passer med dem i din Mysql database, MEN, du tjekker det med din $_POST data. Problemet med det er jo så at det kun er den første side efter du har loggede ind som kan vises da dit $_POST data ikke bliver givet videre til næste side.
For at fikse dette vil jeg i din top.php tjekke om isset($_SESSION["username"]), og hvis denne værdi er sat, så ville jeg springe log ind over, og antag brugeren er loggede ind. Dette vil lette trafikken på din sql server en del, og måske hente din side lidt hurtigere :).
Jeg vil nu mene at når jeg har lavet denne foranstaltning i top.php: if(isset($_POST['Method'])=="logincheck"){ } Skal $_POST["Method"] have en værdi for overhovedet at belaste serveren? Hmm....
Men. Jeg tager ved lærer af det du siger.. Kan se logikken i det. Vender tilbage når jeg lige er frisket op igen.
Sørg for at session_start() altid er på den første linje på hvor side, der må ikke engang være et blankt mellemrum i toppen for ellers kan man få problemer med at headeren er sendt, tjek desuden om session_start() bliver kaldt mere end en gang, tror nemlig ikke man må det? Er dog ikke sikker.
Tror faktisk jeg løste et problem lignende på en side (studieklar.net) som jeg er ved at skrive. Når jeg kommer hjem tjekker jeg lige min login fremgangsmåde. Kunne være du ville se kildekoden?
har lige fundet det her. Det er den jeg sidst har lavet, den virker med blowfish + salt kryptering. Du kan kigge lidt rundt i den og se om den giver mening for dig =).
Altså, mit problem er at SESSION["username"] åbenbart ikke bliver registreret ordenligt på One's servere. I dit login system bruger du jo samme metode til at regisrere sessions. Har det noget at sige i forhold til sessions om jeg bruger MySQL eller MySQLi / Md5 eller Crypt til passwords???
Forstår jeg godt hehe, øhmm altså jeg fravalgte md5 fordi den krypteringsform ikke længere er sikker, og Mysqli valgte jeg bare pga. at det var let at modvirke sql-injections. Sååå det burde ikke have noget at sige nej.
Så har jeg fundet ud af grunden til fejlen... Det ser ud til at fordi jeg har brugt one.com's file uploader til at uploade min webside, er der under overførslen opstået et Byte Order Mark (BOM) et usyneligt tegn som åbenbart bliver placeret i starten af alle filer.. Min næste udfordring er så at få dem fjernet fra mine filer, fordi jeg har flytte rundt på dem et par gange i Windows... HVis man overføre sine filer med FTP i binary mode, skulle problemet vidst være løst.....
jeg tilbyder dig point for det ihærdige forsøg på et svar, jeg har kørt min side over på en local Centos server med LAMP og hele balladen. Det var min løsning.
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.