Gå til innhold

Undefined index


Anbefalte innlegg

Jeg har nylig lastet ned et bilde uploading script. Det funker helt fint på demoen hans, men så fort jeg laster det ned og legger det over på xampp får jeg en hel del av disse:

 

Notice: Undefined index: username in C:\xampp\htdocs\opplaster\top_content.php on line 7

 

top_content.php ser sånn her ut:

<div class="top_con">
 <div class="top_hol">
   <div class="top_navi">

<?php
if ($_SESSION['username']) {

 echo '

 <a href="index">ImageLocks</a>
 <a href="contact">Contact</a>
 <a href="logout">Logout</a>

 ';

 }else {

  echo '

 <a href="index">ImageLocks</a>
 <a href="login">Login</a>
 <a href="register">Register</a>

 ';

 }
?>

</div>
   <div class="logo"><a href="index"><img src="img/logo.png" /></a></div>
 </div>
</div>
<div class="main_navi">
 <div class="main_hol">
   <div class="main_links">

<?php

if ($_SESSION['username']) {

 echo '

 <a href="index">Upload</a>
 <a href="images">My Images</a>
 <a href="edit">Edit Account</a>

 ';

 }else {

  echo '

 <a href="">Welcome to ImageLocks.</a>

 ';

 }
?>

</div>
 </div>
</div>

 

Jeg får mange lignende på flere forskjellige andre sider som register.php. Du kan laste ned scriptet her: http://ryangibbo.com/zips/UPLOADER.zip

Lenke til kommentar
Videoannonse
Annonse

Gir

Array ( )

 

Dette er fordi du ikke har angitt $_SESSION['username'], slik at denne er tom.

 

"Undefined index: username" betyr dermed at $_SESSION['username'] er udefinert.

 

Det du kan midlertidig gjøre er følgende:

 

session_start();

$_SESSION['username'] = 'Brukernavn';

 

eller eventuelt plassere følgende øverst på siden i php tags:

 

error_reporting(0);

Lenke til kommentar

Takk for svar!

 

Er som sagt ikke jeg som har laget/skrevet koden og det kommer ikke opp lignende på demoen. Kan egentlig ikke definere brukernavnet, ettersom den sjekker om man er pålogget eller ei, men å skru av error reporting burde gjøre jobben!

Lenke til kommentar

Takk for svar!

 

Er som sagt ikke jeg som har laget/skrevet koden og det kommer ikke opp lignende på demoen. Kan egentlig ikke definere brukernavnet, ettersom den sjekker om man er pålogget eller ei, men å skru av error reporting burde gjøre jobben!

 

Det du da kan gjøre er å sette

 

$_SESSION['username'] = true;

 

Dette burde også gjøre susen. Da vil du gå som "pålogget", men den måten jeg skrev tidligere vil også fungere, sålenge $_SESSION['username'] er definert enten som 1/true eller med brukernavn vil det skriptet du har lagt ut øverst i tråden godta det som "pålogget". :-)

 

For

if ($_SESSION['username'])

sjekker kun om denne sessionen eksisterer, dvs at den trenger kun å ha en verdi for å gå igjennom.

 

Håper det er til hjelp.

Endret av PureDarkness
Lenke til kommentar

Å manuelt manipulere sessionvariabelen er å legge lokk på problemet, og det er da fare for at alle kan laste opp bilder, noe som kanskje ikke er meningen? Får du logget inn egentlig, eller er det en innloggingsskjerm i det hele tatt?

 

Det er klart, er derfor jeg skrev, og jeg siterer

 

Det du kan midlertidig gjøre

 

Man bør aldri gjøre noe slikt permanent. Jeg burde vel ha skrevet litt mer utdypende så der får jeg bare beklage.

 

Uansett så fikk jeg forklart problemet, hvordan han løser det er en annen sak. ;)

Endret av PureDarkness
Lenke til kommentar

Takker for svar. Er ikke helt sikker på om jeg ble klokere av dette. Rask oppsumering: jeg burde ikke gjøre det på den måten PureDarkness foreslår, eller er det en grei løsning? Jeg ønsker ikke at enhver skal kunne laste opp bilder - kun de som er pålogget skal kunne dette.

Lenke til kommentar

Det beste er nok å fikse årsaken ja. Han skrev jo selv at hans løsning var en midlertidig løsning.

 

Når du åpner siden, hva er adressen du bruker? http://localhost/opplaster/top_content.php ?

Jeg mistenker du kanskje åpner feil fil. Nå har jeg ikke prøvd dennne opplasteren, men du bør nok først gå til innloggingsvinduet. Når du har logget inn, så blir sessionvariabelen satt på riktig måte.

  • Liker 1
Lenke til kommentar

Skal dette gjøres på korrekt måte så må du ordne et innloggingscript som henter brukerinformasjon fra f.eks en database og som setter variablen. Deretter må du ha et utloggingscript som stopper og sletter session ved loggut.

 

Husk at den løsningen jeg oppga var for å vise samt demonstrere for deg hvorfor du fikk den feilmeldingen du fikk, verken mer eller mindre. Om du ønsker en mer permanent løsning og er usikker på hvordan du skal gjøre dette så kan jeg hjelpe deg med det, bare send meg en PM i såfall. :)

Endret av PureDarkness
Lenke til kommentar

Jeg går inn på riktig fil - det er jeg rimelig sikker på. Vet ikke om dere har lyst til å prøve å laste ned pakken å teste skriptet selv, men kan prøve å kort forklare hvordan det funker.

 

Om man ikke er pålogget skal det komme en annen meny enn når man er innlogget. Er rimelig ny med PHP så problemet som er tidligere nevnt oppstår av en rar grunn. Greien er at skriptet som er helt likt som det som brukes her http://ryangibbo.com/files/imagelocksnew/ gir feilmeldinger. Dere kan forsåvidt gå inn på den nettsiden der å se hvordan det skal funke/se ut. Pakken er den nettsiden der, så det er vel lettere å forstå det når dere får sett hvordan det skal være.

Lenke til kommentar

Sjekket om den eksisterer? Istedenfor if($_SESSION['username']){ skriv if(isset($_SESSION['username'])){

Da sjekker den om den eksisterer, eller er satt. Ellers bare sjekker du om den har en verdi, og siden selve session indexen ikke eksisterer (og får feilmelding) har ikke den noe verdi heller.

  • Liker 1
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...