Gå til innhold

TOTAL forvirring! [PROBLEM LØST!]


Anbefalte innlegg

Trøste og bære, hvorfor hadde jeg så lyst til å lære php? :scared:

 

Dette innlegget er fosåvidt en fortsettelse av dette:

 

http://forum.sourcecode.no/index.php?showtopic=236924 ,

 

men det har vært en viss utvikling her, så jeg lager et nytt emne.

 

Forresten, for en gangs skyld får jeg samme feilmelding og oppførsel både i Opera og IE! :)

 

Ok, problemet:

Jeg har to tilnærmet identiske sider, kreditorerdetalj.php og kreditorerdetaljediter.php

Begge to viser data hentet fra en tabell i MySQL. Den eneste forskjellen på dem er at k~detalj.php viser dataene som ren tekst, mens k~detaljediter viser dataene med skjemaelementer, slik at tabelloppføringen kan endres. Når jeg skal inn i kreditorerdetaljediter.php får jeg følgende feilmelding:

 

Fatal error: Call to undefined function: phpsession_start() in /home/blablabal/public_html/kreditorerdetaljediter.php on line 1

 

Her er gangen i det:

 

Dette er valider.php, som sjekker om inntastet bnavn og passord er riktig. (Ser du noe kjent her, SirIce? ;) )

 

<?php
session_start();


$kr_passord =(crypt($_POST['passord'],"hemmelig nøkkel"));

include ("pobasekopling.php");

$sjekk_passord="SELECT brukernavn,passord FROM brukere 
   WHERE  (brukernavn='{$_POST['brukernavn']}')";
$dbpassord=mysql_query($sjekk_passord);

$hentet_passord=mysql_fetch_array($dbpassord);

if (($_POST["brukernavn"] == $hentet_passord["brukernavn"]) and ($kr_passord == $hentet_passord["passord"])){

// If correct, sets session "true"

$_SESSION["login"] = "true";
$_SESSION["brukernavn"] = $_POST["brukernavn"];

//and redirects to forsiden.php

header("Location: http://inter.net/forsiden.php");
exit;
} else {

$_SESSION["error"] = "<font color=red>Beklager, men brukernavnet eller passordet var feil!</font>";
header("Location: http://inter.net/registrer.php");
}

?>

$_SESSION["brukernavn"] = $_POST["brukernavn"];

Denne linjen er med fordi jeg trenger noe å knytte brukerne til dataene deres i databasen. Dette funker i IE men ikke i Opera, så hvis noen kan kjapt kan si hvordan jeg kommer rundt dét problemet utdeles det stor takknemlighet! :)

 

 

-Flott, vi ble godkjent! :)

Da ser forsiden.php slik ut (Sterkt forkortet!):

<?php
session_start();
if ($_SESSION["login"] != "true"){

header("Location: http://inter.net/registrer.php");

$_SESSION["error"] = "<font color=red>Nope....</font>";
exit;
}
?>

<HTML>
Lenke til kreditorer.php, som lister opp radene i MySQL-tabellen

 

Ok, vi ble godkjent igjen, både i Opera og IE, og vi følger lenken til kreditorer.php, som ser slik ut (igjen, sterkt forkortet):

<?php
session_start();

if ($_SESSION["login"] != "true"){

header("Location: http://inter.net/registrer.php");

$_SESSION["error"] = "<font color=red>Nope....</font>";
exit;
}
?>

<HTML>
Blablaba
<?php
include ("pobasekopling.php");     
     if(!isset($start)) $start = 0;
     $sql1 = "SELECT indeks, kreditor_fakturanr, kreditor_fakturadato, kreditor_navn, kreditor_totalbelop, kreditor_forfallnaa FROM kreditorer WHERE brukernavn='{$brukernavn}' 
 	ORDER BY kreditor_forfallnaa DESC LIMIT " . $start . ", 5";
 	$sql_resultat=mysql_query($sql1);
 	?>
//Det er det over Opera ikke forstår...
Blablabla

<?php echo "<a class='gammel' href=http://inter.net/kreditorerdetalj.php?indeks=".$arr["indeks"].">".$norskdato2."</a>"?>

<?php echo "<a class='gammel' href=http://inter.net/kreditorerdetalj.php?indeks=".$arr["indeks"].">".$norskdato2."</a>"?>

Linjen over blir en hyperlink til f.eks:

http://inter.net/kreditorerdetalj.php?indeks=27

 

 

Jepp, da er vi inne og ser den tekstbaserte detaljversjonen av rad 27 i kreditortabellen (takket være sessionscriptet som er en gjenganger på alle sidene nå!)! MEN! Vi ser noe som er galt, så vi følger lenken i kreditorerdetalj.php til den editerbare versjonen av de samme dataene, nemlig

http://inter.net/kreditorerdetaljediter.php?indeks=27

 

Lenken i kreditorerdetalj ser slik ut:

            <?php 
               echo "<a href=http://www.inter.net/kreditorerdetaljediter.php?indeks=".$arr["indeks"].">Editér denne oppføringen</a>";
           ?>

Denne virker.

 

Og her, endelig, er det problemet kommer. I stedet for å se den editerbare varianten får jeg ovennevnte fatale feilmelding...

 

Hvorfor er jeg totalt forvirret? Jo, fordi sessionbiten er copy/paste, som det er alle andre steder hvor det VIRKER! Bare se:

<?php
session_start();

if ($_SESSION["login"] != "true"){

header("Location: http://inter.net/egistrer.php");

$_SESSION["error"] = "<font color=red>Nope....</font>";
exit;
}
?>

<HTML>
Blablabla

 

Jeg beklager at dette innlegget ble så langt, men jeg håper noen allikevel orker å kaste et blikk på det...

 

Takk!

Endret av primaxx
Lenke til kommentar
Videoannonse
Annonse

gå inn i koden og sett en ordentlig linjeskift mellom "<?php" og "session_start();"

 

som du ser, sier den at funksjonen phpsession_start() ikke er definert, den skiller ergo ikke mellom de to linjene, så et eller annet krøll har sneket seg inn der (typisk relatert til forskjellige linjeskift i windows og linux)

Lenke til kommentar

Takk!

 

Jeg bruker både Zend og Source Edit, men det hjalp ikke om jeg satte nytt linjeskift hverken i det ene eller andre programmet...

 

Det som til slutt løste problemet var at jeg overførte filen i binary mode i stedet for Ascii(!)

 

Må gjøre oppmerksom på at jeg benyttet Source Edits innebygde File Courier til å overføre filer...

 

 

Takk! :)

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å
×
×
  • Opprett ny...