Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Help me: Ошибка при проверке пароля
 
 автор: Artemy   (30.09.2004 в 13:00)
 
 

Помогите найти ошибку!
У меня есть список товаров, типа того как гост. книге, подкаждим товаром ссылка продать!
Но чтобы случайно не нажимали решил поставить простенький пароль!
Вот код по которому переходят на файл delrec.php

<?
  
include "config.php";
  
$ath mysql_query("select * from sklad order by model;");
  if (
$ath)
  {
     echo 
"
     <table style='font-size: 11px;' bordercolor=white width='595' border=1 cellspacing=2 cellpadding=2>
     <tr>
     <td align=center width=75 bordercolor='#006600'><b>Модель</b></td>
    <td align=center width=60 bordercolor='#006600'><b>Номер<b></td>
    <td align=center width=90 bordercolor='#006600'><b>Исполнение<b></td>
    <td align=center width=120 bordercolor='#006600'><b>Дата поступления<b></td>
    <td align=center width=90 bordercolor='#006600'><b>Прочие<b></td> 
    </tr>"
;
while(
$triall mysql_fetch_array($ath))
  {
    echo 
"<tr>
    <td align=center height=20 bordercolor='#ccffcc'><b>"
.$triall['model']."</b></td>
    <td align=center bordercolor='#ccffcc'>"
.$triall['number']."</td>
    <td align=center bordercolor='#ccffcc'>"
.$triall['isp']."</td>
    <td align=center bordercolor='#ccffcc'>"
.$triall['data']."</td>
    <td align=center bordercolor='#ccffcc'>"
.$triall['pr']."</td>
    </tr>"
;
    echo 
"<tr>
    <td colspan=5 align=right> <a class=prakb href=admin/delrec.php?id="
.$triall['id']." title='Продать'>Продать</a><br><br></td>
    </tr>"
;
  }
  echo 
"</table>";
}
else 
   {
      echo 
"<p><b>Error: ".mysql_error()."</b></p>";
      exit();
   } 
   
?>


А вот код файла delrec.php


<?php
$action 
$_POST["action"];
if (!empty(
$action)) 
{
  
$del_pass="2706633";
  if (
$sklad_pass==$del_pass)
  {
  include 
"../config.php";
  
$query "DELETE FROM sklad WHERE id=".$_GET["id"];
  if(
mysql_query($query))
  {
      print 
"<HTML><HEAD>\n";
      print 
"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=../index.php'>\n";
      print 
"</HEAD></HTML>\n";
  }
  else 
puterror("Ошибка при обращении к складу");
  }
  else
  {
  echo (
"Не верный пароль!");
  }
}
?>
<form action=delrec.php method=post>
<input type=hidden name=action value=post>
<table align=center bordercolor=#FFFFFF border=1 cellpadding=1 cellspacing=1>
   <tr>
         <td align=center bordercolor=#0066FF>
         Введите пароль
         </td>
   </tr>
   <tr>
         <td bordercolor=#FFFFFF>
          <input maxlength=7 name=sklad_pass size=7 type=text value='<? echo $sklad_pass?>'>
            <input type=submit value=Продать>
         </td>
   </tr>
</table>
</form>


В итоге спрашивает пароль, вводишь а он пишит "Ошибка при обращении к складу" !
В чем проблема, не могу понять!

   
 
 автор: cheops   (30.09.2004 в 13:17)   письмо автору
 
   для: Artemy   (30.09.2004 в 13:00)
 

Хм... у вас теряется параметр id при нажатии на кнопку "Продать" - его следует передать через скрытое поле hidden:
<?php 
$action 
$_POST["action"]; 
$id "";
if(isset(
$_GET["id"])) $id $_GET["id"];
if(isset(
$_POST["id"])) $id $_POST["id"];
if (!empty(
$action)) 

  
$del_pass="2706633"
  if (
$sklad_pass==$del_pass
  { 
  include 
"../config.php"
  
$query "DELETE FROM sklad WHERE id=".$id
  if(
mysql_query($query)) 
  { 
      print 
"<HTML><HEAD>\n"
      print 
"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=../index.php'>\n"
      print 
"</HEAD></HTML>\n"
  } 
  else 
puterror("Ошибка при обращении к складу"); 
  } 
  else 
  { 
  echo (
"Не верный пароль!"); 
  } 

?> 
<form action=delrec.php method=post> 
<input type=hidden name=action value=post> 
<table align=center bordercolor=#FFFFFF border=1 cellpadding=1 cellspacing=1> 
   <tr> 
         <td align=center bordercolor=#0066FF> 
         Введите пароль 
         </td> 
   </tr> 
   <tr> 
         <td bordercolor=#FFFFFF> 
          <input maxlength=7 name=sklad_pass size=7 type=text value='<? echo $sklad_pass?>'> 
          <input name=id type=hidden value='<? echo $id?>'> 
            <input type=submit value=Продать> 
         </td> 
   </tr> 
</table> 
</form>

   
 
 автор: Artemy   (30.09.2004 в 13:25)
 
   для: cheops   (30.09.2004 в 13:17)
 

Не работает, все та же песня!

   
 
 автор: cheops   (30.09.2004 в 13:32)   письмо автору
 
   для: Artemy   (30.09.2004 в 13:25)
 

Попробуйте после формирования переменной $query вставить строки:
<?php
echo $query."<br>";
echo 
mysql_error();
?>

   
 
 автор: Artemy   (30.09.2004 в 13:58)
 
   для: cheops   (30.09.2004 в 13:32)
 

Вот что пишит

DELETE FROM sklad WHERE id=

Ошибка при обращении к складу

   
 
 автор: cheops   (30.09.2004 в 14:01)   письмо автору
 
   для: Artemy   (30.09.2004 в 13:58)
 

Хм... а если после строки
if(isset($_POST["id"])) $id = $_POST["id"]; 

поставить вывод параметра id:
echo "id = ".$id: 

На каком этапе происхдит потеря этого параметра?

   
 
 автор: Artemy   (30.09.2004 в 14:09)
 
   для: cheops   (30.09.2004 в 14:01)
 

Пишет id=42, это значит, то что значение передано, но где-то теряется?
К сожалению, я только не давно прочитал Вашу книгу, и не совсем понимаю некоторые вещи!

   
 
 автор: Igorek   (30.09.2004 в 14:19)   письмо автору
 
   для: Artemy   (30.09.2004 в 14:09)
 

ТЕперь и я непонимаю некоторые вещи. К примеру выходит так:
echo "id=".$id; // выводит значение
$query = "DELETE FROM sklad WHERE id=".$id;
echo $query; // выводит: "DELETE FROM sklad WHERE id="


Весьма странно....

   
 
 автор: Crux   (30.09.2004 в 14:52)   письмо автору
 
   для: Igorek   (30.09.2004 в 14:19)
 

а переменная $id в файле config.php ни где не используется?

   
 
 автор: Artemy   (30.09.2004 в 14:56)
 
   для: Crux   (30.09.2004 в 14:52)
 

Нет...

   
 
 автор: Crux   (30.09.2004 в 15:03)   письмо автору
 
   для: Artemy   (30.09.2004 в 14:56)
 

а в error.log какая запись ошибки?

   
 
 автор: Artemy   (30.09.2004 в 15:33)
 
   для: Crux   (30.09.2004 в 15:03)
 

А где лежит этот error.log ?

   
 
 автор: Crux   (30.09.2004 в 15:45)   письмо автору
 
   для: Artemy   (30.09.2004 в 15:33)
 

тамже где и папка www

   
 
 автор: Artemy   (30.09.2004 в 15:50)
 
   для: Crux   (30.09.2004 в 15:45)
 

Нет у меня такого файла!

   
 
 автор: cheops   (30.09.2004 в 16:02)   письмо автору
 
   для: Artemy   (30.09.2004 в 15:50)
 

На самом деле он должен находится в по пути
С:/www/Apache2/logs/error.log

Но он вам вряд ли в этой ситуации поможет.

   
 
 автор: Crux   (30.09.2004 в 16:02)   письмо автору
 
   для: Artemy   (30.09.2004 в 15:50)
 

нет так нет.

а если вместо переменной в sql запросе сразу подставить число, какая будет реакция?

   
 
 автор: cheops   (30.09.2004 в 16:00)   письмо автору
 
   для: Artemy   (30.09.2004 в 14:09)
 

Хм... это он пишет при первом обращении? А после нажатия на кнопку "Продать" - тоже самое пишет или уже значение потерено?

   
 
 автор: Artemy   (30.09.2004 в 16:14)
 
   для: cheops   (30.09.2004 в 16:00)
 

РЕБЯТА, НЕ ПОВЕРИТЕ!
Что то с кодом сделал, крутил, вертел, теперь работает!
Правда что не знаю, вроде код тот же!
Спасибо Вам всем БОЛЬШОЕ!

   
 
 автор: Igorek   (30.09.2004 в 16:35)   письмо автору
 
   для: Artemy   (30.09.2004 в 16:14)
 

Во дает!!! :))

   
 
 автор: XPraptor   (30.09.2004 в 17:04)   письмо автору
 
   для: Igorek   (30.09.2004 в 16:35)
 

Может у человека в запросе был глюк с передачей параметра.
У меня этот глюк всегда есть и я не знаю как от него избавиться, дело в том что когда я пишу запрос по типу
param1=".$prm_val1." "
то он никогда не возвращает результата, какой бы ни был тип данных у поля, а вот если пишу
param1='".$prm_val1."' "
тоесть в кавычках одиночных, то все ок! Не знаю в чем дело но использую и работает все.

   
 
 автор: Igorek   (30.09.2004 в 17:26)   письмо автору
 
   для: XPraptor   (30.09.2004 в 17:04)
 

Это не глюк с передачей параметра. Значение переменной в sql-запросе всегда должно быть заключено в одинарные кавычки

   
 
 автор: Igorek   (30.09.2004 в 17:29)   письмо автору
 
   для: Igorek   (30.09.2004 в 17:26)
 

Не смотря на то, что у него этих кавычек не было, судя по его словам проблема было в другом.

   
 
 автор: cheops   (30.09.2004 в 17:32)   письмо автору
 
   для: Igorek   (30.09.2004 в 17:26)
 

>Значение переменной в
>sql-запросе всегда должно быть заключено в одинарные кавычки
Если оно текстовое. Для числовых типов наличие кавычек не обязательно, так как при заключении их в кавычки всё-равно происходит преобразование их типа из строкового в числовой. Многие даже рекоммендуют избегать помещать в кавычки числовые типы, для увеличения производительности... /*Хотя я лично сомневаюсь, что это приведёт к заментому её увеличению :)*/

   
 
 автор: Igorek   (30.09.2004 в 13:40)   письмо автору
 
   для: Artemy   (30.09.2004 в 13:00)
 

>В итоге спрашивает пароль, вводишь а он пишит "Ошибка при обращении к складу" !

Это может быть лишь в том случае, когда не выполнился SQL-запрос, следовательно, смотри значение переменной id. Если оно пустое - ищи где оно потерялось.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования