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

Форум PHP

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

 

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

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

тема: Между разрывам PHP кода данные игнорируются броузером
 
 автор: Default   (03.03.2012 в 15:48)   письмо автору
 
 

Здравствуйте, я не давно учу php, и столкнулся с такой проблемой, вод код регистрации нового пользователя, он работает, все хорошо... но если он будет в том виде в котором сейчас, то все что между разрывом PHP кода игнорируется браузером... то есть

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    ".................../TR/xhtml1/DTD/xhtml1-strict.dtd">
<HTML xmlns="...............1999/xhtml">

<HEAD>
  <LINK rel="stylesheet" type="text/css" href="mystyle.css" />
  <TITLE>Регистрация</TITLE>
</HEAD>

<BODY>
<DIV id="head">Общение на .............</DIV>
<div id='reg' ><b>Регистрация</b></div>

вот этот участок кода броузер не видит( и не подгружает CSS... помогите пожалуйста реализовать это... мучась второй день над этим, мне необходимо, что бы было именно так... чтобы в случаи некорректного заполнения Формы, выдовалось об этом сообщение именно в том месте где сейчас стоит. Прошу прощение за громоскость кода.

<?php include 'blocks/db.php';
function 
clearText($test){
    return 
mysql_escape_string(htmlspecialchars(trim($test)));
}
if(
$_SERVER['REQUEST_METHOD'] == 'POST'){
    
$login clearText($_POST['login']);
    
$pass clearText($_POST['pass']);
    
$clear_pass clearText($_POST['clear_pass']);
    
$name clearText($_POST['name']);
    
$surname clearText($_POST['surname']);
    
$pol $_POST['pol'];
    
$check $_POST['check'];
    
$date_reg date('d.m.Y  H:i');
    if(!empty(
$login)&&!empty($pass)&&isset($check)&&$pass==$clear_pass){
        
$query mysql_query("SELECT COUNT(*) FROM users WHERE login='$login'");
        if(!
$query) exit(mysql_error().' ошибка, попробуйте позже!');
        
$res mysql_result($query0);
        if(
$res == 0){
            
$query mysql_query("INSERT INTO users (login, password, date_reg, 
                                                            name, surname, pol) 
                               VALUES ('
$login', '$pass', '$date_reg', '$name', 
                                                          '
$surname', '$pol')");
            if(
$query){
                
setcookie('login',$login);
            
setcookie('pass'$pass);
        
$login $_COOKIE['login'] = $login;
        
$pass $_COOKIE['pass'] = $pass;
        
header('Location: testcookie.php');
        exit();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "..............................TR/xhtml1/DTD/xhtml1-strict.dtd">
<HTML xmlns="................./1999/xhtml">

<HEAD>
  <LINK rel="stylesheet" type="text/css" href="mystyle.css" />
  <TITLE>Регистрация</TITLE>
</HEAD>

<BODY>
<DIV id="head">Общение на .......................</DIV>
<div id='reg' ><b>Регистрация</b></div>

<?php // продолжения кода
            
}elseif(!$query){
                echo 
'Ошибка при добавлении данный. Попробуйте позднее.';
            }

        }elseif(
$res 0){
            echo 
"<div id='error'>Логин занят, пожалуйста, выберите другой.</div>";
        }
    }elseif(empty(
$login)&&empty($pass)){
        echo 
"<div id='error'>Вы не заполнили обязательные поля!</div>";
    }elseif(empty(
$login)){
        echo 
"<div id='error'>Укажите логин!</div>";
    }elseif(empty(
$pass)){
        echo 
"<div id='error'>Укажите пароль!</div>";
    }elseif(
$pass!=$clear_pass){
        echo 
"<div id='error'>Пароли не совпадают!</div>";
    }elseif(!isset(
$check)){
        echo 
"<div id='error'>Необходимо согласиться с правилами!</div>";
    }
}
?>
<center>Обязательные поля</center>
   <hr align="center" color="#3366FF" noshade="noshade"/>
<p>
  <FORM action = '<?=$_SERVER['PHP_SELF'];?>' method = 'POST'>
   <font color='red'>*</font>Введите логин:<br>
   <INPUT type = 'text' name = 'login' value = "<?=$_COOKIE['login'];?>"><br>
   <font color='red'>*</font>Введите пароль:<br>
   <INPUT type = 'password' name = 'pass' value = "<?=$_COOKIE['pass'];?>"><br>
   <font color='red'>*</font>Подтвердите пароль:<br>
   <INPUT type = 'password' name = 'clear_pass'><br>
</p>
<center>Личные данные</center>
   <hr align="center" color="#3366FF" noshade="noshade"/>
<p> 
    Ваше имя:<br>
    <INPUT type = 'text' name = 'name'><br>
    Ваша фамилия:<br>
    <INPUT type = 'text' name = 'surname'><br>
    Ваш пол:<br>
    <SELECT name = 'pol'>
    <option value="------" selected="selected">------</option>
    <option value="Мужской">Мужской</option>
    <option value="Женский">Женский</option>
    </SELECT><br>
    <INPUT type = 'checkbox' name = 'check'> Соглашение с пользовательскими <a href='#'>правилами</a>.<br>
    <INPUT type = 'submit' value = 'Зарегистрироваться' class="button">
  </FORM>
</p>

<a href='#'>Назад</a><br>
<DIV id='footer'><a href='index.php'>На главную</a></div>
</BODY>

</HTML>

  Ответить  
 
 автор: Киналь   (03.03.2012 в 15:53)   письмо автору
 
   для: Default   (03.03.2012 в 15:48)
 

А зачем вам exit()?

  Ответить  
 
 автор: Default   (03.03.2012 в 15:59)   письмо автору
 
   для: Киналь   (03.03.2012 в 15:53)
 

header('Location: testcookie.php');
exit(); Вы про это место?

  Ответить  
 
 автор: Киналь   (03.03.2012 в 16:18)   письмо автору
 
   для: Default   (03.03.2012 в 15:59)
 

Да, про это. Только неудачно выразился. У вас написано:


if($query){ 
.....                
        exit(); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
.....


Не хватает закрывающей фигурной скобки после exit(). Потому что exit() останавливает работу скрипта и, естественно, после него ничего не выводится.

  Ответить  
 
 автор: Default   (03.03.2012 в 16:58)   письмо автору
 
   для: Киналь   (03.03.2012 в 16:18)
 


<?php
if($query){  
.....                 
        exit(); 
}    
// тут добавил    
?>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<?php
   
..............
 }elseif(!isset(
$check)){ 
        echo 
"<div id='error'>Необходимо согласиться с правилами!</div>"
    }
// } но вот эту пришлось убрать, выдовало ошибку...     
?>

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

  Ответить  
 
 автор: Киналь   (03.03.2012 в 17:14)   письмо автору
 
   для: Default   (03.03.2012 в 16:58)
 

Скобка — это не волшебное заклинание, это выражение логики работы скрипта) Вы это всё сами писали или копировали откуда-то? И понимаете ли вы, как это всё должно работать? Именно на словах, наподобие «если пользователь... , то тогда ... , а иначе ..., потом ...»?

  Ответить  
 
 автор: Default   (03.03.2012 в 17:22)   письмо автору
 
   для: Киналь   (03.03.2012 в 17:14)
 

да, код мой и я понимаю как оно должно все работать, и оно работает все замечательно, но вот только это...

  Ответить  
 
 автор: Valick   (03.03.2012 в 17:30)   письмо автору
 
   для: Default   (03.03.2012 в 17:22)
 

и я понимаю как оно должно все работать
судя по этой строке не понимаете
mysql_escape_string(htmlspecialchars(trim($test)));

mysql_escape_string - предназначена для обработки текста перед занесением в базу данных, и не только из-за SQL-инъекций.
htmlspecialchars - предназначена для обработки данных перед выводом в браузер.
___
и это только третья строка кода, дальше ещё не успел посмотреть

  Ответить  
 
 автор: Default   (03.03.2012 в 17:33)   письмо автору
 
   для: Valick   (03.03.2012 в 17:30)
 


<?php
            
if($query){ 
                
setcookie('login',$login); 
                
setcookie('pass'$pass); 
                
$login $_COOKIE['login'] = $login
                
$pass $_COOKIE['pass'] = $pass
                
header('Location: testcookie.php'); 
                exit();
            }elseif(!
$query){ 
                exit( 
'Ошибка при добавлении данный. Попробуйте позднее.'); 
            } 
        }   
