Помогите мне написать регистрацию с куки
Вот я хочу написать маленький портал. Я уже прочитал очень много статей в инете, много книг (то есть быстренько пробежался глазами), но вот у меня возникла проблемма и уже не хватает нервов её решить. :)
Значит, с чего я решил начать - это сделать регистрацию пользователей на сайте. У меня всё получается, делал через сессии, но я теперь понимаю, что это мне не очень удобно.
Например когда пользователь опять заходит на страничку, которую гости не могут читать (у меня в файле это account.php), то пользователи её не видят, потому что сессия их истекла. Поэтому я думаю мне нужно куки.
Я пытался вставить куки в checklogin.php и login_success.php, но почему-то не получается (при входе на страницу main_login.php там внизу должна появляться надпись, что я уже вошёл). В комментариях вы там сможете это увидеть.
Я убирал session_start() и вместо $_SESSION или session_register писал $_COOKIE и ставил setcookie, но результат был жирный ноль. Может даже быть, что я написал что-то не так в скриптах.
Вообщем, надеюсь, что мне кто-нибудь сможет помочь написать этот куки или придумать какой-нибудь другой вариант решения. :confused:
Кстати, для новичков этот пример очень будет полезен!
Я так же пытался сделать регистрацию, вход и персональную страницу в виде index.php?page=login через switch или модули, но не выходило. С функциями типа myfunction() таже ситуация.
Я такую статью видел здесь: http://www.codenet.ru/webmast/php/modules.php
А, чуть не забыл, как сделать инфо о пользователе в таком виде index.php?id=XoxMa ?
Может быть для кого-нибудь это будет интересно сделать. :rolleyes:
В файле находится:
account.php - страница, которую могут просматривать только зарегистрированные пользователи.
checklogin.php - скрипт для входа на сайт.
config.php - конфиг базы данных.
login_success.php - страничка об успешном входе на сайт.
logout.php - выход.
main_login.php - форма для входа на сайт.
register.html - форма регистрации.
register.php - скрипт регистрации + в конце сообщение об успешной регистрации.
db.sql - сама база данных (из одной таблицы).
Скачать здесь: http://sushko.net/register.zip
:)
Цитата: GnoMuK
Например когда пользователь опять заходит на страничку, которую гости не могут читать (у меня в файле это account.php), то пользователи её не видят, потому что сессия их истекла. Поэтому я думаю мне нужно куки.
а на чем, по вашему, основаны сессии? Тут вам от этого никак не избежать.. Или ставьте бесконечно большое время жизни сессии
Цитата: GnoMuK
Я так же пытался сделать регистрацию, вход и персональную страницу в виде index.php?page=login через switch или модули, но не выходило.
Эммм я так и не понял чего там не работает?) Че сложного-то..
Делаете запрос к БД, используя WHERE `login` = login (ну типа этого) и сверяете пароль. и если верно, то редирект на панель управления.
Цитата: GnoMuK
А, чуть не забыл, как сделать инфо о пользователе в таком виде index.php?id=XoxMa ?
о_0 это про че?
Я только не знаю, как сделать бесконечное время действия сессии?
Цитата: GnoMuK
Я только не знаю, как сделать бесконечное время действия сессии
Извини, что без точных указаний, но поcмотри здесь на возможности сессий и попробуй после открытия сессии "ручками" подрпавить срок годности сессионного печенья.
А по поводу инфы. Выдели переменную, которую больше нигде не будешь использовать и через switch проверяй её. Потом select * from users where login=$uid
Думаю, тут будет понятно, что в config.php хранится только несколько переменных о бд.
Код:
<?php
switch(page)
{
case true:
true();
break;
case check:
check();
break;
case account:
account();
break;
case logout:
logout();
break;
default:
login();
}
function login()
{
session_start();
if (isset($_SESSION['myusername']))
{
header ("Location: index.php?page=account");
}
else {
echo "
<html><body>
<table width='300' border='0' align='center' cellpadding='0' cellspacing='1' bgcolor='#CCCCCC'>
<tr>
<form name='form1' method='post' action='index.php?page=check'>
<td>
<table width='100%' border='0' cellpadding='3' cellspacing='1' bgcolor='#FFFFFF'>
<tr>
<td colspan='3'><strong>Member Login</strong>
</td>
</tr>
<tr>
<td width='78'>Username</td>
<td width='6'>:</td>
<td width='294'><input name='myusername' type='text' id='myusername'></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name='mypassword' type='text' id='mypassword'></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type='submit' name='Submit' value='Login'></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
</body></html>
";
}
}
function true()
{
session_start();
// if(!session_is_registered(myusername)) {
if (!isset($_SESSION['myusername'])) {
header("location:index.php");
}
else {
echo 'вы успешно зашли как '.$_SESSION['myusername'];
// $usercookie = $_SESSION['myusername'];
// setcookie("myusername", $usercookie, time() + 600);
}
}
function check()
{
require_once ("config.php");
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password") or die("cannot connect");
mysql_select_db("$db_name") or die("cannot select DB");
session_start();
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// username and password sent from signup form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$sql="SELECT * FROM $table WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if ($count == 1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
// session_register("myusername");
// session_register("mypassword");
$_SESSION['myusername'] = "$myusername";
$_SESSION['mypassword'] = "$mypassword";
header("location:index.php?page=true");
}
else {
echo "неправильный юзер или пароль";
}
}
function account()
{
session_start();
if (isset($_SESSION['myusername']))
{
echo 'эта инфа только для зарегиных пользователей. привет, '.$_SESSION['myusername'];
}
else {
echo "вы не зарегины";
}
}
function logout()
{
session_start();
session_destroy();
echo "вы вышли";
}
?>
switch(page)
{
case true:
true();
break;
case check:
check();
break;
case account:
account();
break;
case logout:
logout();
break;
default:
login();
}
function login()
{
session_start();
if (isset($_SESSION['myusername']))
{
header ("Location: index.php?page=account");
}
else {
echo "
<html><body>
<table width='300' border='0' align='center' cellpadding='0' cellspacing='1' bgcolor='#CCCCCC'>
<tr>
<form name='form1' method='post' action='index.php?page=check'>
<td>
<table width='100%' border='0' cellpadding='3' cellspacing='1' bgcolor='#FFFFFF'>
<tr>
<td colspan='3'><strong>Member Login</strong>
</td>
</tr>
<tr>
<td width='78'>Username</td>
<td width='6'>:</td>
<td width='294'><input name='myusername' type='text' id='myusername'></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name='mypassword' type='text' id='mypassword'></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type='submit' name='Submit' value='Login'></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
</body></html>
";
}
}
function true()
{
session_start();
// if(!session_is_registered(myusername)) {
if (!isset($_SESSION['myusername'])) {
header("location:index.php");
}
else {
echo 'вы успешно зашли как '.$_SESSION['myusername'];
// $usercookie = $_SESSION['myusername'];
// setcookie("myusername", $usercookie, time() + 600);
}
}
function check()
{
require_once ("config.php");
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password") or die("cannot connect");
mysql_select_db("$db_name") or die("cannot select DB");
session_start();
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// username and password sent from signup form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$sql="SELECT * FROM $table WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if ($count == 1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
// session_register("myusername");
// session_register("mypassword");
$_SESSION['myusername'] = "$myusername";
$_SESSION['mypassword'] = "$mypassword";
header("location:index.php?page=true");
}
else {
echo "неправильный юзер или пароль";
}
}
function account()
{
session_start();
if (isset($_SESSION['myusername']))
{
echo 'эта инфа только для зарегиных пользователей. привет, '.$_SESSION['myusername'];
}
else {
echo "вы не зарегины";
}
}
function logout()
{
session_start();
session_destroy();
echo "вы вышли";
}
?>
У тебя в первых же строка ошибка: switch всегда выбирает первый вариант. Возьми все переключатели в кавычки.
Код:
switch([COLOR="Red"]$[/COLOR]page)
2) Не используй ключевые слова в качестве имен.