Avatar billede alfetch Nybegynder
17. juli 2007 - 00:15 Der er 24 kommentarer

Add user script alt i et - tilføj,slet, se bruger

En der kan hitte ud af det her rod jeg har fået lavet for 1 år siden. det virker ihvertfald ikke.

<?php
session_start();
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] - <td><b><a href=http://www.minhjemmeside/addadmin.php?mode=slet&id=$row[id]>Slet bruger</a></b><br></td> ";
} } } }

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 {
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>";} }
?>


<font size="1" face="Verdana" color="#FFFFFF">Level 12 = Administrator (Får adgang til privat billeder)
Level 2 = Normalbruger (Får adgang til normale billeder)</font></b></p>
<form action="<? echo"$PHP_SELF"; ?>?mode=tilfoj" method="post">
<b>
<font size="2" color="#FFFFFF" face="Verdana">Login :<br></font>
<font color="#FFFFFF" face="Verdana"><input type="text" name="Login" maxlenght="20" class="tekstboks"></font>

<font size="2" color="#FFFFFF" face="Verdana"><br> Password :<br></font><font face="Verdana" color="#FFFFFF"><font

color="#FFFFFF"><input type="text" name="Password" maxlenght="20" class="tekstboks"></font>

<font size="2" face="Verdana"><br>Level :<br></font><font color="#FFFFFF"><input type="text" name="Level" maxlenght="20"

class="tekstboks"></font><font size="2" face="Verdana"><br> </font>

<input type="submit" value="Tilføj bruger" style="float: left"></td> <form action="<? echo"$PHP_SELF"; ?>?mode=tilfoj"

method="post">
</b>
</form>
Avatar billede alfetch Nybegynder
17. juli 2007 - 16:43 #1
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.
Avatar billede michaelthomassen Nybegynder
18. juli 2007 - 03:15 #2
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.
Avatar billede alfetch Nybegynder
18. juli 2007 - 12:07 #3
Jeg tror mit webhotel buydomains har slået det fra af sikkerhedsmæssige grunde? eller kan man selv slå det til ?
Avatar billede alfetch Nybegynder
18. juli 2007 - 12:11 #4
mine overførte variabler? det vil sige?
Avatar billede alfetch Nybegynder
18. juli 2007 - 12:18 #5
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>";} }
?>

//HTML
<font size="1" face="Verdana" color="#FFFFFF">Level 12 = Administrator (Får adgang til privat billeder)
Level 2 = Normalbruger (Får adgang til normale billeder)</font></b></p>
<form action="<? echo"$PHP_SELF"; ?>?mode=tilfoj" method="post">
<b>
<font size="2" color="#FFFFFF" face="Verdana">Login :<br></font>
<font color="#FFFFFF" face="Verdana"><input type="text" name="Login" maxlenght="20" class="tekstboks"></font>

<font size="2" color="#FFFFFF" face="Verdana"><br> Password :<br></font><font face="Verdana" color="#FFFFFF"><font

color="#FFFFFF"><input type="text" name="Password" maxlenght="20" class="tekstboks"></font>

<font size="2" face="Verdana"><br>Level :<br></font><font color="#FFFFFF"><input type="text" name="Level" maxlenght="20"

class="tekstboks"></font><font size="2" face="Verdana"><br> </font>

<input type="submit" value="Tilføj bruger" style="float: left"></td> <form action="<? echo"$PHP_SELF"; ?>?mode=tilfoj"

method="post">
</b>
</form>
Avatar billede alfetch Nybegynder
18. juli 2007 - 12:19 #6
Eller Slet funktionen virker. dog ikke tilfoje funktionen.
Avatar billede alfetch Nybegynder
18. juli 2007 - 12:55 #7
Kan ikke finde fejlen i TILFØJE SCRIPTET.
Avatar billede michaelthomassen Nybegynder
18. juli 2007 - 13:07 #8
$_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&amp;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>';
        }
    }
?>

