Здравствуйте.У меня возникла одна проблема,не приходит на мозг как её решить.Имеется структура кода,примерно такая: <? //Открытие 1 php скобки <??> //2 <??> //3 ?> //Закрытие 1 php скобки Как я понял из результата то, все что расположено в 2 и 3 читается как обычный HTML,так как он "шалееет" от этих скобок и не понимает что к какой отнести.Суть вопроса в том,можно ли как-то указать особенно php скобку,чтобы он ее как-то отличал от обычной?
Ошибки он не пишет.А даже выводит все на экран как надо,только то что написано в php скобках выводит как обычным текстом
Выдаст 1234567.Вот полный пример моего кривого кода: <html> <body> <? session_start(); if (isset($_SESSION['user'])) { $auth = "Привет ".$_SESSION['user']."!<br />\n"; $auth .= "<a href='logout.php'>Выйти !<br />\n</a>"; $docum = ' <html> <link rel="stylesheet" type="text/css" href="CSS/style.css"> <title>База данных портала Drag.su</title> <body bgcolor=#fecd1a> <? $link=mysql_connect("mysqlserver","","") or die ("Could not connect"); mysql_select_db("z174030_inventar",$link) or die ("Could not select database"); $sql="select * from `user` ORDER BY BINARY FIO "; $res=mysql_query($sql) or die("could not query"); $num=mysql_num_rows($res); ?> <table align=left border="1" width=40%> <tr bgcolor=#FF6633> <td>База</td> <td>Телефон</td> <td>ФИО</td> </tr> <? if ($num>0) { while ($row=mysql_fetch_array($res)) { echo(<tr> <td>$row[1]</td> <td>$row[2]</td> <td><a href=user.php?id=$row[ID_User]>$row[FIO] </a></td> </tr> ); } } ?> </table> <table align="left" border="0"> <tr> <form name="form" method="post" action="forma.php"> <td><input type="submit" name="Submit" value="Добавление пользователя"> </td> </form> </tr> <tr> <form name="form" method="post" action="formaD.php"> <td><input type="submit" name="Delete" value="Удаление пользователя"> </td> </form> </tr> <tr> <form name="form" method="post" action="formaR.php"> <td><input type="submit" name="Edit" value="Редактирование пользователя"> </td> </form> </tr> <tr><td><a href="index.php">Вернуться на главную страницу</a> </td></tr> </table> </body> </html>'; }else { $auth = <<< AUTH AUTH; } ?> <?echo $auth; ?> <?echo $docum; ?> Суть этой ереси в том что это будут закрытые данные,и если пользователь не залогинен,то он ничего не увидит,таблица попросту пропадет.А тут массивы не работают,и выдаются текстом
У меня из базы выводятся данные с помощью php.А засунул чтобы незарегистрированные пользователи видели пустую страницу,вместо данных Добавлено спустя 1 минуту 29 секунд: Я просто только начинаю учить php.Если вы подскажите способ чтобы данные выводились зарегистрированным пользователям,а другим информация закрыта я буду рад попробовать ваши предложения
зря если нужно чтоб незарегенные посетители видели пустую страницу - сделай просто проверку в самом начале. хранить код в базе - это зло http://www.php.ru/manual/function.eval.html в помощь но это зло
Та Можно поробывать,спс) А код я храню в виде хеша.Почитал вроде люди так делают,я же не профи и учусь на ошибках Добавлено спустя 2 минуты 39 секунд: А почему зло?Как надо вообще правильно делают?
зло с точки зрения безопасности. логически проверить насколько безопасен код, который ты берёшь из строки, практически невозможно.
Хочу вернуться к сути проблемы,просто не могу понять как скрыть данные. Но к примеру данные из таблицы он показывает что зареганным,что нет.Просто реально не врубаюсь почему.Проверки проходят,только как привязать это к коду не впихивая это в переменную $docum не пойму.Вот пример кода:Помоги решить эту проблемку. <? session_start(); if (isset($_SESSION['user'])) { $auth = "Привет ".$_SESSION['user']."!<br />\n"; $auth .= "<a href='logout.php'>Выйти</a>"; $docum = "Эта информация только для зарегистрированных"; }else { $auth = <<< AUTH AUTH; $docum = "Эта общая информация"; } ?> <html> <link rel="stylesheet" type="text/css" href="CSS/style.css"> <title>База данных портала Drag.su</title> <body bgcolor=#fecd1a> <? $link=mysql_connect("","","") or die ("Could not connect"); mysql_select_db("z174030_inventar",$link) or die ("Could not select database"); $sql="select * from `user` ORDER BY BINARY FIO "; $res=mysql_query($sql) or die("could not query"); $num=mysql_num_rows($res); ?> <table align=left border="1" width=40%> <tr bgcolor=#FF6633> <td>База</td> <td>Телефон</td> <td>ФИО</td> </tr> <? if ($num>0) { while ($row=mysql_fetch_array($res)) { echo("<tr> <td>$row[1]</td> <td>$row[2]</td> <td><a href=user.php?id=$row[ID_User]>$row[FIO] </a></td> </tr>" ); } } ?> <? echo $auth; ?> <hr /> <? echo $docum; ?> </body> </html>
Проще всего разбить на 2 файла - в одном код для авторизированных юзеров, в другом - форма авторизации, или что еще тебе там надо. И в зависимости от значения isset($_SESSION['user']) инклюдить первый иди второй файл.
Код нечитабелен , представим что таким образом написано в 5 раз больше строк кода и начнём путаться , новичек темболее. Для меня идеальной была бы реализация основанная на шаблонах , но автору и покатит простое всовывание хтмл в переменную (непомню как это называется) <?php $myvar = <<<HTML <html code> HTML; ?> Соотв можно использовать переменные полученные в пхп в данном коде <?php $myvar0="text"; $myvar = <<<HTML <html code> $myvar0 HTML; ?> Благодаря этому не прийдётся разрывать код , не будет каши и работа определённо ускорится , да и читать это попросту легче и даже можно всовывать весь код в переменную и выводить в конце обработки