////////////
    
}       // закрыл полностью тут все
}             ///////////
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "..............................TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<?php
.............
// открыл новый код .... 
     
if($res 0){ 
            echo 
"<div id='error'>Логин занят, пожалуйста, выберите другой.</div>";  
    }
    if(empty(
$login)&&empty($pass)){ 
        echo 
"<div id='error'>Вы не заполнили обязательные поля!</div>"
    }elseif(empty(
$login)){ 
        echo 
"<div id='error'>Укажите логин!</div>"
    }elseif(empty(
$pass)){ 
        echo 
"<div id='error'>Укажите пароль!</div>"
    }elseif(
$pass!=$clear_pass){ 
        echo 
"<div id='error'>Пароли не совпадают!</div>"
    }elseif(!isset(
$check)){ 
        echo 
"<div id='error'>Необходимо согласиться с правилами!</div>"
    }    

?>

Проблема решена, все что между PHP кодом выводиться, CSS в том числе... проблема единственном что при запросе этой страницы сразу идет проверка на empty($login)&&empty($pass), так что при загрузки этой страницы сразу выводиться
echo "<div id='error'>Вы не заполнили обязательные поля!</div>";
СПАСИБО

  Ответить  
 
 автор: Valick   (03.03.2012 в 17:40)   письмо автору
 
   для: Default   (03.03.2012 в 17:33)
 

можете объяснить вот эти строки?
        $login = $_COOKIE['login'] = $login;
        $pass = $_COOKIE['pass'] = $pass; 

  Ответить  
 
 автор: Default   (03.03.2012 в 17:42)   письмо автору
 
   для: Valick   (03.03.2012 в 17:40)
 

