Почему на этой странице (login.php) не работает header()? Точнее работает, но только, если его поставить в самом начале файла... Код (Text): <!DOCTYPE html> <head> <title>Вход</title> <meta charset="utf-8"> <link rel="shortcut icon" href="../img/system/logo-min.png" type="image/png"> <link href="../css/main.css" rel="stylesheet"> <link href="../css/menu.css" rel="stylesheet"> <style> body { background-color: rgba(234,234,234,0.36); } #tabl { width: 100%; } #block { background: #FFF; width:540px; margin-top: 50px; padding:30px; box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16); } #login, #password { border: none; font-family: 'P22Thin'; font-size: 20px; padding: 4px; padding-bottom: 7px; border-bottom: 1px solid #ccc; } #login:focus { outline: none; border-bottom: 1px solid #000; } #password:focus { outline: none; border-bottom: 1px solid #000; } h1 { font-family: 'P22Demi'; font-size: 30px; } #ok { margin-top: 5px; color: #2196F3; font-family: 'Roboto'; padding: 15px; border: none; background-color: transparent; font-size: 19px; cursor: pointer; } #ok:hover { background-color: rgba(239,239,239,0.7); } </style> </head> <?php echo "<div id=tabl align=center> <div id=block> <h1>Авторизация</h1> <form method=POST action=login.php> <p><input type=text name=login id=login size=30 placeholder=Логин><br></p> <p><input type=password name=password id=password size=30 placeholder=Пароль></p> <p><input type=submit value=Войти name=ok id=ok></p> </form> </div> </div>"; if(isset($_POST["ok"])) { $host=""; $user=""; $pass=""; $db_name=""; $mysqli = new mysqli($host,$user,$pass,$db_name); $result = $mysqli->query("SELECT * FROM users WHERE login='{$_POST['login']}' and password='{$_POST['password']}'"); $size = $mysqli->affected_rows; echo $login, $password, $size; if ($size === 1) { header('Location: index.php'); } elseif ($size === 0) { header('Location: login.php'); }; }; ?> </html> Помогите, пожалуйста!!
потому что так устроены сообщения http: - сначала идут заголовки - потом тело пэхапэ не изобретает ничего нового в вебе. просто помогает тебе сформировать сообщение-ответ http. --- Добавлено --- p.s. замечено, что чем длиннее вопрос, чем больше в нём никому не интересного мусора, тем меньше вероятность ответа. стремись к простоте и краткости.
вникать в "логику" твоей портянки с кодом не хочется. сделай так чтобы любой текст выводился после вызова header(), или не выводился вообще! когда делаешь редирект, незачем что-то выводить: редирект это сообщение, у которого в заголовках есть указание браузеру какой адрес он должен открыть вместо данного. тело такого сообщения будет проигнорировано. а если ты ухитрился вывести тело раньше заголовка, то заголовка тупо не будет в этом сообщении. не надо ссать против ветра. сейчас понял?
Проблема в том, что до этого, около года, я ссал против ветра весьма удачно. Ладно, спасибо и на этом...
мои соболезнования! в 4 года я был уверен, что умею летать. потом реальность настигла меня, это было обидно.
Есть конфигурация php, которая позволяет такой фигне работать. Сейчас не помню как включается. Но лучше на такое не рассчитывать.