Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите разобраться с Update БД на php / 8 сообщений из 8, страница 1 из 1
11.01.2014, 12:22
    #38522860
Foxy7Bu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с Update БД на php
Добрый день!

Помогите, пожалуйста, найти ошибку в обновлении БД через php.
сейчас при вводе нового значения обновляет страничку и сбрасывает на прежнее, в базу значение не вносит

Код такой:

<body>
<form method="post" action="update.php">

<?php
//Редактируем данные:
if (isset($_POST["id_requests"])){
$id = $_POST['id_requests'] ;
$them = $_POST['theme'];
$q=mysql_query("UPDATE u3191847_cs_sd.t_requests SET t_requests.theme='".$them."' WHERE t_requests.id_requests='".$id."'");
if (!q) {
echo "Не удалось выполнить запрос SQ";
} }
//Вывод значений из БД
$result = mysql_query("SELECT * FROM u3191847_cs_sd.t_requests where id_requests = 1");
$list = mysql_fetch_array($result);
echo " <input type='text' name='theme' border='1' size='34' style='color:blue;' value=".$list["theme"].">";
?>

<input type="submit" name="Submit" value="Применить изменения" style="color:blue;">
</form>
</body>

Заранее спасибо :)
...
Рейтинг: 0 / 0
11.01.2014, 13:39
    #38522904
Anjey aka PM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с Update БД на php
Foxy7Bu,

Пичально дырявая до SQL-Injection хрень.

тынц
...
Рейтинг: 0 / 0
11.01.2014, 13:53
    #38522909
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с Update БД на php
if (!q) {
...
Рейтинг: 0 / 0
11.01.2014, 16:32
    #38522986
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с Update БД на php
Foxy7BuДобрый день!

Помогите, пожалуйста, найти ошибку в обновлении БД через php.
сейчас при вводе нового значения обновляет страничку и сбрасывает на прежнее, в базу значение не вносит

Код такой:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 
<body>
  <form method="post" action="update.php">   
    
  <?php
	//Редактируем данные:
	if (isset($_POST["id_requests"])){
	$id = $_POST['id_requests'] ;
	$them = $_POST['theme'];
	$q=mysql_query("UPDATE u3191847_cs_sd.t_requests SET t_requests.theme='".$them."' WHERE t_requests.id_requests='".$id."'");
	if (!q) {
	echo "Не удалось выполнить запрос SQ";
		}   }  
    //Вывод значений из БД              
    $result = mysql_query("SELECT * FROM u3191847_cs_sd.t_requests where id_requests = 1");
    $list = mysql_fetch_array($result);
          echo   " <input type='text' name='theme' border='1' size='34' style='color:blue;'  value=".$list["theme"].">";
     ?>                       
      
	<input type="submit" name="Submit" value="Применить изменения" style="color:blue;">
    </form>
</body>


Заранее спасибо :)

а условие if (isset($_POST["id_requests"])){ вообще выполняется?
я просто нигде в форме не вижу инпута с именем "id_requests"

Насчёт sql-injection, о которых уже упомянули, советую почитать. В частности очень хорошо использовать функцию mysql_real_escape_string.

Как я понимаю приблизительно желалось вот это (смотрите отличия):
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
 
<body>
  <form method="post" action="update.php">   
    
  <?php
  //Редактируем данные:
  if (isset($_POST["id_requests"])){
    $id = mysql_real_escape_string($_POST['id_requests']);
    $them = mysql_real_escape_string($_POST['theme']);
    $q=mysql_query("UPDATE u3191847_cs_sd.t_requests SET t_requests.theme='{$them}' WHERE t_requests.id_requests='{$id}'");
    if (!q) {
      echo "Не удалось выполнить запрос SQL";
    }
  }   
  //Вывод значений из БД              
  $result = mysql_query("SELECT * FROM u3191847_cs_sd.t_requests where id_requests = 1");
  $list = mysql_fetch_array($result);
  echo   " <input type='text' name='theme' border='1' size='34' style='color:blue;'  value='{$list["theme"]}'>";
  ?>                       
      
  <input type="hidden" name="id_requests" value="1">
  <input type="submit" name="Submit" value="Применить изменения" style="color:blue;">
  </form>
</body>



Не проверял, но вроде так должно работать.
...
Рейтинг: 0 / 0
11.01.2014, 17:57
    #38523050
Foxy7Bu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с Update БД на php
Спасибо огромное! работает как надо :)
...
Рейтинг: 0 / 0
11.01.2014, 18:20
    #38523066
