никак. Тут очень много всяких "НО" и все зависит от конкретного случая. Если кода немного, то все может быть в одном файле. Если код требуется в других файлах, то его можно вынести в отдельный файл. Если кода много, то для улучшения читаемости, тоже можно разделить на блоки и хранить их в отдельных файлах.
1. я думаю что да, будет использоваться 2. думаю со временем код будет расти по этому лучший вариант разбить на файлы, я так и сделала- уменя есть header.php и footer.php кода я подключаю header.php скрипт работает нормально(регистрирует-выход пользователя), но при нажатии на выход выдает Warning: Cannot modify header information - headers already sent by (output started at /home/content/14/5052914/html/defender/regist/headr.php:8) in //эта ошибка в header.php HTML: <head profile="http://gmpg.org/xfn/11"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Доступ</title> <link rel="shortcut icon" href="http://мойсайт/defender/img/favicon.ico" /> 8:<link rel="stylesheet" href="http://мойсайт/defender/css/style.css" type="text/css" media="screen" /> </head // это часть хедера где в 8 строке выдало ошибочку /home/content/14/5052914/html/defender/regist/index.php on line 124 а эта в index.php <--- тут весь код регистрации PHP: <? 124: header("Location:".($_SERVER['HTTP_REFERER']?$_SERVER['HTTP_REFERER']:$_SERVER['PHP_SELF'])); ?> без инклуда работает хорошо, то бишь без дизайна, только подключаю дизай, выдает эти ошибки, и я так поняла, что я куда то ни туда его пытаюсь прилепить ))\ помогите, куде же его прилепить
Поиск по форуму по этой ошибке. Встречалась уже не раз. ДО вызова header() не должно быть никакого вывода и html решений этого вопроса тоже есть не одно.
да, вот задача, если я подключаю хедер после header() PHP: <? header("Location:".($_SERVER['HTTP_REFERER']?$_SERVER['HTTP_REFERER']:$_SERVER['PHP_SELF'])); break; case"register": $login=$_POST['login']; $pass1=$_POST['pass1']; $pass2=$_POST['pass2']; if (isset($login) && isset($pass1) && isset($pass2)) { if (!empty($login) && !empty($pass1) && !empty($pass2)) { $login=mysql_real_escape_string(htmlspecialchars($login)); $sql=mysql_query("SELECT * FROM {$GLOBALS['cnf']['db_pref']}_auth WHERE LOWER(login)='".strtolower($login)."'"); if (!mysql_num_rows($sql)) { if (strlen($pass1)>=4) { //$pass1=md5($pass1); //$pass2=md5($pass2); if ($pass1==$pass2) { if(mysql_query("INSERT INTO {$GLOBALS['cnf']['db_pref']}_auth VALUES(NULL,'$login','$pass1')")) { $error="Вы успешно зарегистрированны"; header("Refresh:3;url=".$_SERVER['PHP_SELF']); include ('headr.php');// вот тут? ?> то дизайн пропадает совсем кудаже его подключить? Может плюнуть на все и в писать в index.php вместе с кодом?
Поиск отключили? PHP: <?php // это 1я строка в файле!!! ob_start(); include 'header.php'; include 'content.php'; include 'footer.php'; ob_end_flush();
я обязательно посмотрю PHP: <?php // это 1я строка в файле!!! ob_start(); include 'header.php'; include 'content.php'; include 'footer.php'; ob_end_flush(); спасибо за решение, очень признательна, а то везде посылают в ... поиск, ни кто общятся не хочет вечером попробую
Вы собственно определитесь. Вы хотите пообщаться, или решить проблему с кодом. Это две разные вещи. Наилучшие результаты получаются когда вы, да и окружающие, точно знают что вы хотите получить в результате.
согласна ________________________ я делаю сайт наподобии "индивидуального гороскопа" то есть каждому зарегистрированому пользователю будет составлятся индивидуальный гороскоп ссылку вечером в "ЛС" скину, я моглабы и тут дать но, я нехочу что бы надомной смеялись и немного стесняюсь, я ведь не PRO-фи И спасибо за помощь
Наверное стоило дать удочку, а не рыбу. В том плане, что как правильно строить архитектуру приложения. Сами же учим ставить костыли, на которые потом ворчим.
не знаю что я делала не так, но по этой конструкции чета не сработало но вот эта конструкция подошла сразу PHP: <?php session_start(); $output=''; $output.="Твой html<br>"; // какой-то любой другой пхп код $output.="Ещё текст который пойдёт на вывод до авторизации<br>"; // моя авторизация, замени в ней все print'ы на $output.= $output.="А этот текст идёт на вывод но уже после авторизации<br>"; print $output; ?> жаль конечно, хотелось бы использовать конструкцию Simpliest но опыта еще маловато, так что "удочка и рыбка" относительные понятия. Для меня это скорее "крючок" нежели удочка
Катюша Еще лучше книжки почитать. А еще лучше мануал ВЕСЬ! Это не долго, за неделю можно осилить, но можно же и подольше, чтобы юзать сразу то что читаешь. Это не тупой совет. Поверь, если ты будешь знать возможности ты их будешь применять и ориентироваться, а так из воздуха делать пластилин - нихера толком и не получится, хотя может но это не будет похоже на пластилин.
да, спасибо, я так и делаю. Когда есть время читаю статьи по php. Я знаю что без теории ничего не получится.
Добавил дополнительные строки при регистрации пользователей, вношу в БД. А как собственно вывести эти доолнительные данные при авторизации опрделенного пользователя?
Так? PHP: $_SESSION['user']['group']='user'; $_SESSION['user']['login']=$row['login']; $_SESSION['user']['statuser']=$row['statuser']; где statuser новое поле в БД а вывод HTML: <td>Вы вошли как</td><td>{$_SESSION['user']['login']} - {$_SESSION['user']['statuser']} <a href='?do=out'>Выйти</a></td> Чего то не работает
значит в $row['statuser'] ничего нету. Поставь error_reporting(E_ALL) перед тем как пишешь в базу данных
открыл ручками базу данных через phpmyadmin - запись есть, проверил, все добавляется... только не выводит. То что я выше описал, достаточно для вывода значения дополнительной ячейки из БД ?
Ну да, вроде разобрался... Небезопасно как то, если в адресную строку добавить ?do=register Кстати, какова вероятность проникновения...
Нашел выход из положения, кому надо если вдруг + добавил фишечку (если пытаются взломать, атакующему выводится предупреждение, а владельцу отсылается IP атакующего и время/дата атаки) PHP: case"reister": $login=$_POST['login']; $pass1=$_POST['pass1']; $pass2=$_POST['pass2']; if (isset($login) && isset($pass1) && isset($pass2)) { if (!empty($login) && !empty($pass1) && !empty($pass2)) { $login=mysql_real_escape_string(htmlspecialchars($login)); $sql=mysql_query("SELECT * FROM {$GLOBALS['cnf']['db_pref']}_auth WHERE LOWER(login)='".strtolower($login)."'"); if (!mysql_num_rows($sql)) { if (strlen($pass1)>=4) { $pass1=md5($pass1); $pass2=md5($pass2); if ($pass1==$pass2) { if(mysql_query("INSERT INTO {$GLOBALS['cnf']['db_pref']}_auth VALUES(NULL,'$login','$pass1')")) { $error="Вы успешно зарегистрированны"; header("Refresh:3;url=".$_SERVER['PHP_SELF']); }else{ $error="Системная ошибка, не могу занести информацию в БД"; } }else { $error="Ошибка: Пароли не совпадают"; } }else { $error="Ошибка: Минимальная длина пароля 4 символа"; } } else { $error="Ошибка: Такой пользователь уже существует"; } }else { $error="Ошибка: Обязательные поля нужно заполнить"; } } print " ".($error?"<div align=center width=60% style='border:1px solid red'>$error</div><br>":"")." "; if ($_SESSION['user']['login'] == admin) { print "<div id='descr'><form method=POST> <table width=30% align=center border=0> <tr> <td class='log'>Логин</td><td><input type='text' name='login' class='log_inp'></td> <tr> <td class='log'>Пароль</td><td><input type='password' name='pass1' class='log_inp'></td> <tr> <td class='log'>Подтверждение пароля</td><td><input type='password' name='pass2' class='log_inp'></td> </tr> <tr> <td colspan=2 align=center><input type=submit value='Добавить' class='but'></td> </table> </form></div> "; } else { echo "<div align=center width=60% style='border:1px solid red'><h1>Даже не думай взламывать =) Твой IP ".$_SERVER['REMOTE_ADDR']." записан</h1></div>"; // Пишем файл если кто то захочет завладеть паролем $path = "data.txt"; // файл статистики $cpath = "count.txt"; // счётчик $email = "log@mail.ru"; // Ваш e-mail адрес $ip = $_SERVER['REMOTE_ADDR']; // IP-адрес $ua = $_SERVER['HTTP_USER_AGENT']; // броузер $time = date("H:i d m Y"); // текущее время $flag = date("z"); // порядковый номер дня в году if (!is_file($cpath)) { $fn = fopen($cpath, "w"); fputs($fn, "0^0^".$flag); fclose($fn); } /* при первом запуске скрипт создаст файл счётчика */ if (!is_file($path)) { $fn = fopen($path, "w"); fputs($fn, $ip."^".$ua."^".$time."\r\n"); fclose($fn); } /* при первом запуске скрипт создаст файл с данными */ else { $ff = fopen($path, "a+"); flock($ff, LOCK_EX); fputs($ff, $ip."^".$ua."^".$time."\r\n"); flock($ff, LOCK_UN); fclose($ff); mail($email, stat-robot, "Атака с IP: ".$ip."\nВремя:" .$time); /* на мыло будет приходить отчёт если произошла атака */ $fc = fopen($cpath, "a+"); $str = fgets($fc, 2048); list($count, $dcount, $pos) = explode("^", $str); if ($pos != $flag) { $dcount = 0; } else { $dcount++; } $count++; flock($fc, LOCK_EX); ftruncate($fc, 0); fputs($fc, $count."^".$dcount."^".$flag); flock($fc, LOCK_UN); fclose($fc); } exit; // end Пишем файл если кто то захочет завладеть паролем } break;