Avatar billede jemchr Nybegynder
20. oktober 2011 - 16:43 Der er 9 kommentarer og
2 løsninger

hent tilmeldte og slet en enkelt

Hej
jeg har et simpelt tilmeldings system med brug af php og mysql db.
her kan brugerne tilmelde sig et ugentligt arrangement. Tilmelder man sig med sit navn, listes man med det samme på listen over tilmeldte. Nu er det sådant at der ind imellem er nogle der på dagen vil afmelde sig igen. Kan nogen hjælpe med at tilføje et slet link efter hvert navn? og lave en funktion der sletter efterfølgende den person som sletter sig fra listen...

<?php
$server = "localhost";
$brugernavn = "xxxx";
$kode = "xxxx";
$db = "xxxx";


mysql_connect($server , $brugernavn , $kode) or die(mysql_error());


mysql_select_db($db)or die(mysql_error());


$data = mysql_query("SELECT * FROM foredragstilmeldte" ) or die(mysql_error());

while ($info = mysql_fetch_array($data))
  {

echo "Id: " . $info['id'] . ":";
echo "Navn: " . $info['navn'] . ":";

[her skulle der gerne være et link der præcist sletter den valgte person]
}
?>
Avatar billede olsensweb.dk Ekspert
20. oktober 2011 - 17:17 #1
kan du ikke bare lave et et link på navnet ??, og teste på $_SESSION['USERID'], som jeg formoder du sætter når brugeren logger ind

while ($info = mysql_fetch_array($data))
{
$navn = $info['navn'];
$id = $info['id'];
echo "Id: " . $id . ":";

if($_SESSION['USERID'] == $id) echo 'Navn: <a href="deleteuser.php?tmpid='.$id.'">'. $navn .'</a>';
else echo "Navn: " . $navn . ":";
}
Avatar billede jemchr Nybegynder
20. oktober 2011 - 17:27 #2
hej
jeg har en meget simpel login - ingen session, der ved rigtigt password, bare sender brugeren til tilmeldings siden. Her skriver vedkommen sit navn i en formular - trykker på tilmeld og så er han/hun tilmeldt. Jeg har ovenstående kode som det eneste indtil videre. Det var det jeg gerne ville bygge videre på. Så kan jeg selv følge med hvad ang. brugen af PHP etc.
Avatar billede olsensweb.dk Ekspert
20. oktober 2011 - 17:58 #3
hvordan sikre du det er den rigtige bruger der er logget ind ??
jeg ville være ked at en anden bruger kunne slette min tilmelding
Avatar billede jemchr Nybegynder
20. oktober 2011 - 18:31 #4
det kan du have ret i, ...

er 7-9-13 ikke sket endnu

Men jeg ved faktisk ikke hvordan jeg sætter det op så jeg sikrer det du nævner.

så jeg benytter pt den løsning jeg har kendskab til, eller kan overskue

jeg vil tage til takke med hjælpen til mit egentlige spørgsmål..
så må jeg kigge på session som nu nævnte først efterfølgende
Avatar billede danco Nybegynder
20. oktober 2011 - 18:31 #5
Umiddelbart tænker jeg at jeg ville lave det på følgende måde:

while ($info = mysql_fetch_array($data)) {
$navn = $info['navn'];
$id = $info['id'];

echo '<a href="deleteuser.php?tmpid='.$id.'">Slet '. $navn .'</a>';
}

deleteUser.php kunne således så sådan her ud:

/**
  Connect til mysql her
*/
$id = $_GET['tmpid'];
if(is_numeric($id) ) {
  $sql = "DELETE FROM foredragstilmeldte WHERE id=$id";
  mysql_query($sql) or die(mysql_error());
}
header("location:index.php");
Avatar billede olsensweb.dk Ekspert
20. oktober 2011 - 19:02 #6
en lille kommentar til deleteUser.php som danco forslår, her skal der testes om det er den rigtige bruger, det er jo den store ulempe ved GET, man skriver det direkte i URL'en det er så nemt at hacke

feks ville jeg se i url der stå deleteuser.php?tmpid=3
så skrive man hvis man er ond i addresse linjen deleteuser.php?tmpid=10 og så får man slettet en anden bruger

du bør også kigge på sikring mod sql injection feks med functionen mysql_real_escape_string http://dk2.php.net/mysql_real_escape_string




/**
  Connect til mysql her
*/
$id = $_GET['tmpid'];
if($_SESSION['USERID'] == $id){
    $sql = "DELETE FROM foredragstilmeldte WHERE id=$id";
    mysql_query($sql) or die(mysql_error());

    header("location:index.php");
}
else{
    echo "du er kommet ulovligt til denne side";
    // her bør du sparke bruger til logon siden, du kan ikke bruge header("location:index.php");, da du har sendt noget til skærmen
}
Avatar billede danco Nybegynder
20. oktober 2011 - 19:19 #7
Jeg er fuldstændig enig med dig ronols.
Ovenstående var blot en illustration af hvordan det OVERFLADISK kunne klares.
Man kunne yderligere også kræve at man bekræfter frameldingen via email. Eller måske endnu smartere have en checksum på hver tilmeldte så det kunne hedde:
delete.php?checksum=34gjKgk3092mGkregRwG.

Der er mange muligheder alt efter det sikkerheds niveau man ønsker i sit system.
Avatar billede jemchr Nybegynder
21. oktober 2011 - 09:15 #8
tak for jeres svar - prøver om jeg kam få gjort det sikkert som forslået.

vender lige tilbage med pointene
Avatar billede jemchr Nybegynder
21. oktober 2011 - 12:15 #9
hej jeg har fået det til at fungere med den indtil videre enkle og noget usikre løsning. Lige et ekstra sp:
$id = $_GET['tmpid'];..... tmpid, er det en "browser gemt" id?

kan I evt give et svar så pointene kan gives
Avatar billede danco Nybegynder
22. oktober 2011 - 01:28 #10
tmpid er blot til for at have noget at "gemme" værdien i . I princippet kan du kalde det hvad du har lyst til.
Det er bare fordi det er den letteste og hurtigste vej at overfører data mellem to sider.
Avatar billede olsensweb.dk Ekspert
22. oktober 2011 - 09:23 #11
svar
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