это критика? ) я передаю значения куки в массив и уже на другой странице проверяю их

  Ответить  
 
 автор: Valick   (03.03.2012 в 17:50)   письмо автору
 
   для: Default   (03.03.2012 в 17:42)
 

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

  Ответить  
 
 автор: Default   (03.03.2012 в 18:13)   письмо автору
 
   для: Valick   (03.03.2012 в 17:50)
 

да, конечно есть... PHP5 для чайников Джанет Валейд... + манул. Я не учу сразу 5-ть книг, так как считаю, что у каждого автора своя точка зрения, и если новичек будет учить нескольких авторов, то просто запутается, так что мне пока одной книги хватает. что касается кода, да, я его сразу проверяю. основное, что должно работать при правельных действиях у меня сверху, а что -то другое идет уже под ним...

  Ответить  
 
 автор: Default   (03.03.2012 в 17:40)   письмо автору
 
   для: Valick   (03.03.2012 в 17:30)
 


mysql_escape_string(htmlspecialchars(trim($test)));

может я что-то и не до понимаю, молодой еще в этом, но эти ф-ции обрабатывают только то, что ввел пользователь и не как не может влиять на работу всего скрипта и в том числе на вывод данных в броузер всего, что не касается данными введенные пользователем

  Ответить  
 
 автор: Киналь   (03.03.2012 в 17:47)   письмо автору
 
   для: Default   (03.03.2012 в 15:48)
 

Так, ну поехали. Для начала мы от вашего кода оставим только логику и отформатируем его почётче, . Как-то так:

<?php include 'blocks/db.php'
function 
clearText($test){ return mysql_escape_string(htmlspecialchars(trim($test)));} 

if(
$_SERVER['REQUEST_METHOD'] == 'POST')  // если что-то пришло POST'ом
{
// заполняем переменные пользователя
    
if(!empty($login)&&!empty($pass)&&isset($check)&&$pass==$clear_pass)  // если всё хорошо
      

        
//Ищем пользователя в базе
        
if($res == 0// пользователя нет в базе
            

              
// Заносим его в базу
            
if($query// если занесли успешно
               

                
// ставим куки с логином и паролем
                // переопределяем переменные $login и $pass, беря значения из только что поставленных кук
                // Смысл этого мне неясен, но пока оставим
                // перенаправляем на testcookie.php и завершаем работу скрипта 
?> 
<!--HTML-код, который не выполнится никогда, так как стоит после команды exit()-->

<?php // продолжения кода 
                  
}
                elseif(!
$query)  // что-то не так
                  

                    echo 
'Ошибка при добавлении данный. Попробуйте позднее.'
                    
// однако работа скрипта продолжается, нет ни exit(), ни чего-то аналогичного
                  

                
// нет соответствующего else; возможно, нужно чуть выше писать не elseif, а else

             
}
           elseif(
$res 0// пользователь есть в базе
             

                 echo 
"<div id='error'>Логин занят, пожалуйста, выберите другой.</div>"
              } 
            
// опять не вижу else

    
}
   elseif(
/*одно из условий не выполнено*/)
    { 
      
// уведомляем об этом пользователя. Опять нет else.
    


?> 
<!--всякий разный HTML-->


Посмотрите на код теперь. Это соответствует той логике, которую вы хотели получить?

  Ответить  
 
 автор: Киналь   (03.03.2012 в 17:48)   письмо автору
 
   для: Киналь   (03.03.2012 в 17:47)
 

Долго писал, уже всё решили=)

  Ответить  
 
 автор: Default   (03.03.2012 в 17:55)   письмо автору
 
   для: Киналь   (03.03.2012 в 17:48)
 

Спасибо конечно, но я не заметил разницы)))

  Ответить  
 
 автор: Valick   (03.03.2012 в 17:59)   письмо автору
 
   для: Default   (03.03.2012 в 17:55)
 

приду домой, попробую поправить ваш код

  Ответить  
 
 автор: Default   (03.03.2012 в 18:05)   письмо автору
 
   для: Valick   (03.03.2012 в 17:59)
 

то что он грубо написан я и сам понимаю, я же говорю, что я только учусь) и просто не вижу смыла втыкать везде else, если мне вполне хватает elseif ()... этот код будет еще раз 10 переделываться, будет добавлено в ф-ию обработки данных введеных пользователем регулярные выражения, и хочу поставить еще защиту от роботов, но вот с последним у меня даже представления нет как работать... но это дело времени... мануал мне в помощь и форум наподобие этого) вопрос стоял в том, чтобы сделать вывод CSS, получилось... теперь думать буду как убрать при запросе этой страницы сразу вывод оповещения о не заполненых полях ) А на Ваш код с удовольствием посмотрю )

  Ответить  
 
 автор: Valick   (04.03.2012 в 01:20)   письмо автору
 
   для: Default   (03.03.2012 в 18:05)
 

ответил в теме http://softtime.ru/forum/read.php?id_forum=1&id_theme=85497

  Ответить  
Rambler's Top100
вверх

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