2014-01-18 5 views
0

У меня есть веб-страница с довольно большой CMS за ней, где вы можете добавлять новости, добавлять картинки и другие вещи. И, конечно же, вы можете их удалить.Избегайте наличия нескольких файлов удаления

Вы просто нажимаете delete, и это приводит к скрипту удаления, который удаляет строку из таблицы. Проблема в том, что у меня есть 4-5 удаленных скриптов, которые выглядят точно так же, за исключением того, что они удаляют из разных таблиц. Я хотел бы, чтобы таблица была переменной, которая отслеживает, на какой субстранице пользователь пришел, поэтому мне нужен только один скрипт удаления, а не несколько.

Это кнопка, нажать кнопку, чтобы удалить что-нибудь:

<a href='deletenews.php?id=<?php echo $id ?>'>DELETE</a> 

Обратите внимание, что он идет в delte «новости» .php, было бы неплохо, если бы это было просто delete.php.

Функция удаления скрипта выглядит следующим образом:

session_start(); 

if ($_SESSION['username']) { 

    } else { 
     include 'index.php'; 
     die ("<script> alert(You have to be logged in.');</script>"); 
    } 

mysql_connect('localhost', 'username', 'password') or die (mysql_error()); 
mysql_select_db('database') or die (mysql_error()); 

mysql_query("DELETE FROM news WHERE id = '$_GET[id]'") or die(mysql_error()); 

header('Location: forside.php'); 

Я хотел бы, чтобы быть переменной, а не «новости». Как $ delete. Но эта переменная должна знать, из какой таблицы она должна удалять вещи. Есть ли способ сделать это? Я готов изменить весь свой код, потому что я считаю, что это лучшая практика.

+0

Тааак ... если вы писали код, который работает для 'id', почему вы не можете повторить тот же самый механизм для имени таблицы? Вы знаете, что можете отправлять более одной переменной GET, верно? И вы знаете, что mysql-запрос в PHP - это строка, не так ли? –

+2

Я собираюсь стереть вашу базу данных ... посмотреть на инъекцию – Strawberry

+0

Клубника: Ну, это, вероятно, небезопасно, но вы должны войти в систему, чтобы вводить что-либо вообще, поэтому это не проблема. Скрипт входа довольно безопасен. Я в середине изучения PHP/SQL. Sergiu: Как бы вы это сделали? –

ответ

0

Возможно использовать эту проверку:

$id = (int)$_GET['id']; 
if ($id) 
    if ($table == 'news') { 
     // do something 
     mysql_query("DELETE FROM $table WHERE id = $id") or die(mysql_error()); 
     // or this: 
     //mysql_query("DELETE FROM news WHERE id = $id") or die(mysql_error()); 
    } elseif ($table == 'posts') { 
     // do something 
     mysql_query("DELETE FROM $table WHERE id = $id") or die(mysql_error()); 
     // or this: 
     //mysql_query("DELETE FROM posts WHERE id = $id") or die(mysql_error()); 
    } else { 
     die("You can not delete records from $table table"); 
    } 
} 
+0

Это не проблема. Я хочу, чтобы имя таблицы «news» было переменной. Например «DELETE FROM $ table WHERE id = $ id». Но мне нужно знать, как определить, какая таблица. Потому что есть больше новостей, которые вы можете удалить на этой странице. –

+0

Хорошо, проверьте обновление, пожалуйста –

Смежные вопросы