Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Eller det mit problem er at jeg ikke kan få den til at slette brugeren når jeg trykker slet og jeg kan heller ik få den til at tilføje når jeg har indtastet: bruger, pass og level.
Har du i mellemtiden slået "Register globals" fra? I så fald kan du f.eks. ikke bruge variabler så som $mode direkte (hvis den f.eks. kommer fra en admin.php?mode=slet).
Prøv at lave dette på alle dine overførte variabler; $mode = $_GET['mode']; $id = $_GET['id']; osv.
Det virker faktisk nu. Tak. Men i må meget gerne lige kigge det igennem hvis der er noget som ikke behøves at være der! Altid rart med andre øjne på det. heh
//ADGANG TIL ADDADMINSIDEN <?php session_start(); if(!isset($_SESSION['password'])) { echo "Gå til forsiden og log ind"; } else { if (!$mode) { require_once('connect.php'); $mode = $_GET['mode']; $id = $_GET['id']; $login = $_GET['login']; $password = $_GET['password']; $result = mysql_query("select * from brugere order by id desc"); $num = mysql_num_rows($result); if ($num > 0) { while ($row=mysql_fetch_array($result)){ echo "<font face='Verdana' size='1' color='#FFFFFF'> <u>Bruger:</u> $row[login] <u>Pass:</u> $row[password] <u>Lvl:</u>
$row[level] - <td><b><a href=http://www.minhjemmeside.com/addadmin.php?mode=slet&id=$row[id]>Slet bruger</a></b><br></td> "; } } } } //SLET BRUGER if ($mode == slet) { mysql_query("DELETE FROM brugere where id='$id'");
echo "<font face='Verdana' size='1' color='#FFFFFF'> Brugeren er blevet slettet korrekt."; } else { //TILFØJ BRUGER if ($mode == tilfoj) {
$query = mysql_query("INSERT INTO brugere (id, login, password, level)" . "VALUES ('$id','$login','$password','$level')"); echo" <font face='Verdana' size='1' color='#FFFFFF'>$login er tilføjet som bruger! </font>";} } ?>
$_GET bruges til at hente data ud fra det link du skriver i browseren, f.eks. index.php?id=5 (her vil $_GET['id'] give 5) $_POST bruges til at hente data fra en form
Prøv med dette; <?php session_start(); $mode = $_GET['mode'];
if (!isset($_SESSION['password'])) { echo "Gå til forsiden og log ind"; } else { if (!$mode) { require_once('connect.php'); $result = mysql_query("select * from brugere order by id desc"); $num = mysql_num_rows($result); if ($num > 0) { while ($row=mysql_fetch_array($result)) { echo '<font face="Verdana" size="1" color="#FFFFFF">' . '<u>Bruger:</u>' . $row['login'] . '<u>Pass:</u>' . $row['password'] . '<u>Lvl:</u>' . $row['level'] . ' - <b><a href=http://www.minhjemmeside.com/addadmin.php?mode=slet&id=' . $row['id'] . '>Slet bruger</a></b><br>'; } } } //SLET BRUGER if ($mode == 'slet') { mysql_query('DELETE FROM brugere where id = "' . $id . '"'); echo '<font face="Verdana" size="1" color="#FFFFFF">Brugeren er blevet slettet korrekt.</font>'; } //TILFØJ BRUGER if ($mode == 'tilfoj') { // $id = $_POST['id']; //går ud fra at id i din tabel er en auto_increment, i så fald bruger vi den slet ikke i forbindelse med en INSERT $login = $_POST['Login']; $password = $_POST['Password']; $level = $_POST['Level']; mysql_query('INSERT INTO brugere (login, password, level) VALUES ("' . $login . '", "' . $password . '", "' . $level . '")'); echo '<font face="Verdana" size="1" color="#FFFFFF">' . $login . ' er tilføjet som bruger!</font>'; } } ?>
Register globals kan manuelt slåes til/fra på nogle webhoteller, bl.a. One.com. Som udgangspunkt er det sikkerhedsmæssigt bedst at have det slået fra (dvs. du selv skal hente dine variabler ud med $_GET/$_POST/$_REQUEST/$_SESSION osv.).
1. Variabler/funktioner er case sensitive i PHP som så mange andre steder ($_POST['login'] != $_POST['Login']) 2. Når du checker på string indhold af en variabel skal du bruge '' ($mode == 'slet') 3. Når variabler kommer fra en form på en anden side, skal du hente dem ved hjælp af $_POST i stedet for $_GET. 4. Din $id kom ikke fra en form, så hver gang du indsatte i tabellen blev id = 0
Sammenlign din kode med den jeg lagde op 18/7 13.07
nej, ik det jeg mener.. Scriptet virker nu da jeg indsatte $id = blabla. :) Tak.! Men den siger jo fejl hvis jeg bare indsætter header: efter den har sagt brugernavn er slettet.
fejlen er :
Warning: Cannot modify header information - headers already sent by (output started at addadmin.php:39) in addadmin.php on line 40
En header er som det antydes, det øverste der skal stå på siden, dvs. du må ikke have en eneste echo sætning inden den i din kode. Hvis du bare vil genindlæse siden med det samme, er der jo heller ingen grund til at skrive noget ud.
Så løsningen er nok;
mysql_query('DELETE FROM brugere where id = "' . $id . '"'); header('location: addadmin.php'); die();
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.