Нещо if-овете се изпълняват едновременно. хелп

Foxy

Registered
Здравейте! Имам следният код:
Код:
<?
session_start();
include "config.php";
$username = $_SESSION['username'];
?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<?
if ($username) {
$id = $_GET['id'];
if ($id) {
$sql = "DELETE FROM novina WHERE id='$id'";
mysql_query($sql) or die (mysql_error());
echo "Новината е изтрита. <a href='index.php'>начало</a>";
}
else {
echo "Избери новина за триене.";
}
}
else {
echo "Логни се";
}
if ($row[avtor] != $username) {
	echo "ti ne si avtor na novinata";
	}
?>
този код трие новини. Аз съм си направил да може да се трият новини само ако си логнат, но дори и да си логнат можеш да триеш чужди новини, затова съм си сложил и if за усернейма ако е различен от $username да изписва ти не си автор на новината. Но когато си логнат и тръгнеш да триеш някоя чужда новина изписва:
Логнисе.Новината е изтрита.ti ne si avtor na novinata
и освен това трие новината :( .
това с
Код:
if ($username) {
е задължително тъй като ако напиша на мястото му само
Код:
if ($row[avtor] != $username) {
гостите (т.е тези които не са логнати) могат да трият новини. Как да го направя така, че да ми бачка и това дето проверява дали си автор и другите 2 неща?
 
При такива ситуации някой използват функцията exit, която аз най-много мразя и никога не използвам.
За това ще процедираме - if в if :)

Код:
<?php
session_start();
include "config.php";
$username = $_SESSION['username'];
?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<?
if ($username)
{
    $id = $_GET['id'];
    if ($id)
    {
        if ($row[avtor] == $username)
        {
            $sql = "DELETE FROM novina WHERE id='$id'";
            mysql_query($sql) or die (mysql_error());
            echo "Новината е изтрита. <a href='index.php'>начало</a>";
        }
        else
        {
            echo "ti ne si avtor na novinata";
        }
    }
    else
    {
        echo "Избери новина за триене.";
    }
}
else
{
    echo "Логни се";
}


?>
 
HunteR каза:
При такива ситуации някой използват функцията exit, която аз най-много мразя и никога не използвам.
За това ще процедираме - if в if :)

Код:
<?php
session_start();
include "config.php";
$username = $_SESSION['username'];
?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<?
if ($username)
{
    $id = $_GET['id'];
    if ($id)
    {
        if ($row[avtor] == $username)
        {
            $sql = "DELETE FROM novina WHERE id='$id'";
            mysql_query($sql) or die (mysql_error());
            echo "Новината е изтрита. <a href='index.php'>начало</a>";
        }
        else
        {
            echo "ti ne si avtor na novinata";
        }
    }
    else
    {
        echo "Избери новина за триене.";
    }
}
else
{
    echo "Логни се";
}


?>
нещо не стана - това с логването, и триенето от точния автор бачка, но човек, който не е автор може да трие чужди новини друга идея?
 
Значи сигурен ли си, че $row[avtor] е автора на новината.

А иначе ето още 1 идея :)

Код:
<?php
session_start();
include "config.php";
$username = $_SESSION['username'];
?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<?
if ($username)
{
    $id = $_GET['id'];
    if (is_numeric($id) && $id > 0)
    {
        $sql = "DELETE FROM `novina` WHERE `id`='$id' AND `avtor` = '$username'";
        if (mysql_query($sql))
        {
            echo "Новината е изтрита. <a href='index.php'>начало</a>";
        }
        else
        {
            echo "Ти не си автор на тази новина!";
        }
    }
    else
    {
        echo "Избери новина за триене.";
    }
}
else
{
    echo "Логни се";
}


?>
 
в горния пост обърках - това ако не си се логнал бачка, това ако не си автор на новината бачка, но когато си автор и се опиташ да триеш новина пише
ti ne si avtor na novinata
. Иначе да сигурен съм че row-a е такъв
 
Foxy каза:
в горния пост обърках - това ако не си се логнал бачка, това ако не си автор на новината бачка, но когато си автор и се опиташ да триеш новина пише
ti ne si avtor na novinata
. Иначе да сигурен съм че row-a е такъв
А видя ли втория код където ти дадох.
Добре я за всеки случай удари по 1 echo и на $row['avtor'] и на $username за да си сигурен, че са еднакви ;)
 
HunteR каза:
Foxy каза:
в горния пост обърках - това ако не си се логнал бачка, това ако не си автор на новината бачка, но когато си автор и се опиташ да триеш новина пише
ti ne si avtor na novinata
. Иначе да сигурен съм че row-a е такъв
А видя ли втория код където ти дадох.
Добре я за всеки случай удари по 1 echo и на $row['avtor'] и на $username за да си сигурен, че са еднакви ;)
cc даже по-лошо стана на всички им дава,че са изтрили новина, а всъщност не трие нищо.......
 
Така казах ти взимаш си твоя код.
И отгоре примерно над if ($username) слагаш:
echo $row[avtor]."<br />"$username;
И гледаш дали са същите. Като си включваш новина, на която ти си автор.
 
Я пробвай този вариант:
<?
session_start();
include "config.php";
?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<?
if (isset($_SESSION['username']))
{
$username = $_SESSION['username'];
$avtor = $row['avtor']; //Незнам от къде вземаш нейната стойност
if (isset($_GET['id'])) {
if($username == $avtor){
$sql = mysql_query("DELETE FROM novina WHERE id='$id'") or die(mysql_error());
if($sql)
{
echo "Новината е изтрита. <a href='index.php'>начало</a>";
}
else {
echo "Новината не бе изтрита успешно";
}
}
else {
echo "Вие не сте автор на новината";
}
}
else {
echo "Избери новина за триене.";
}
}
else {
echo "Логни се";
}
?>
 
Пробвах и трите варианта, но не станаха - всъшност от една страна грешката е моя защото това $row[avtor] всъщност се опитвам с него да сравня резултата от базата данни :oops: :roll: ,но нещо се заплетох тотоално.... по принцип първоначалния фаил беше този:
Код:
<?
session_start();
include "config.php";
$username = $_SESSION['username'];
?>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<?
$id = $_GET['id'];
if ($id) {
$sql = "DELETE FROM novina WHERE id='$id'";
mysql_query($sql) or die (mysql_error());
echo "Новината е изтрита. <a href='index.php'>начало</a>";
}
else {
echo "Избери новина за триене.";
}
?>
но след теста видях тези недостатъци и се опитах да направя защита ама нещо обърках. Как да направя защитите ? :oops:
 

Back
Горе