извеждане на user от сесия

Статус
Not open for further replies.

systems

Registered
Добър вечер използвам тази логин система тя работи отлично но не ми изкарва след логването името на потребителя ще съм ви много благодарен
ако помогнете:

това ми е логина:

login.php
Код:
<?php
include("conf.inc.php"); // Включва името на датабазата и другата информация
session_start(); // Стартира сесията.
if ($_SESSION['logged'] == 1) { // Потребителя вече е влезнал в акаунта си.
    header("Location: index.php"); // Отива на главната страница.
    exit(); // Спира останалото от скрипта.
} else {
    if (!isset($_POST['submit'])) { // Формата не беше изпратена.
        echo "<form action=\"login.php\" method=\"POST\">";
        echo "<table>";
        echo "<tr>";
        echo "<td colspan=\"2\">Login:</td>";
        echo "</tr>";
        echo "<tr>";
        echo "<td width=\"50%\">Username:</td><td width=\"50%\"><input name=\"username\" size=\"18\" type=\"text\" />";
        echo "</tr>";
        echo "<tr>";
        echo "<td width=\"50%\">Password:</td><td width=\"50%\"><input name=\"password\" size=\"18\" type=\"text\" />";
        echo "</tr>";
        echo "<tr>";
        echo "<td colspan=\"2\"><input type=\"submit\" name=\"submit\" value=\"submit\"</td>";
        echo "</tr>";
        echo "</table>";
        echo "</form>";
    } else {
        $username = form($_POST['username']);
        $password = md5($_POST['password']); // Криптира паролата.
 
        $q = mysql_query("SELECT * FROM `users` WHERE username = '$username' AND password = '$password'") or die (mysql_error()); // mySQL query
        $r = mysql_num_rows($q); // Проверява дали има нещо в базата данни.
 
        if ($r == 1) { // Има нещо в базата данни. Потребителя/паролата съвпадат.
            $_SESSION['logged'] = 1;
            header("Location: index.php"); // Отива на главната страница
            exit(); // Спира останалото от скрипта
        } else { // Грешен потребител/парола.
            exit("Incorrect username/password!"); // Спира скрипта и изкарва съобщение.
        }
    }
}
mysql_close($db_connect); // Затваря връзката.
?>



това ми е index фаила:

index.php
Код:
<?php
include("conf.inc.php"); // Включва базата данни.
session_start(); // Стартира сесията.
if ($_SESSION['logged'] != 1) { // Няма грешка.
    header("Location: login.php"); // Отива на страницата за вход.
    exit(); // Спира останалото от скрипта
}
echo "Това е главната страница!";
echo "<br />";
echo "<a href=\"logout.php\">Logout?</a>"
?>


опитах по този начин да изведа username но не
казва ми здравеи Това е главната страница
ето как опитах да го направя:

Код:
<?php
include("conf.inc.php"); // Включва базата данни.
session_start(); // Стартира сесията.
if ($_SESSION['logged'] != 1) { // Няма грешка.
    header("Location: login.php"); // Отива на страницата за вход.
    exit(); // Спира останалото от скрипта
}
echo "Това е главната страница!";
echo "Здравей " .  $_SESSION['username']
echo "<br />";
echo "<a href=\"logout.php\">Logout?</a>"
?>

като сложа:
Код:
echo "Здравей " .  $_SESSION['username']
ми покаазва само здравеи но не и името на потребителя
които се е логнал има ли начин да се направи след логин на потребител
в index.php да показва името на логнатия потребител
благодаря ви предварително.
 
няма ме много в php програмирането ако съм те разбрал правилно
грешката на скрипта е че не му е зададено да извежда потребителското
име а единствената проверка която прави е дали се е логнал потребителя или не

нещо неуспявам да разбера как точно да му задам тази стоиност
така ли трябва да стане или?


Код:
<?php
include("conf.inc.php"); // Включва името на датабазата и другата информация
session_start(); // Стартира сесията.
if ($_SESSION['logged'] == 1) { // Потребителя вече е влезнал в акаунта си.
if ($_SESSION['username'] == 1) {  
	header("Location: index.php"); // Отива на главната страница.
    exit(); // Спира останалото от скрипта.
} else {
    if (!isset($_POST['submit'])) { // Формата не беше изпратена.
        echo "<form action=\"login.php\" method=\"POST\">";
        echo "<table>";
        echo "<tr>";
        echo "<td colspan=\"2\">Login:</td>";
        echo "</tr>";
        echo "<tr>";
        echo "<td width=\"50%\">Username:</td><td width=\"50%\"><input name=\"username\" size=\"18\" type=\"text\" />";
        echo "</tr>";
        echo "<tr>";
        echo "<td width=\"50%\">Password:</td><td width=\"50%\"><input name=\"password\" size=\"18\" type=\"text\" />";
        echo "</tr>";
        echo "<tr>";
        echo "<td colspan=\"2\"><input type=\"submit\" name=\"submit\" value=\"submit\"</td>";
        echo "</tr>";
        echo "</table>";
        echo "</form>";
    } else {
        $username = form($_POST['username']);
        $password = md5($_POST['password']); // Криптира паролата.
 
        $q = mysql_query("SELECT * FROM `users` WHERE username = '$username' AND password = '$password'") or die (mysql_error()); 
		// mySQL query
        $r = mysql_num_rows($q); // Проверява дали има нещо в базата данни.
 
        if ($r == 1) { // Има нещо в базата данни. Потребителя/паролата съвпадат.
            $_SESSION['logged'] = 1;
            if ($r == 1)
			$_SESSION['username']=1;
			header("Location: index.php"); // Отива на главната страница
            exit(); // Спира останалото от скрипта
        } else { // Грешен потребител/парола.
            exit("Incorrect username/password!"); // Спира скрипта и изкарва съобщение.
        }
    }
}
mysql_close($db_connect); // Затваря връзката.
?>
 
@Radko Брат, не се дрЪгни така с момчето .. спомни си .. вски един от нас е бил така .. ;)


Колкото до тебе пич ..ето ти кода :)

Код:
<?php
include("conf.inc.php"); // Включва името на датабазата и другата информация
session_start(); // Стартира сесията.
if ($_SESSION['logged'] == 1) { // Потребителя вече е влезнал в акаунта си.
if ($_SESSION['username'] == 1) { 
   header("Location: index.php"); // Отива на главната страница.
    exit(); // Спира останалото от скрипта.
} else {
    if (!isset($_POST['submit'])) { // Формата не беше изпратена.
        echo "<form action=\"login.php\" method=\"POST\">";
        echo "<table>";
        echo "<tr>";
        echo "<td colspan=\"2\">Login:</td>";
        echo "</tr>";
        echo "<tr>";
        echo "<td width=\"50%\">Username:</td><td width=\"50%\"><input name=\"username\" size=\"18\" type=\"text\" />";
        echo "</tr>";
        echo "<tr>";
        echo "<td width=\"50%\">Password:</td><td width=\"50%\"><input name=\"password\" size=\"18\" type=\"text\" />";
        echo "</tr>";
        echo "<tr>";
        echo "<td colspan=\"2\"><input type=\"submit\" name=\"submit\" value=\"submit\"</td>";
        echo "</tr>";
        echo "</table>";
        echo "</form>";
    } else {
        $username = form($_POST['username']);
        $password = md5($_POST['password']); // Криптира паролата.
 
        $q = mysql_query("SELECT * FROM `users` WHERE username = '$username' AND password = '$password'") or die (mysql_error());
      // mySQL query
        $r = mysql_num_rows($q); // Проверява дали има нещо в базата данни.
 
        if ($r == 1) { // Има нещо в базата данни. Потребителя/паролата съвпадат.
            $_SESSION['logged'] = 1;
            if ($r == 1)
         $_SESSION['username']=$username;
         header("Location: index.php"); // Отива на главната страница
            exit(); // Спира останалото от скрипта
        } else { // Грешен потребител/парола.
            exit("Incorrect username/password!"); // Спира скрипта и изкарва съобщение.
        }
    }
}
mysql_close($db_connect); // Затваря връзката.
?>
 
Благодаря ви безкраино много ако може само още едно въпросче
значи след като се логна ме пренасочва към index.php

това ми е index.php.
но отново ми пише само здравеи не ми показва името на usera с които съм се логнал къде ми е грешката.

Код:
<?php
include("conf.inc.php"); // Включва базата данни.
ob_start();
session_start(); // Стартира сесията.
if ($_SESSION['logged'] != 1) { // Няма грешка.
    $_SESSION['username']=$username;
	header("Location: login.php"); // Отива на страницата за вход.
    exit(); // Спира останалото от скрипта
}
echo '<br/> <span style="color:#04688d">Здравеи-:<span style="color:#04688d">'.$_SESSION['username'];
echo "<a href=\"logout.php\">Logout?</a>";
?>
 
Код:
<?php
include("conf.inc.php"); // Включва базата данни.
ob_start();
session_start(); // Стартира сесията.
if ($_SESSION['logged'] != 1) { // Няма грешка.
	header("Location: login.php"); // Отива на страницата за вход.
    exit(); // Спира останалото от скрипта
}
echo '<br/> <span style="color:#04688d">Здравеи-:<span style="color:#04688d">'.$_SESSION[username];
echo "<a href=\"logout.php\">Logout?</a>";
?>

Готов си, защо задаваш нова стойност на сесията :)
При логването вече си задал стойноста "username", от сега нататък можеш да си използваш само $_SESSION[username]
Лек вечер ;)
 
Здравей System. Бих могъл да ти оправя кода и да ти го дам на готово, но няма да го направя защото според мен е по-хубаво да се научиш оправяйки си кода сам.

Ще ти кажа, все пак къде ти е грешката за да можеш да си го оправиш.

В началото на login.php има следния код:

PHP:
if ($_SESSION['username'] == 1)

Този код е безполезен, тоест това което искам да кажа, е че няма смисъл от него и може да го изстриеш (само тази част).

Проблемът за това което питаш (че не извежда потребителско име на index.php идва от тези редове).

PHP:
 $q = mysql_query("SELECT * FROM `users` WHERE username = '$username' AND password = '$password'") or die (mysql_error()); 
      // mySQL query
        $r = mysql_num_rows($q); // Проверява дали има нещо в базата данни.
 
        if ($r == 1) { // Има нещо в базата данни. Потребителя/паролата съвпадат.
            $_SESSION['logged'] = 1;
            if ($r == 1)
         $_SESSION['username']=1;
         header("Location: index.php"); // Отива на главната страница
            exit(); // Спира останалото от скрипта

Това което става тук е следното:
1. Твоят код прави заявка към базата данни и взема информацията цялата информация за потребителя където потребителското име и паролата съвпадат.

2. Информацията за броя намерени резултати в базата данни се съхранява в променливата $r.

3. Проверяваш дали резултата е равен на 1, ако е, значи потребителското име и паролата са правилно и продължава на татък.

4. Слагаш глобалната променлива $_SESSION['logged'] да е равна на 1 с което ще знаеш дали потребителя е влязъл или не е.

(До тук всичко е както трябва да бъде :) )

5. След това идва нещо странно. Отново проверяваш дали $r е равно на 1? Защо? Вече си го направил, не го прави отново. Тази част от кода трябва да се премахне.

6. Тук вече си идваме на думата. Слагаш $_SESSION['username'] равно на едно? Тук ти е грешката. Вместо равно на 1 трябва да направиш $_SESSION['username'] = $username (тази променлива която потребителя, е въвел във формата и след това с която проверяваш дали има такъв потребител в базата данни). След като от $_POST['username'] взимаш информацията и я слагаш в $username ти вече имаш потребителското име на потребителя. Това което трябва да направиш е да провериш дали потребителското име и паролата съвпадат с тези в базата данни. (И ти го правиш това.) Следователно, след като видиш , че съвпадат и знаеш, че това потребителско име е на този потребител тогава правиш $_SESSION['username'] = $username и след това пренасочваш към index.php

Надявам се да съм ти помогнал. :)
 
Radko каза:
M1tq96 каза:
@Radko Брат, не се дрЪгни така с момчето .. спомни си .. вски един от нас е бил така .. ;)

Понякога е по - добре да накараш човек да се замисли над нещо и да го разбере, отколкото да му го пльоснеш наготово. Така се учи, другото са глупости.

навтемето когато Аз се учих, бяха много малко хората, които биха ти дали готов код, както и хората, който изовщо биха ти го обяснили . В повече бяха хората които просто ще кажат -> грешката ти е в сесията .. оправяй се .. както и да е ..

Въпросът е, че за мен лично е по добре да ми дадат кода и аз ще го рагледам 1, 2, 3, 5 пъти , докъто го разбера , ще го сравня с моя .. ще вида къде са ми грешките ии .. с нялко просто примера ще упражня новото ии бамм .. научавам го .. нали .. аз така действам .. НЕ че като ми кажеш логиката и немога да напиша кода - мога , просто ти казвам, че несам само аз който работи така .. ;)

п.с: има и хора който наистина са праят и искат само на готово. Смисал нито искат да научат как става , ама искат да го могат или някой да им го направи без пари .. :D
 
Radko каза:
M1tq96 каза:
@Radko Брат, не се дрЪгни така с момчето .. спомни си .. вски един от нас е бил така .. ;)

Понякога е по - добре да накараш човек да се замисли над нещо и да го разбере, отколкото да му го пльоснеш наготово. Така се учи, другото са глупости.

Понякога трябва да блокираш някой за да го накараш да се замисли и да накараш останалите да се замислят.
Спам , сарказъм, високомерност, надуване и прочие не се толерират.


Изтрих мненията на radko и... не виждам да липсват на някой.
Сега ще пробвам с акаунта му , защото има вече забележки да не се държи по този начин в чужди теми и да отговаря спокойно и ясно.
Никой не го кара насила да отговаря но ще отговаря само ако има желание и
без да нервничи или да се държи наставнически.
 
Статус
Not open for further replies.

Back
Горе