Nickless Skrevet 20. mars 2009 Del Skrevet 20. mars 2009 Hei, leker meg litt fram og tilbake med koden min, laget nettopp en funkskjon som gjør at man kan endre på kontodetaljene på brukere som er registrert i databasen. Man kommer til denne siden via en link fra en annen side. Men jeg får bare feilmeldingen access denied (en feilmelding jeg har implementer selv for å se hvor det feiler). Men skjønner ikke helt hvorfor det feiler, jeg syns ikke det har noen grunn til (men jeg har jo helt klart feil siden jeg får en feilmelding) her er koden: <?php $page_title = 'Edit user'; echo '<h1>Endre kontodetaljer</h1>'; if((isset($_GET['id'])) && (is_numeric($_GET['id']))){ $id = $_GET['id']; } elseif((isset($_POST['id'])) && (is_numeric($_POST['id']))){ $id = $_POST['id']; }else{ echo '<p class = "error">Access denied!</p>'; exit(); } require_once('Connecter.php'); if(isset($_POST['submitted'])){ $errors = array(); if(empty($_POST['first_name'])){ $errors[] = 'Du skrev ikke inn noe fornavn.'; }else { $fn = mysqli_real_escape_string($dbc, trim($_POST['first_name'])); } if(empty($_POST['last_name'])){ $errors[] = 'Du skrev ikke noe etternavn.'; }else{ $ln = mysqli_real_escape_string($dbc, trim($_POST['last_name'])); } if(empty($_POST['email'])){ $errors[] = 'Du skrev ikke inn noen email-addresse'; }else{ $e = mysqli_real_escape_string($dbc, trim($_POST['email'])); } if(empty($errors)){ $q = "SELECT user_id FROM users WHERE email = '$e' AND user_id != $id"; $r = @mysqli_query($dbc, $q); if(mysqli_num_rows($r)== 0){ $q = "UPDATE users SET first_name = '$fn', last_name = '$ln', email = '$e' WHERE user_id = $id LIMIT 1"; $r = @mysqli_query($dbc, $q); if(mysqli_affected_rows($dbc) == 1){ echo '<p>Profilen ble oppdatert</p>'; }else{ echo '<p>FEIL</p>'; echo '<p class = "error">Det oppsto en feil, vi beklager det inntruffene!</p>'; echo '<p>' . mysqli_error($dbc) . '<br/>Query: ' . $q . '</p>'; } }else{ echo '<p class = "error">Emailen-addressen eksisterer fra før!</p>'; } }else{ echo '<p class = "error">Følgende feil oppsto:<br/>'; foreach($errors as $msg){ echo " -$msg<br/>\n"; } echo '</p><p>Vennligst prøv igjen</p>'; } } $q = "SELECT first_name, last_name, email FROM users WHERE user_id = $id"; $r = @mysqli_query($dbc, $q); if(mysqli_num_rows($r) == 1){ $row = mysqli_fetch_array($r, MYSQLI_NUM); echo '<form action = "edit_user.php" method = "post"> <p>Fornavn: <input type = "text" name = "first_name" size = "15" maxlength = "15" value = "' . $row[0] . '"/></p> <p>Etternavn: <input type = "text" name = "last_name" size = "15" maxlength = "30" value = "' . $row[1] . '"/></p> <p>Fornavn: <input type = "text" name = "email" size = "20" maxlength = "40" value = "' . $row[2] . '"/></p> <p><input type = "submit" name = "submit" value = "Submit"/></p> <input type = "hidden" name = "submitted" value = "TRUE"/> <input type = "hidden" name = "id" value "'. $id . '" /> </form>'; }else { echo '<p class = "error">Du har ingen adgang til denne siden.</p>'; } mysqli_close($dbc); ?> Takk for all hjelp Lenke til kommentar
Martin A. Skrevet 21. mars 2009 Del Skrevet 21. mars 2009 $id = ( isset( $_POST['id'] ) ) ? $_POST['id'] : ( isset( $_GET['id'] ) ? $_GET['id'] : 0 ); if( ! intval( $id ) ) { echo '<p class="error">Access Denied</p>'; } Trenger egentlig ikke mer enn det. Lenke til kommentar
Nickless Skrevet 21. mars 2009 Forfatter Del Skrevet 21. mars 2009 (endret) Takk skal du ha Edit: Hehe, vel, lærte en annen måte å skrive det på ivertfall, men får samme feilmeldingen med var_dump($_GET); poster den en id, la oss si brukeren har id 22, da poster den 22 når man kommer inn på siden der man kan endre på ting, når man klikker submit kommer siden opp igjen med id: NULL Noen som ser hvor det kan være at den mister verdien? EDIT-LØSTl: Okey, fant feilen, veldig irriterende med tanke på at den ligger helt på slutten av koden. Klikker man på submit blir man sendt til: edit_user.php dette blir helt feil siden id da vil bli satt til NULL siden den ikke har noen id å gå utifra, slutten må derfor se slik ut: echo '<form action = "edit_user.php?id='. $id .'" method = "post"> Setter nå altså id'n til brukeren som har blitt satt når brukeren klikker på endre kontodetaljer i URL. Endret 21. mars 2009 av Nickless 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å