Gå til innhold

[Løst]YES eller NO før sletting?


Anbefalte innlegg

Har laget en enkel script for å slette en post i databasen, men kunne godt ha tenkt meg en VIL DU VIRKELIG SLETTE? JA NEI.

Klikker man nei kommer man tilbake dit man kom fra, klikker man ja kjører scriptet under her.

 

 

takk

 

<?php
// Connect to the database
include "../include/constants.php";

 $cnx = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
	 if (!$cnx) {
	 die("Unable to connect to database!");
	 }

// Select your database
 mysql_select_db(DB_NAME, $cnx);

$id = $_GET['id'];
$sql = "DELETE FROM fck_data WHERE id=$id";	
$result = mysql_query($sql);
echo "$sql Record deleted!<p>";
?>

Lenke til kommentar
Videoannonse
Annonse

Fant en løsning som egentlig funker. Noen feil eller bedre forslag så bare kom med det. Holder jo på å lære så er greit å få ting riktig selv om det funker.

 

delete.php

<?php
// Connect to the database
include "../include/constants.php";

 $cnx = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
	 if (!$cnx) {
	 die("Unable to connect to database!");
	 }

// Select your database
 mysql_select_db(DB_NAME, $cnx);

//vis
$id = $_GET['id'];
$result = mysql_query("SELECT * FROM fck_data WHERE id=$id");
$myrow = mysql_fetch_array($result);
include "skrivemeny.php"; 
printf("Vil du virkelig slette post nr %s (%s)?<br><br><a href=\"delete2.php?id=%s\">Ja</a> - <a href=\"index.php\">Nei</a>\n", $myrow["id"], $myrow["topic"], $myrow["id"]);


?>

 

delete2.php

<?php
// Connect to the database
include "../include/constants.php";

 $cnx = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
	 if (!$cnx) {
	 die("Unable to connect to database!");
	 }

// Select your database
 mysql_select_db(DB_NAME, $cnx);

//slett
$id = $_GET['id'];
$sql = "DELETE FROM fck_data WHERE id=$id";	
$result = mysql_query($sql);
include "skrivemeny.php"; 
echo "Post nr $id er nå slettet.<p>";
?>

Lenke til kommentar

Av en eller annen grunn er jeg paranoid nok til å være redd for javascriptløsninger til kritiske ting. Ikke for sikkerhetens skyld, men av den enkle grunn at hvis brukeren har deaktivert javascript, kan han være sinnsykt uheldig en dag. Jeg er ikke fan av svekket funksjonalitet hvis man har deaktivert JS..

 

Ingen som deler synspunktet?

Lenke til kommentar

Fant faktisk ut en løsning nå, kom gjerne med forslag til endringer, men denne funker faktisk med bare en fil.

 

<?php
// Connect to the database
include "../include/constants.php";

 $cnx = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
	 if (!$cnx) {
	 die("Unable to connect to database!");
	 }

// Select your database
 mysql_select_db(DB_NAME, $cnx);


 if ($_POST['ja'] == 1)  { 
//slett
$id = $_GET['id'];
$sql = "DELETE FROM fck_data WHERE id=$id";	
$result = mysql_query($sql);
include "skrivemeny.php"; 
header("Location: index.php");
 }

//vis
$id = $_GET['id'];
$result = mysql_query("SELECT * FROM fck_data WHERE id=$id");
$myrow = mysql_fetch_array($result);
include "skrivemeny.php"; 
printf("Vil du virkelig slette post nr %s (%s)?<br>\n", $myrow["id"], $myrow["topic"]);
?>
<br />
<form action="<?php $PHP_SELF?>" method="post">
<input type="hidden" name="ja" value="1" />
<input type="submit" value="JA" />
</form>
<form action="index.php" method="post">
<input type="hidden" name="nei" value="1" />
<input type="submit" value="NEI" />
</form>

Lenke til kommentar
Av en eller annen grunn er jeg paranoid nok til å være redd for javascriptløsninger til kritiske ting. Ikke for sikkerhetens skyld, men av den enkle grunn at hvis brukeren har deaktivert javascript, kan han være sinnsykt uheldig en dag. Jeg er ikke fan av svekket funksjonalitet hvis man har deaktivert JS..

 

Ingen som deler synspunktet?

Ja, du har helt rett. Javascript til slike ting er ingen god ide. Primært kommer det av at GET aldri skal endre noe, det er ikke intensjonen og blir heller aldri det. Det andre problemet er at javascript aldri introduserer sikkerhet, men er bare et tillegg. Selv om majoriteten av brukerene har javascript påslått er det alltid et par prosent, kanskje til og med fem, som ikke har det og aldri får en slik advarsel. POST vil alltid være en bedre løsning som sikrer at man både holder seg til intensjonene med POST/GET og ikke minst at alle må bekrefte hva det nå enn måtte være.

Lenke til kommentar

modifisert den litt mer, har jo bare klip og limt litt og lekt med denne, så er ganske fornøyd selv.

 

<?php
// Connect to the database
include "../include/constants.php";

 $cnx = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
	 if (!$cnx) {
	 die("Unable to connect to database!");
	 }

// Select your database
 mysql_select_db(DB_NAME, $cnx);


 if ($_POST['ja'] == JA)  { 
//slett
$id = $_GET['id'];
$sql = "DELETE FROM fck_data WHERE id=$id";	
$result = mysql_query($sql);
include "skrivemeny.php"; 
header("Location: index.php");
 }


  if ($_POST['nei'] == NEI)  { 
//returner
 header("Location: index.php");
 }

//vis
$id = $_GET['id'];
$result = mysql_query("SELECT * FROM fck_data WHERE id=$id");
$myrow = mysql_fetch_array($result);
include "skrivemeny.php"; 
printf("Vil du virkelig slette post nr %s (%s)?<br>\n", $myrow["id"], $myrow["topic"]);
?>
<br />
<form action="<?php $PHP_SELF?>" method="post">
<input type="submit"  name="ja" value="JA" />
<input type="submit"  name="nei" value="NEI" />
</form>

Lenke til kommentar

Du kan bare legge til ett ekstra felt i tabellen din som heter deleted . Og når du så sletter poster, setter du feltet deleted til 'yes' .

Og når du skriver ut, utelukker du de postene hvor deleted er satt til 'yes' .

 

Skjønner ?

Lenke til kommentar

Du oppretter ett felt til i tabellen din som du kaller "Deleted". Den setter du som integer (Tar imot bare tall, og standarverdi er 0). Så når du sletter/skjuler noe så bare kjører du queryen:

 

"UPDATE tabell SET deleted = '1' WHERE id = '{DINIDHER}'

 

Og når du skal hente ut noe fra databasen, som skal vises bruker du da:

 

"SELECT * FROM tabell WHERE deleted = '0'"

Lenke til kommentar

var ikke værre nei, men sliter litt med å hente ut info derfra.

 

Lag til delete i databasen og satt opp 1 på ett par av sakene der for å teste. (Tenker jeg uansett skal gjøre motsatt, at de som står 1 på liksom er aktivert og vises på siden, mens de som står 0 på ikke skal vises).

 

Dette funker når jeg leter etter id nr, men ikke med å vise alle som har delete = 1.

 

$result = mysql_query("SELECT * FROM fck_data WHERE delete=1 ORDER BY id DESC ");

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...