Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вопрос по GET и POST на примере

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
makar182
Отправлено: 05 Апреля, 2013 - 20:32:18
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Привет всем! Я недавно начал изучать PHP. Учусь по книге O`Reilly. В одном из заданий создавалась форме (смотрите ниже). При изучении этой схемы у меня возник вопрос - каким образом система удаляет изображение $screenshot, если такой переменной через POST я не передавал? Возможно глупый вопрос, но возможно ли заимствование недостающей переменной POSTом у GETа? Не понял


<?php
require_once('appvars.php');
require_once('connectvars.php');

if (isset($_GET['id']) && isset($_GET['date']) && isset($_GET['name']) && isset($_GET['score']) && isset($_GET['screenshot'])) {
// Grab the score data from the GET
$id = $_GET['id'];
$date = $_GET['date'];
$name = $_GET['name'];
$score = $_GET['score'];
$screenshot = $_GET['screenshot'];
}
else if (isset($_POST['id']) && isset($_POST['name']) && isset($_POST['score'])) {
// Grab the score data from the POST
$id = $_POST['id'];
$name = $_POST['name'];
$score = $_POST['score'];
}
else {
echo '<p class="error">Sorry, no high score was specified for removal.</p>';
}

if (isset($_POST['submit'])) {
if ($_POST['confirm'] == 'Yes') {
// Delete the screen shot image file from the server
@unlink(GW_UPLOADPATH . $screenshot);

// Connect to the database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

// Delete the score data from the database
$query = "DELETE FROM guitarwars WHERE id = $id LIMIT 1";
mysqli_query($dbc, $query);
mysqli_close($dbc);

// Confirm success with the user
echo '<p>The high score of ' . $score . ' for ' . $name . ' was successfully removed.';
}
else {
echo '<p class="error">The high score was not removed.</p>';
}
}
else if (isset($id) && isset($name) && isset($date) && isset($score)) {
echo '<p>Are you sure you want to delete the following high score?</p>';
echo '<p><strong>Name: </strong>' . $name . '<br /><strong>Date: </strong>' . $date .
'<br /><strong>Score: </strong>' . $score . '</p>';
echo '<form method="post" action="removescore.php">';
echo '<input type="radio" name="confirm" value="Yes" /> Yes ';
echo '<input type="radio" name="confirm" value="No" checked="checked" /> No <br />';
echo '<input type="submit" value="Submit" name="submit" />';
echo '<input type="hidden" name="id" value="' . $id . '" />';
echo '<input type="hidden" name="name" value="' . $name . '" />';
echo '<input type="hidden" name="score" value="' . $score . '" />';
echo '</form>';
}

echo '<p><a href="admin.php">&lt;&lt; Back to admin page</a></p>';
?>
 
 Top
NoPaper
Отправлено: 05 Апреля, 2013 - 20:41:59
Post Id



Посетитель


Покинул форум
Сообщений всего: 315
Дата рег-ции: Янв. 2012  
Откуда: Минск


Помог: 9 раз(а)




makar182 пишет:
echo '<input type="hidden" name="id" value="' . $id . '" />';
echo '<input type="hidden" name="name" value="' . $name . '" />';
echo '<input type="hidden" name="score" value="' . $score . '" />';

Как это не передаются?
 
 Top
makar182
Отправлено: 05 Апреля, 2013 - 20:50:11
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




if (isset($_POST['submit'])) {
if ($_POST['confirm'] == 'Yes') {
// Delete the screen shot image file from the server
@unlink(GW_UPLOADPATH . $screenshot);


Тут фигурирует $screenshot, а я его не передавал
 
 Top
makar182
Отправлено: 06 Апреля, 2013 - 17:54:55
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Господа,помогите
 
 Top
Dark-def
Отправлено: 07 Апреля, 2013 - 11:18:00
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Дек. 2012  
Откуда: Украина, Запорожье


Помог: 1 раз(а)




PHP:
скопировать код в буфер обмена
  1. $query = "DELETE FROM guitarwars WHERE id = $id LIMIT 1";
  2. // вы удаляете запись по айди
  3. // вот она передается:
  4. echo '<input type="hidden" name="id" value="' . $id . '" />';

разберитесь с логикой своего кода Не понял


-----
while(true); - // И пусть весь мир подождет
 
 Top
makar182
Отправлено: 07 Апреля, 2013 - 12:02:44
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




makar182 пишет:
if (isset($_POST['submit'])) {
if ($_POST['confirm'] == 'Yes') {
// Delete the screen shot image file from the server
@unlink(GW_UPLOADPATH . $screenshot);


Тут фигурирует $screenshot, а я его не передавал


Это не мой код, а учебный, вот я и пытаюсь в нем разобратьсяУлыбка
То что я удалил запись по ID я знаю, но также я удаляю само изображение через unlink
Цитата:
// Delete the screen shot image file from the server
@unlink(GW_UPLOADPATH . $screenshot);

Вот удаляется само изображение, а не просто запись с его именем в БД. В адресе unlink используется переменная $screenshot. Но откуда она взялась если я передаю через POST и никакой $screenshot я не присваивал?$screenshot я присваивал только при передаче GET. Может это связано как-то?

Поправьте меня, если я что-то неправильно говорю, но мне кажется что мы говорим за разные вещи - вы говорите за удаление записи, а я за удаление самого файла.
 
 Top
Dark-def
Отправлено: 07 Апреля, 2013 - 16:43:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Дек. 2012  
Откуда: Украина, Запорожье


Помог: 1 раз(а)




возможно, что $screenshot передается отсюда:
PHP:
скопировать код в буфер обмена
  1. require_once('appvars.php');
  2. require_once('connectvars.php');

или $id привязывается с самому $screenshot


-----
while(true); - // И пусть весь мир подождет
 
 Top
makar182
Отправлено: 07 Апреля, 2013 - 16:58:26
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Dark-def пишет:
возможно, что $screenshot передается отсюда:
PHP:
скопировать код в буфер обмена
require_once('appvars.php');
require_once('connectvars.php');

или $id привязывается с самому $screenshot


Нет, там информация о макс.размере файлов, там ничего такого нет. Я вот тоже думал пор $id, но как-то все равно это странно
 
 Top
Skycrafter
Отправлено: 08 Апреля, 2013 - 06:49:31
Post Id



Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Март 2013  


Помог: 2 раз(а)




http://php.net/manual/ru/function.unlink.php

@unlink(GW_UPLOADPATH . $screenshot);

@unlink удалила с сервера (из директории путь к которой лежит в GW_UPLOADPATH ) файл с именем $screenshot

удаление из базы идет по id


-----
Тысячемильный путь начинается с первого шага...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB