Логин системка

KaRo

Registered
Абе написах си една системка, всичко профили регистрация, алабала е OK, само, че незнам защо се появява тази грешка тъй като сешън старт е на първо място, няма интервали, спейсове. Вие сте.


Грешка:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\AppServ\www\registrat\login.php:1) in C:\AppServ\www\registrat\login.php on line 1

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\registrat\login.php:1) in C:\AppServ\www\registrat\login.php on line 1

Логин:
Код:
<?php session_start(); ?>
<?php
$user = $_SESSION['username'];
include "config.php";
if(!$_POST['submit']) {
echo '<form method="post" action=""> Потребител:  <div class="input"> <input class="text" type="text" name="username" /> </div>
Парола <div class="input"> <input class="text" type="password" name="password" /> </div> Регистрация <br />
<input type="submit" name="submit" value="Регистрирайте се!" /> </form>';
}
else {
$username = htmlspecialchars($_POST['username']);
$password = htmlspecialchars($_POST['password']);
$sql = "SELECT * FROM `users` WHERE username='$username'";
$result = mysql_query($sql);
$potrebiteli = mysql_num_rows($result);
$row = mysql_fetch_assoc($result);
if($potrebiteli == 0) {
	echo '<form method="post" action=""> <span class="red"> * </span> Потребител: <div class="input"> <input class="text" type="text" name="username" /> </div>
<span class="red"> * </span> Парола: <div class="input"> <input class="text" type="password" name="password" /> </div> <br />
<input type="submit" name="submit" value="Регистрирайте се" /><br /> <br /> <span class="red"> * Невалиден потребител</span> </form>';
}
else {
	if($password != $row['password']) {
		echo '<form method="post" action=""> <span class="red"> * </span> Потребител: <div class="input"> <input class="text" type="text" name="username" /> </div>
<span class="red"> * </span> Парола: <div class="input"> <input class="text" type="password" name="password" /> </div> <br />
<input type="submit" name="submit" value="Регистрирайте се" /><br /> <br /> <span class="red"> * Грешна парола.</span></form>';
	}
	else {
		if($user) {
		include "login_auto.php";
		}
	}
}
}
?>
 
<?php
session_start();
$user = $_SESSION['username'];
include "config.php";
if(!$_POST['submit']) {
echo '<form method="post" action=""> Потребител: <div class="input"> <input class="text" type="text" name="username" /> </div>
Парола <div class="input"> <input class="text" type="password" name="password" /> </div> Регистрация <br />
<input type="submit" name="submit" value="Регистрирайте се!" /> </form>';
}
else {
$username = htmlspecialchars($_POST['username']);
$password = htmlspecialchars($_POST['password']);
$sql = "SELECT * FROM `users` WHERE username='$username'";
$result = mysql_query($sql);
$potrebiteli = mysql_num_rows($result);
$row = mysql_fetch_assoc($result);
if($potrebiteli == 0) {
echo '<form method="post" action=""> <span class="red"> * </span> Потребител: <div class="input"> <input class="text" type="text" name="username" /> </div>
<span class="red"> * </span> Парола: <div class="input"> <input class="text" type="password" name="password" /> </div> <br />
<input type="submit" name="submit" value="Регистрирайте се" /><br /> <br /> <span class="red"> * Невалиден потребител</span> </form>';
}
else {
if($password != $row['password']) {
echo '<form method="post" action=""> <span class="red"> * </span> Потребител: <div class="input"> <input class="text" type="text" name="username" /> </div>
<span class="red"> * </span> Парола: <div class="input"> <input class="text" type="password" name="password" /> </div> <br />
<input type="submit" name="submit" value="Регистрирайте се" /><br /> <br /> <span class="red"> * Грешна парола.</span></form>';
}
else {
if($user) {
include "login_auto.php";
}
}
}
}
?>
 
Това няма значение, дали session_start ще е отделно или заедно, поне в повечето случеи, пробвал съм и така, няма резултат, други идеи?
 
Над нея имаш HTML код или нещо друго. session_start() трябва да е най-горе на документа, преди всякакъв код :)
 
Пич, това го знам и нали съм го казал в първия пост, че го знам не ми е от това проблема, дал съм код, виж:

Код:
	 <?php session_start(); ?>
<?php
$user = $_SESSION['username'];
include "config.php";
if(!$_POST['submit']) {
echo '<form method="post" action=""> Потребител:  <div class="input"> <input class="text" type="text" name="username" /> </div>
Парола <div class="input"> <input class="text" type="password" name="password" /> </div> Регистрация <br />
<input type="submit" name="submit" value="Регистрирайте се!" /> </form>';
}
else {
$username = htmlspecialchars($_POST['username']);
$password = htmlspecialchars($_POST['password']);
$sql = "SELECT * FROM `users` WHERE username='$username'";
$result = mysql_query($sql);
$potrebiteli = mysql_num_rows($result);
$row = mysql_fetch_assoc($result);
if($potrebiteli == 0) {
   echo '<form method="post" action=""> <span class="red"> * </span> Потребител: <div class="input"> <input class="text" type="text" name="username" /> </div>
<span class="red"> * </span> Парола: <div class="input"> <input class="text" type="password" name="password" /> </div> <br />
<input type="submit" name="submit" value="Регистрирайте се" /><br /> <br /> <span class="red"> * Невалиден потребител</span> </form>';
}
else {
   if($password != $row['password']) {
      echo '<form method="post" action=""> <span class="red"> * </span> Потребител: <div class="input"> <input class="text" type="text" name="username" /> </div>
<span class="red"> * </span> Парола: <div class="input"> <input class="text" type="password" name="password" /> </div> <br />
<input type="submit" name="submit" value="Регистрирайте се" /><br /> <br /> <span class="red"> * Грешна парола.</span></form>';
   }
   else {
      if($user) {
      include "login_auto.php";
      }
   }
}
}
?>
 
Не виждам да си го казал? Няма значение, че сешън старт ти е на първо място в този код, трябва да е на първо място над всякакъв код. Сега ти остава или да сложиш ob_start(); преди session_start-a и да си напълниш буфера или да си оправиш кода. Ти избирай :)
 
Аз ли съм глупав или създаваш сесия преди да инклуднеш конфигурационния файл? Беше наобратно това удебеленото.
<?php session_start(); ?>
<?php
include "config.php";
$user = $_SESSION['username'];

if(!$_POST['submit']) {
echo '<form method="post" action=""> Потребител: <div class="input"> <input class="text" type="text" name="username" /> </div>
Парола <div class="input"> <input class="text" type="password" name="password" /> </div> Регистрация <br />
<input type="submit" name="submit" value="Регистрирайте се!" /> </form>';
}
else {
$username = htmlspecialchars($_POST['username']);
$password = htmlspecialchars($_POST['password']);
$sql = "SELECT * FROM `users` WHERE username='$username'";
$result = mysql_query($sql);
$potrebiteli = mysql_num_rows($result);
$row = mysql_fetch_assoc($result);
if($potrebiteli == 0) {
echo '<form method="post" action=""> <span class="red"> * </span> Потребител: <div class="input"> <input class="text" type="text" name="username" /> </div>
<span class="red"> * </span> Парола: <div class="input"> <input class="text" type="password" name="password" /> </div> <br />
<input type="submit" name="submit" value="Регистрирайте се" /><br /> <br /> <span class="red"> * Невалиден потребител</span> </form>';
}
else {
if($password != $row['password']) {
echo '<form method="post" action=""> <span class="red"> * </span> Потребител: <div class="input"> <input class="text" type="text" name="username" /> </div>
<span class="red"> * </span> Парола: <div class="input"> <input class="text" type="password" name="password" /> </div> <br />
<input type="submit" name="submit" value="Регистрирайте се" /><br /> <br /> <span class="red"> * Грешна парола.</span></form>';
}
else {
if($user) {
include "login_auto.php";
}
}
}
}
?>
 
DeathGuard_ каза:
Аз ли съм глупав или създаваш сесия преди да инклуднеш конфигурационния файл? Беше наобратно това удебеленото.
Няма разлика? :)
 
И това съм го пробвал, както казах по-горе, брат :( Вече се отчайвам, а не искам да ползвам Output buffering, по почти същият начин съм писал и файла за логин тук:
http://vicove.karcho.com , но там се получава, тук незнам какво го хвана..
 
да.. ако става дума за енкодинга, пробвах всички UTF8, пък на ANSI ми излаза на шльоковица..
 
Encoding -> Convert to UTF-8 without BOM, и би трябвало да се оправи ако нямаш html или друг код отгоре.

п.с. Не прави double/triple постинги. Имаш си бутон edit :)
 
Сега бърниках с phpdesigner енкодинга и се оправи, но имам друг проблем, който мисля, че идва пак от тук някъде, понеже пак на другия го няма :D Не мога да инклудвам или да създам някоя сесия, нищо не ми извежда само с ехото извежда..
 
Остави ги тея phpdesigner-и.
Проблема е прост:
Нещо се изпълнява преди SESSION START.
<?php session_start(); ?>
<?php
Не просто трябва да седи над пхп-скрипта, ами в самото начало на страницата (над всичко друго).
Дори и над:
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Имал съм същия проблем и така го оправих, успех.
 
Виж login.php да ли си сложил името и паролата на база данните, също така пробвай като махнеш cookie
 

Back
Горе