oleerik__ Skrevet 7. november 2008 Del Skrevet 7. november 2008 Hei, igjen! Jeg og en kompis lager ett system i PHP og MYSQL og har ett merkelig problem. Når man logger seg på er session arrayet slik: Array ( [user_id] => 7 [username] => oleerik [crew] => 0 [rank] => 0 ) Men, etter å ha opprettet nytt medlem, opprettet ny oppgave, eller meldt seg inn i en oppgave(altså, skriver til databasen) ser session arrayet slik ut: Array ( [user_id] => 7 [username] => Array ( [0] => oleerik [username] => oleerik ) [crew] => 0 [rank] => 0 ) Har noen peiling på hvorfor dette skjer? Hva er løsningen? Si i fra om dere trenger mer informasjon eller filer. Her er en fil som skriver til databasen når man klikker på utvalgte linker: <?php require_once("includes/connection.php"); ?> <?php require_once("includes/functions.php"); ?> <?php require_once("includes/session.php"); ?> <?php require_once("includes/constants.php"); ?> <?php confirm_logged_in(); ?> <?php if(isset($_GET['id']) && isset($_GET['place']) && !isset($_GET['del'])){ $id2 = mysql_prep($_GET['id']); $place = mysql_prep($_GET['place']); $query = "UPDATE `datafor_crew`.`assignments` SET "; switch ($place){ case 0: $query .= "`leader` = "; break; case 1: $query .= "`user1` = "; break; case 2: $query .= "`user2` = "; break; } $query .= "'{$_SESSION['user_id']}'"; $query .= " WHERE `assignments`.`id` ={$id2}"; $result = mysql_query($query); confirm_query($result); } elseif (isset($_GET['id']) && isset($_GET['place']) && isset($_GET['del'])) { $id2 = mysql_prep($_GET['id']); $place = mysql_prep($_GET['place']); $query = "UPDATE `datafor_crew`.`assignments` SET "; switch ($place){ case 0: $query .= "`leader` = "; break; case 1: $query .= "`user1` = "; break; case 2: $query .= "`user2` = "; break; } $query .= "'0'"; $query .= " WHERE `assignments`.`id` ={$id2}"; $result = mysql_query($query); confirm_query($result); } ?> <?php $query = "SELECT * FROM assignments WHERE 'crew' = {$_SESSION['crew']}"; $result_set = mysql_query($query); confirm_query($result_set); $result_array = mysql_fetch_assoc($result_set); ?> <?php include_once ("includes/header.php"); ?> <?php meny(); ?> <div class="content"> <h1>Oppgaver</h1> <table class="assignments" border="1"> <?php echo "<tr>"; echo "<td>" . "Oppgavenavn" . "</td>"; echo "<td>" . "Tidspunkt" . "</td>"; echo "<td>" . "Dato" . "</td>"; echo "<td>" . "Beskrivelse" . "</td>"; echo "<td>" . "Ansvarlig" . "</td>"; echo "<td>" . "Deltaker 1" . "</td>"; echo "<td>" . "Deltaker 2" . "</td>"; echo "</tr>"; for ($i = 0; $i < mysql_num_rows($result_set); $i++){ if (isset($_GET['showall'])){ $show = 1; }else{ $show = $result_array['status']; } if ($show == 1){ echo "<tr>"; echo "<td>" . $result_array['name'] . "</td>"; echo "<td>" . $result_array['hour'] . ":" . $result_array['min'] . "</td>"; echo "<td>" . $result_array['time'] . "</td>"; echo "<td>" . $result_array['text'] . "</td>"; echo "<td>"; if ($result_array['leader'] == 0) { echo "<a class='assignmentrow' href='assignments.php?id={$result_array['id']}&place=0'>Ta</a>"; } else { $query = "SELECT username FROM users WHERE id = '{$result_array['leader']}'"; $result = mysql_query($query); confirm_query($result); $username = mysql_fetch_array($result); echo $username['username']; if ($_SESSION['crew'] <= VARA){ echo "(<a href='assignments.php?del=1&id={$result_array['id']}&place=0'>x</a>)"; } } echo "</td>"; echo "<td>"; if ($result_array['user1'] == 0) { echo "<a class='assignmentrow' href='assignments.php?id={$result_array['id']}&place=1'>Ta</a>"; } else { $query = "SELECT username FROM users WHERE id = '{$result_array['user1']}'"; $result = mysql_query($query); confirm_query($result); $username = mysql_fetch_array($result); echo $username['username']; if ($_SESSION['crew'] <= VARA){ echo "(<a href='assignments.php?del=1&id={$result_array['id']}&place=1'>x</a>)"; } } echo "</td>"; echo "<td>"; if ($result_array['user2'] == 0) { echo "<a class='assignmentrow' href='assignments.php?id={$result_array['id']}&place=2'>Ta</a>"; } else { $query = "SELECT username FROM users WHERE id = '{$result_array['user2']}'"; $result = mysql_query($query); confirm_query($result); $username = mysql_fetch_array($result); echo $username['username']; if ($_SESSION['crew'] <= VARA){ echo "(<a href='assignments.php?del=1&id={$result_array['id']}&place=2'>x</a>)"; } } echo "</td>"; echo "</tr>"; } $result_array = mysql_fetch_assoc($result_set); } echo $result_array['name']; ?> </table> <?php if ($_GET['showall'] == 1) { echo "<a class='noprint' href='assignments.php'>Vis aktive</a>"; } else { echo "<a class='noprint' href='assignments.php?showall=1'>Vis alle</a>"; } ?> </div> <?php require_once ("includes/footer.php"); ?> Lenke til kommentar
OISNOT Skrevet 10. november 2008 Del Skrevet 10. november 2008 Se etter noe lignende med $_SESSION['username'] = Lenke til kommentar
Martin A. Skrevet 10. november 2008 Del Skrevet 10. november 2008 register_globals er på, og det vil si at $username faktisk representerer $_SESSION['username']. En måte å fikse det på, er å bruke en annen variabel for $username = mysql_fetch....., eller skru av register_globals om du har tilgang til serveren PHP konfigurasjon. Og slik kom jeg fram til det: <?php session_start(); $_SESSION['id'] = 7; $_SESSION['username'] = "test"; $_SESSION['crew'] = 0; $_SESSION['rank'] = 0; echo "<pre>"; print_r( $_SESSION ); $username = array( 'username' => 'oleerik' ); // Arrayet her er det samme som mysql_fetch_array() returnerer print_r( $_SESSION ); Kommenterer man ut et par linjer, ser man at $_SESSION ble endret permanent. <?php session_start(); echo "<pre>"; /* $_SESSION['id'] = 7; $_SESSION['username'] = "test"; $_SESSION['crew'] = 0; $_SESSION['rank'] = 0; print_r( $_SESSION ); $username = array( 'username' => 'oleerik' );*/ print_r( $_SESSION ); Lenke til kommentar
OISNOT Skrevet 10. november 2008 Del Skrevet 10. november 2008 Ah, visste ikke at register_globals oxo påvirker $_SESSION ... har aldri brukt den så ikke helt sikker på kordan den virker. Men vet at den aldri bør være på. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå