Hallo,

Ik ben nu bezig met het scripten van een inbox.
Alleen nu wil ik berichten kunnen verwijderen.
Echter mag persoon A het bericht via de URL niet kunnen verwijderen van persoon B etc..

Heb zelf all dit;

<?php
				if (isset($_GET['delete_id'])){
					$mId = $_GET['delete_id'];
					  	if($_SESSION['login-rank'] == 1) {
							$query = "DELETE FROM inbox WHERE id = '$mId'";
							$sql = mysql_query($query) or die(mysql_error());
								echo 'Message is deleted from inbox.';
						} elseif($_SESSION['login-rank'] != 1) {
				echo 'You have no premission to delete!';
					}
			}
?>


De gebruiker is ingelogd onder; $_SESSION['login-name'];

Alvast bedankt!
Een extra WHERE-conditie toevoegen die kijkt of het bericht ook nog van de gebruiker is die het script opvraagt.
Je voert die query uit vanuit de inbox?

Zo ja dan betekent het dat je ook een SELECT query uitvoert met de gegevens.

Dan kan je dus ook in die select query de gebruiker id die in de database opvragen en dan kan je toch gewoon zo checken?

<?PHP

/* Check. */
if($Rij['IDVANGERUIKERUITDB'] == $_SESSION['USERID'])
{
/* Hier die get en alles. */
}
else
{
/* GebruikerIDuitDB komt niet overeen met de SESESSIE ID
echo 'U kunt dit bericht niet deleten.';
}

?>

Kan zijn dat ik er helemaal naast zit, Maar als het goed is sla je ook het ID van de gebruiker op in de database bij inbox, Dus dan kan je in je DELETE query achter id = '".intval($mId)."' AND gebruikerID = '".intval($_SESSION['USERID'])."'

Misschien beetje onduidelijk maar ik hoop dat je het snapt.

Heb al 36 uur niet geslapen dus het denken en uitleggen begint wat moeilijker te worden.

/* Edit */

Jezpur is me voor de 2e keer vandaag voor. ^-^
@Ark: wordt toch eens tijd dan dat je je bed opzoekt? :-) Nachtelijk werk om een deadline te halen zorgt vaak voor meer problemen dan uitstel en fris aan het werk gaan.
Oke probleem opgelost.
NU nog met de text.

Hoe doe ik dit;

<?php
				if (isset($_GET['delete_id'])){
					$mId = $_GET['delete_id'];
					  	if($_SESSION['login-rank'] == 1) {
							$name = $_SESSION['login-name'];
							$query = "DELETE FROM inbox WHERE id = '$mId' AND reciever = '" . $row_2['username'] . "'";
							$sql = mysql_query($query) or die(mysql_error());
								echo 'This reaction is deleted.';
						} elseif($_SESSION['login-rank'] != 1) {
				echo 'You have no premission to delete!';
					}
			}
?>


Als ik nu een id doe maar die is niet van de bijbehoorende gebruiker echo'ed hij nog steeds;

You reaction is deleted.
HOe doe ik dan dat als het Bericht niet bij hem hoort dat 't wat anders echo'ed.

Bvd, Danny
Je controleert ook niet of de query gelukt of mislukt is. Als je daarop controleert kun je ook de echo laten verschillen.

Zoiets heet foutafhandeling. Kijk er maar eens naar en ga het gebruiken ;-).

<?php
							$query = "DELETE FROM inbox WHERE id = '$mId' AND reciever = '" . $row_2['username'] . "'";
							if(!$result = mysql_query($query)) {
									echo 'Helaas er is een fout!';
								if(DEBUG == true)
									{
										echo ': ' . mysql_errno() . ':' . mysql_error() . '(<pre>' . $sql . '</pre>)';
									}
								} else {
									echo 'Succesful deleted.';
							}
?>


Dit zou 't moeten doen, heb nu een bericht met het id 2 en de reciever is webmaster.
Maar als ik met Admin ben ingelogd krijg ik nog steeds gewoon de text; "Succesful deleted."
Klopt, daarom moet je ook beter controleren, dan weet je precies wat er nu aan de hand is. Kijk maar naar de link die ik gaf ;-).
Ik heb alles geprobeerd wat dar staat maar 't werkt niet.
<?php
$sql = "DELETE FROM inbox WHERE id = '" . $mId . "' AND reciever = '" . $row_2['username'] . "'";
if(!$result = mysql_query($query))
{
echo 'Helaas er is een fout!';
if(DEBUG == true)
{
echo ': ' . mysql_errno() . ':' . mysql_error() . '(<pre>' . $sql . '</pre>)';
}
}
elseif(mysql_affected_rows() > 0)
{
echo 'Succesful deleted.';
}
?>

Reageren