<p><font size="1" face="Verdana" color="#000000">Level 12 = Administrator (Får adgang til privat billeder) Level 2 = Normalbruger (Får adgang til normale billeder)</font></p>
<form action="<? echo"$PHP_SELF"; ?>?mode=tilfoj" method="post">
<font size="2" color="#000000" face="Verdana">Login :<br></font>
<font color="#000" face="Verdana"><input type="text" name="Login" maxlenght="20" class="tekstboks"></font>

<font size="2" color="#000" face="Verdana"><br> Password :<br></font>
<font face="Verdana" color="#FFFFFF"><input type="text" name="Password" maxlenght="20" class="tekstboks"></font>

<font size="2" face="Verdana"><br>Level :<br></font>
<font color="#FFFFFF"><input type="text" name="Level" maxlenght="20" class="tekstboks"></font>

<font size="2" face="Verdana"><br></font><input type="submit" value="Tilføj bruger" style="float: left">
</form>
Avatar billede michaelthomassen Nybegynder
18. juli 2007 - 13:10 #9
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.).
Avatar billede alfetch Nybegynder
19. juli 2007 - 01:15 #10
Okay.. kan du så sige mig hvad der er galt med scriptet?
Avatar billede michaelthomassen Nybegynder
19. juli 2007 - 11:09 #11
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
Avatar billede alfetch Nybegynder
19. juli 2007 - 23:21 #12
Altså med det script du har lavet så får jeg den her fejl når jeg endten tilføjer eller sletter en:

Warning: mysql_query() [function.mysql-query]: Can't connect to MySQL server on 'localhost' (10061) in hjemmeside.com\addadmin.php on line 24

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in hjemmeside/addadmin.php on line 24
Avatar billede michaelthomassen Nybegynder
19. juli 2007 - 23:34 #13
Ahh, sorry, prøv og byt om på disse to linier;

        if (!$mode) {
            require_once('connect.php');
Avatar billede alfetch Nybegynder
19. juli 2007 - 23:38 #14
Ok, det ændrede da noget ;) Nu virker tilføjelsen, men man kan stadig ikke slette. når jeg trykker slet, sker der bare intet.
Avatar billede alfetch Nybegynder
19. juli 2007 - 23:39 #15
eller, den siger brugeren er slettet.. men den sletter ik.
Avatar billede alfetch Nybegynder
19. juli 2007 - 23:46 #16
ps. hvordan ser headeren ud hvis den skal gå tilbage til addadmin.php efter man har tilføjet eller slettet en person ud?
Avatar billede michaelthomassen Nybegynder
19. juli 2007 - 23:56 #17
UUps, endnu en lill ebug... Sådan går det når man bare "skriver i blinde" og ikke tester koden af :)

Mellem linierne;

        if ($mode == 'slet') {
            mysql_query('DELETE FROM brugere where id = "' . $id . '"');

indsættes

$id = $_GET['id'];


Du kan lave en;

header('location: addadmin.php');

for automatisk at komme tilbage (husk ikke at udskrive andet på siden inden denne linie)
Avatar billede alfetch Nybegynder
20. juli 2007 - 00:03 #18
Jamen, den skal jo både ind ved hvor man sletter og hvor man tilføjer..
Avatar billede alfetch Nybegynder
20. juli 2007 - 00:05 #19
Så kan jo ikke undgrå at der ikke er udskrevet andet på siden inden?
Avatar billede michaelthomassen Nybegynder
20. juli 2007 - 00:15 #20
$id = $_GET['id'];

skal ikke bruges når du indsætter? Jeg gik ud fra at feltet id i tabellen, var et autoincrement?

Hvis du ikke vil have automatisk redirect til hovedsiden igen, kan du jo bare lave et link efter din "Brugeren er blevet slettet korrekt"

echo '<a href="addadmin.php">Tryk her for at komme tilbage til hovedsiden</a>';
Avatar billede alfetch Nybegynder
20. juli 2007 - 00:18 #21
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
Avatar billede michaelthomassen Nybegynder
20. juli 2007 - 00:24 #22
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();
Avatar billede alfetch Nybegynder
20. juli 2007 - 11:56 #23
Yup, kan du have ret i ;) Tusind tak!
Avatar billede michaelthomassen Nybegynder
20. juli 2007 - 11:57 #24
Det var så lidt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester