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

HTML+CSS+JavaScript

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

 

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

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

тема: Как сделать, чтобы клиент не смог бы редактировать поле text?
 
 автор: jurij_83   (23.10.2006 в 15:52)   письмо автору
 
 

Имеется вот такой скрипт (отправка заполненных клиентом данных на электронную почту):


<?php

  
require_once ("config.php");

    
$sql "SELECT * FROM tablica 
        WHERE id = \"
$id\"
        "
;

    
$result = @mysql_query($sql,$connection) or die("Error");

    while (
$row mysql_fetch_array($result)) {
      
$discount $row['discount'];
    }

mysql_close($connection);
?>

<html>
<head>
<title>Информация</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<body>

<?php

$form_block 
"

<form method=\"post\" action=\"
$PHP_SELF\">

<table cellspacing=\"3\" cellpadding=\"5\" class=\"textsimplas\" border=\"0\" align=\"center\">
  <tr>
    <td valign=\"top\" colspan=\"2\">  
      <p><strong>* Ваши имя и фамилия: </strong><br>
      <input type=\"text\" name=\"sender_name\" value=\"
$sender_name\" size=35 style=\"border: 1 solid #000000\"></p>

      <p><strong>* Адрес Вашей электронной почты: </strong><br>
      <input type=\"text\" name=\"sender_email\" value=\"
$sender_email\" size=35 style=\"border: 1 solid #000000\"></p>

      <p><strong>Номер Вашего телефона: </strong><br>
      <input type=\"text\" name=\"sender_tel\" value=\"
$sender_tel\" size=35 style=\"border: 1 solid #000000\"></p>

      <p><strong>* Ваш вопрос: </strong><br>
      <textarea name=\"message\" cols=27 rows=8 wrap=virtual style=\"border: 1 solid #000000\">
$message</textarea></p>

      <p><strong>Скидка: </strong><br />
      <input type='text' name='discount' value='
$discount' size=3>%</p>

      <input type=\"hidden\" name=\"op\" value=\"ds\">
    </td> 
  </tr>
  <tr>
    <td align=\"center\" colspan=\"2\"> 
      <p><strong>* Отмеченные поля для заполнения обязательны! </strong></p>
    </td> 
  </tr>
  <tr>
    <td align=\"center\" colspan=\"2\">    
      <p>
       <input type=\"submit\" name=\"submit\" value=\"Отправить\" class=\"textsimplas\">
       <input type=\"reset\" value=\"Очистить\" class=\"textsimplas\">
      </p>
    </td> 
  </tr>
</table>
</form>

"
;

if (
$op != "ds") {
        
// это нужно чтобы увидеть форму
        
echo "$form_block";
} else if (
$op == "ds") {
    if (
$sender_name == "") {
        
$name_err "<p class=\"textsimplas\" align=\"center\"><font color=red>Пожалуйста, введите Ваше имя и фамилию! </font></p>";
        
$send "no";
    } 
    if (
$sender_email == "") {
        
$email_err "<p class=\"textsimplas\" align=\"center\"><font color=red>Пожалуйста, введите адрес Вашей электронной почты! </font></p>";
        
$send "no";
    }
    if (
$message == "") {
        
$message_err "<p class=\"textsimplas\" align=\"center\"><font color=red>Пожалуйста, введите Ваш вопрос! </font></p>";
        
$send "no";
    }
    if (
$send != "no") {
    
        
// ниже следуют действия, которые нужно выполнить если условие истинно!
         
$msg "Запрос информации\n";
        
$msg .= "Имя и фамилия отправителя:\t\t$sender_name\n";
        
$msg .= "E-Mail адрес отправителя:\t$sender_email\n";
        
$msg .= "Телефон отправителя:\t$sender_tel\n";
        
$msg .= "Вопрос отправителя:\t$message\n\n";
        
$msg .= "Скидка:\t$discount%\n";

        
$to "";
        
$subject "Nazvanie";
        
$mailheaders "From: Klient <> \n";
        
$mailheaders .= "Reply-To: $sender_email\n\n";
        @
mail($to$subject$msg$mailheaders);
        echo 
"<p class=\"textsimplas\">Здравствуйте, $sender_name. </p>";        
        echo 
"<p class=\"textsimplas\">Ваше сообщение было отправлено! </p>";
    }
        else if (
$send == "no") {
        echo 
"$name_err";
        echo 
"$email_err";
        echo 
"$message_err";
        echo 
"$form_block";  
    }
}
?>

</body>
</html>


Как сделать так, чтобы клиент не смог бы в поле Скидка
<p><strong>Скидка: </strong><br />
<input type='text' name='discount' value='$discount' size=3>%</p>
ничего менять.
Поясню: если из базы данных пришло число 10 (напечаталось в этом поле), то 10 бы и осталось (нельзя, чтобы клиент редактировал бы это поле). Как это сделать (заблокировать)?

   
 
 автор: elenaki   (23.10.2006 в 16:05)   письмо автору
 
   для: jurij_83   (23.10.2006 в 15:52)
 

1. <input type='text' name='discount' value='$discount' size=3 disabled>
2. убрать нафиг инпут, поставить число
3. в форме это поле не передавать (а на самом деле клиент может подправить форму)

   
 
 автор: jurij_83   (23.10.2006 в 23:58)   письмо автору
 
   для: elenaki   (23.10.2006 в 16:05)
 

1. Если сделать так:
<input type='text' name='discount' value='$discount' size=3 disabled>
то плохо видно то, что введено.

2. убрать нафиг инпут, поставить число.
Это невозможно, потому что число берётся из базы данных.

3. в форме это поле не передавать.
Если я это поле просто вывожу как обычный текст, то тогда поле 'discount' не отправляется по почте (оно приходит пустым).

Так что проблема не решена...

Как сделать так, чтобы клиент не смог бы в поле Скидка

<p><strong>Скидка: </strong><br />
<input type='text' name='discount' value='$discount' size=3>%</p>
ничего менять.

Может кто подскажет или напишет какой-нибудь код (может блокировка на JavaScripte)...

   
 
 автор: Lelik   (24.10.2006 в 03:05)   письмо автору
 
   для: jurij_83   (23.10.2006 в 23:58)
 

в общем, логичней будет вместо поля типа input выводить в поле типа div, span или в таблицу

<input type='text' name='discount' value='$discount' size=3 onKeyPress="event.returnValue=false;">


вроде так...

   
 
 автор: elenaki   (24.10.2006 в 10:19)   письмо автору
 
   для: jurij_83   (23.10.2006 в 23:58)
 

Если я это поле просто вывожу как обычный текст, то тогда поле 'discount' не отправляется по почте (оно приходит пустым).
====================================

а если оно НЕ меняется, зачем его вообще посылать? просто покажите его в виде текста (я именно имела ввиду) юзеру, тогда он ничего поменять и не сможет.

   
 
 автор: coloboc66   (24.10.2006 в 11:24)   письмо автору
 
   для: elenaki   (24.10.2006 в 10:19)
 

А что: разве нельзя просто вот так написать:

<input type=text READONLY />

Да и все...

   
 
 автор: jurij_83   (24.10.2006 в 11:47)   письмо автору
 
   для: coloboc66   (24.10.2006 в 11:24)
 

Спасибо. Теперь что и надо!

Работает и это:
<input type='text' name='discount' value='$discount' size=3 onKeyPress="event.returnValue=false;">

Работает также и это:
<input type=text READONLY />

А что лучше использовать?

   
 
 автор: coloboc66   (24.10.2006 в 12:02)   письмо автору
 
   для: jurij_83   (24.10.2006 в 11:47)
 

В первом случае может возникнуть проблема с кроссбраузерностью. Но не буду утверждать...

   
 
 автор: enero   (24.10.2006 в 16:32)   письмо автору
 
   для: coloboc66   (24.10.2006 в 12:02)
 

используйте свойство readonly (он везде пашет)

ЗЫ: только когда видишь, что что-то есть в поле, а это нельзя редактировать, так и хочется залезть в код и подправить значение поля
так что подумайте, а стоит ли его показывать вообще

   
 
 автор: coloboc66   (24.10.2006 в 17:07)   письмо автору
 
   для: enero   (24.10.2006 в 16:32)
 

Ну если так рассуждать, то клиент может точно таким же образом подредактировать у себя на странице в броузере все, что угодно, не только input type=text.

   
 
 автор: jurij_83   (24.10.2006 в 21:09)   письмо автору
 
   для: coloboc66   (24.10.2006 в 17:07)
 

Согласен.

   
Rambler's Top100
вверх

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