Foxy7Bu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с Update БД на php
Если несложно, можете еще посмотреть что с капчей у меня не так.
Проверку на правильность осуществляет, но данные в базу не заносит.
Если полностью удалить капчу - данные успешно в базу вносятся, т.е. проблема именно с капчей, а не с формой добавления в БД.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
 <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
 <?php
 
  //--Если передана капча
  if ( isset($_POST['captcha']) )
  {
    $code = $_POST['captcha']; //--Получаем введенную пользователем капчу
     session_start();
    //--Сравниваем
    if ( isset($_SESSION['captcha']) && strtoupper($_SESSION['captcha']) == strtoupper($code) )
      echo 'Правильно!';
        if (isset($_GET["title"])){
            $title = $_GET["title"];
            $desc = $_GET["description"] ;
            $add = "insert into t_requests (theme, description) values ('$title','$desc')";
                }
      else {
      echo 'Неправильно!';}
    //--Удаляем из сессии код капчи
    unset($_SESSION['captcha']);
 
    exit();
  }      
 ?>     
         <table align="center">
        <tr><td>Заголовок:</td>
           <td><input name="title" type="text"  placeholder="Введите краткую тему запроса"></td>
        </tr>
        <tr><td valign="top" align="right" style="color:blue;"> Описание: </td>
            <td><textarea name="description" cols="95" rows="10" placeholder="Укажите максимальное количество деталей, связанных с возникшей проблемой"></textarea> </td>
        </tr>
        </table>
        <div align="center">
        <img src="captcha.php?sid=<?php echo rand(10000, 99999); ?>" width="120" height="20" alt="" />

        <input type="text" name="captcha" />

        <input type="submit" value="Отправить запрос" />
        </div> 
        </form>
</body>



В отдельном файле capcha.php прописываю:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
<?php
 
  $letters = 'ABCDEFGKIJKLMNOPQRSTUVWXYZ';
 
  $caplen = 6;
  $width = 120; $height = 20;
  $font = 'comic.ttf';
  $fontsize = 14;
 
  header('Content-type: image/png');
 
  $im = imagecreatetruecolor($width, $height);
  imagesavealpha($im, true);
  $bg = imagecolorallocatealpha($im, 0, 0, 0, 127);
  imagefill($im, 0, 0, $bg);
 
  putenv( 'GDFONTPATH=' . realpath('.') );
 
  $captcha = '';
  for ($i = 0; $i < $caplen; $i++)
  {
    $captcha .= $letters[ rand(0, strlen($letters)-1) ];
    $x = ($width - 20) / $caplen * $i + 10;
    $x = rand($x, $x+4);
    $y = $height - ( ($height - $fontsize) / 2 );
    $curcolor = imagecolorallocate( $im, rand(0, 100), rand(0, 100), rand(0, 100) );
    $angle = rand(-25, 25);
    imagettftext($im, $fontsize, $angle, $x, $y, $curcolor, $font, $captcha[$i]);
  }
 
  session_start();
  $_SESSION['captcha'] = $captcha;
 
  imagepng($im);
  imagedestroy($im);
 
?>
...
Рейтинг: 0 / 0
11.01.2014, 20:13
    #38523137
Anjey aka PM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с Update БД на php
Foxy7Bu,

А статейку-то я на вашем месте бы почитал...
...
Рейтинг: 0 / 0
12.01.2014, 12:44
    #38523409
Foxy7Bu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с Update БД на php
Решение найдено!!!!

Запуск сессии прописываем в начале файла до соединения с БД, а не в середине, как было изначально

Код: php
1.
2.
3.
4.
<?php
    session_start();
   require_once "db.php";
  ?>



и потом сам код:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
 <?php
 
  //--Если передана капча
  if ( isset($_POST['captcha']) )
  {
    $code = $_POST['captcha']; //--Получаем введенную пользователем капчу
  
    //--Сравниваем
    if ( isset($_SESSION['captcha']) && strtoupper($_SESSION['captcha']) == strtoupper($code) )
      echo 'Правильно!';
        if (isset($_GET["title"])){
            $title = $_GET["title"];
            $desc = $_GET["description"] ;
            $add = "insert into t_requests (theme, description) values ('$title','$desc')";
                }
      else {
      echo 'Неправильно!';}
    //--Удаляем из сессии код капчи
    unset($_SESSION['captcha']);
 
    exit();
  }      
 ?>     
         <table align="center">
        <tr><td>Заголовок:</td>
           <td><input name="title" type="text"  placeholder="Введите краткую тему запроса"></td>
        </tr>
        <tr><td valign="top" align="right" style="color:blue;"> Описание: </td>
            <td><textarea name="description" cols="95" rows="10" placeholder="Укажите максимальное количество деталей, связанных с возникшей проблемой"></textarea> </td>
        </tr>
        </table>
        <div align="center">
        <img src="captcha.php?sid=<?php echo rand(10000, 99999); ?>" width="120" height="20" alt="" />
 
        <input type="text" name="captcha" />
 
        <input type="submit" value="Отправить запрос" />
        </div> 
        </form>
</body>
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите разобраться с Update БД на php / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]