/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
slette bruger fra tabel
Fra : Christoffer


Dato : 28-04-05 06:57

Jeg vil gerne lave en administrator mulighed for at slette brugere, men
hvordan gør jeg det egentlig helt præcist, jeg har ingen side til hver
enkelt bruger, men en standard som vist nedenfor.
http://www.buur.info/mdk/site/profil.php?id=2

I min kode vil jeg slette brugeren fra tabellen via id, men hvordan skal jeg
sætte det ind?
Jeg ved at jeg skal bruge følgende kode
delete FROM bruger WHERE id='$_GET[id]'
Men kan ikke se hvordan jeg skal indsætte scriptet så det kun virker hvis
man klikker på et link.

<?php
/* Database connect er klippet ud */

$userlevel = mysql_query("SELECT count(*) as userlevel FROM bruger
WHERE brugernavn = '$_SESSION[brugernavn]'");

if($userlevel == "3") { // Tjekker om brugeren er administrator
$res = mysql_query("SELECT * FROM bruger where id='$_GET[id]'") or
die("Fejl: ".mysql_error()."<br><br>SQL: $sql");

while($row = mysql_fetch_array($res)){ // Henter oplysninger via
id fra Adresselinjen.
Print "Navn: <b><code>$row[brugernavn]</code></b>
<br>
Counter-strike: <b><code>$row[csnick]</code></b><br>
<br>
E-mail: <b><code>$row[email]</code></b><br>
<br>
Hjemmeside: <b><code>$row[hjemmeside]</code></b><br>
<br>
brugeren blev oprettet d.: <b><code>$row[oprettet]</code></b><br>
<br>
bruger har brugerniveau:
<b><code>$row[userlevel]</code></b><br>"; }
}

?>

Hjælp
--
Christoffer



 
 
Zilla (28-04-2005)
Kommentar
Fra : Zilla


Dato : 28-04-05 10:15

Christoffer wrote:
[snip]
> Jeg ved at jeg skal bruge følgende kode
> delete FROM bruger WHERE id='$_GET[id]'
> Men kan ikke se hvordan jeg skal indsætte scriptet så det kun virker hvis
> man klikker på et link.
[snip]
> while($row = mysql_fetch_array($res)){ // Henter oplysninger via
> id fra Adresselinjen.
> Print "Navn: <b><code>$row[brugernavn]</code></b>
> <br>
> Counter-strike: <b><code>$row[csnick]</code></b><br>
> <br>
> E-mail: <b><code>$row[email]</code></b><br>
> <br>
> Hjemmeside: <b><code>$row[hjemmeside]</code></b><br>
> <br>
> brugeren blev oprettet d.: <b><code>$row[oprettet]</code></b><br>
> <br>
> bruger har brugerniveau:
> <b><code>$row[userlevel]</code></b><br>

Her kan du sætte et link ind til en ny side som sletter brugeren fra
tabellen udfra et id:

<a href='slet.php?id=$row[id]'>Slet bruger</a><br>"; }

Eksempel på slet.php:

<?php
//Jeg vil stærkt anbefale at du her laver et tjek af man er logget ind
//og har rettigheder til at slette brugeren, så det ikke er alle og
//enhver der kan slette brugere hvis bare de kender adressen. Også
//for at undgå sql injection attacks (google det evt.)

//Connect til database som du plejer

$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Could not connect : " . mysql_error());
mysql_select_db("my_database") or die("Could not select database");

//Query der sletter brugeren ud fra id
$query = "DELETE FROM bruger WHERE id='$_GET[id]';

//Udfører query
$result = mysql_query($query) or die("Query failed : " . mysql_error());
echo "Brugeren blev slettet.";
?>

Zilla

--
HUSK: Fjern de store bogstaver i
e-mailen for at skrive til mig

REMEMBER: Remove the capital letters
in my e-mail to write to me.

Zilla (28-04-2005)
Kommentar
Fra : Zilla


Dato : 28-04-05 10:19

Zilla wrote:
[snip]
> //Query der sletter brugeren ud fra id
> $query = "DELETE FROM bruger WHERE id='$_GET[id]';
[snip]

Det gik vist lige hurtigt nok... Der mangler et " til slut i ovenstående
linie...

Zilla

--
HUSK: Fjern de store bogstaver i
e-mailen for at skrive til mig

REMEMBER: Remove the capital letters
in my e-mail to write to me.

Christoffer (28-04-2005)
Kommentar
Fra : Christoffer


Dato : 28-04-05 15:20

Kan ikke få det til at virke helt.. for det første så peger linket til
slet.php ikke på en decideret id, men på slet.php?id=
Har forsøgt mig med hvad du foreslog
<a href='slet.php?id=$row[id]'>Slet bruger</a>
og med
<a href='slet.php?id=".$row["id"]."'>Slet bruger</a>
Ingen af dem giver noget *unikt* id? som leder videre til slet.php, og uden
id virker den side ikke.

Desuden siger slet.php at jeg ikke har adgang til siden selvom jeg er logget
ind med en bruger som har den rigtige userlevel.
<?php
if(isset($_SESSION['authenticated'])) { // Tjekker om logget ind

include "config.php"; //Opretter forbindelse til mysql
mysql_connect($mysql_host, $mysql_user, $mysql_pw);
mysql_select_db($mysql_db);

$userlevel = mysql_query("SELECT count(*) as userlevel FROM bruger WHERE
brugernavn = '$_SESSION[brugernavn]'");

if($userlevel == "3") { // Tjekker for den rigtige userlevel, for at
have tilladelse til at slette

//Query der sletter brugeren ud fra id
$query = "DELETE FROM bruger WHERE id='$_GET[id]'";

//Udfører query
$result = mysql_query($query) or die("Query failed : " . mysql_error());
Print "<META HTTP-EQUIV='Refresh' Content='4; Url=profiler.php'><font
color='darkred'>Brugeren er slettet'</font>";
}
}

Else
Print "<font color='white'>Du har ikke adgang til denne side</font>"
?>
-Får ingen fejlmeddelser, kun "du har ikke adgang til denne side"

Håber nogen ser en (opbygnings)fejl som jeg manger rutinen til at finde og
siger samtidig tak for alle svarene som er kommet indtil videre!

--
Christoffer



Zilla (28-04-2005)
Kommentar
Fra : Zilla


Dato : 28-04-05 16:37

Christoffer wrote:
> Kan ikke få det til at virke helt.. for det første så peger linket til
> slet.php ikke på en decideret id, men på slet.php?id=
> Har forsøgt mig med hvad du foreslog
> <a href='slet.php?id=$row[id]'>Slet bruger</a>
> og med
> <a href='slet.php?id=".$row["id"]."'>Slet bruger</a>
> Ingen af dem giver noget *unikt* id? som leder videre til slet.php, og uden
> id virker den side ikke.

Prøv med "<a href='slet.php?id=" . $row[id] . "'>Slet bruger</a>";

For at dette virker kræver det selvfølgelig at du i din MySQL-tabel har
en kolonne der hedder "id", hvilket jeg går ud fra du har når du bruger
den i profil.php...

> Desuden siger slet.php at jeg ikke har adgang til siden selvom jeg er logget
> ind med en bruger som har den rigtige userlevel.
[snip]
> $userlevel = mysql_query("SELECT count(*) as userlevel FROM bruger WHERE
> brugernavn = '$_SESSION[brugernavn]'");

Desuden gemmes der kun en result identifier i $userlevel, altså ikke
userlevelen. For at få fat i denne skal du indsætte noget i denne retning:

$userlevel = mysql_fetch_array($userlevel, MYSQL_NUM);

hvorefter resultatet ligger i $userlevel[0].
Af ren nysgerrighed, hvorfor tæller du antallet af rækker hvor
brugernavnet indgår?

[snip]

Zilla
--
HUSK: Fjern de store bogstaver i
e-mailen for at skrive til mig

REMEMBER: Remove the capital letters
in my e-mail to write to me.

Christoffer (28-04-2005)
Kommentar
Fra : Christoffer


Dato : 28-04-05 19:49

> Desuden gemmes der kun en result identifier i $userlevel, altså ikke
> userlevelen. For at få fat i denne skal du indsætte noget i denne retning:
>
> $userlevel = mysql_fetch_array($userlevel, MYSQL_NUM);
>
> hvorefter resultatet ligger i $userlevel[0].

Tror jeg ikke helt jeg forstod
$userlevel = mysql_query("SELECT count(*) as userlevel FROM bruger WHERE
brugernavn = '$_SESSION[brugernavn]'");
$userlevel = mysql_fetch_array($userlevel, MYSQL_NUM);
Eller?

> Af ren nysgerrighed, hvorfor tæller du antallet af rækker hvor
> brugernavnet indgår?
Fordi jeg er begynder og indtil videre er den eneste måde jeg kan finde ud
af det på..



Zilla (28-04-2005)
Kommentar
Fra : Zilla


Dato : 28-04-05 20:03

Christoffer wrote:
[snip]
> Tror jeg ikke helt jeg forstod
> $userlevel = mysql_query("SELECT count(*) as userlevel FROM bruger WHERE
> brugernavn = '$_SESSION[brugernavn]'");
> $userlevel = mysql_fetch_array($userlevel, MYSQL_NUM);
> Eller?
[snip]

Ja, og herefter ligger resultatet i $userlevel[0].

For en god ordens skyld er her et link til mysql_fetch_array()-funktionen:

http://dk2.php.net/mysql_fetch_array

Zilla
--
HUSK: Fjern de store bogstaver i
e-mailen for at skrive til mig

REMEMBER: Remove the capital letters
in my e-mail to write to me.

Kim Schulz (28-04-2005)
Kommentar
Fra : Kim Schulz


Dato : 28-04-05 11:17

On Thu, 28 Apr 2005 11:19:12 +0200
Zilla <denISELFKGSPbedste2@hotmail.com> wrote:

> Zilla wrote:
> [snip]
> > //Query der sletter brugeren ud fra id
> > $query = "DELETE FROM bruger WHERE id='$_GET[id]';
> [snip]
>
> Det gik vist lige hurtigt nok... Der mangler et " til slut i
> ovenstående linie...


hvad vil du så gøre noget jeg sender dette som query streng:
?id=' OR id!='

altså slet brugere som enten ikke har noget id=''eller id!=''
.....altså alle brugere.
sikkerhedsbrist som mange ikke skænker en tanke men som kan give
drastiske følger.


--
Kim Schulz | Need a Content Management System for your website? Go
Geek by nature | get Fundanemt at : http://www.fundanemt.com New
schulz.dk | version out now!

Peter Brodersen (28-04-2005)
Kommentar
Fra : Peter Brodersen


Dato : 28-04-05 13:06

On Thu, 28 Apr 2005 12:16:58 +0200, Kim Schulz <kim@schulz.dk> wrote:

>hvad vil du så gøre noget jeg sender dette som query streng:
> ?id=' OR id!='

Hvis det er en standard-php-konfiguration, vil værdier i $_GET være
addslashed, så det vil ikke betyde det store.
--
- Peter Brodersen

Jacob Atzen (28-04-2005)
Kommentar
Fra : Jacob Atzen


Dato : 28-04-05 14:26

On 2005-04-28, Peter Brodersen <usenet2005@ter.dk> wrote:
> Hvis det er en standard-php-konfiguration, vil værdier i $_GET være
> addslashed, så det vil ikke betyde det store.

Pga. magic_quotes eller hur?

--
Med venlig hilsen
- Jacob Atzen

Peter Brodersen (28-04-2005)
Kommentar
Fra : Peter Brodersen


Dato : 28-04-05 15:14

On 28 Apr 2005 13:25:52 GMT, Jacob Atzen <jacob@aub.dk> wrote:

>> Hvis det er en standard-php-konfiguration, vil værdier i $_GET være
>> addslashed, så det vil ikke betyde det store.
>
>Pga. magic_quotes eller hur?

Præcis.

Dette er dog på ingen måde en anbefaling af magic_quotes. Jeg tror -
eller håber - blot at verden er sådan, at dem, der har slået
magic_quotes fra, netop selv har clue (og koder derefter).

--
- Peter Brodersen

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste