[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ПОМОГИТЕ СО СКРИПТОМ
Kingcss
Вообщем вот скрипт:
<?php
session_start();
@include("config.php");
//Необходимо подключиться к БД
$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)
or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db($DB, $link) or die ('Не могу выбрать БД');
echo "<h2>Страница активации</h2>";
$uniq = $_GET['id'];
if($_GET['id']='') { echo "Вы зашли на страницу без кода подтверждения"; }
elseif ($_GET['id'] != '') {
$log = mysql_query("SELECT * FROM users WHERE uniq_id='$uniq'");
$idi = mysql_query("SELECT status FROM users WHERE uniq_id='$uniq'");
if (empry($log)) { echo "Такой профиль не существует"; }
elseif(isset($log) AND $idi = 1) {echo "Данный профиль уже активирован"; }
elseif(isset($log) AND $idi = 0) {
$r=@mysql_query("UPDATE users SET status=1 WHERE status=0 AND uniq_id='$uniq' ");
echo '<h2>Ваша учетная запись активирована.</h2><br> Теперь вы можете <a href="index.php">войти на сайт</a> используя данные указанные при регистрации';
}
}
?>
ВОобщем вот скрипт,до добавления надписей, что профиль активен или без кода потверждение , все работало, щас ничего не пишет



Спустя 1 минута, 31 секунда (27.07.2010 - 13:25) Basili4 написал(а):
@include("config.php"); что за дурь ?

Спустя 1 минута, 2 секунды (27.07.2010 - 13:26) Basili4 написал(а):
в костер
$uniq = $_GET['id'];
if($_GET['id']='') { echo "Вы зашли на страницу без кода подтверждения"; }
elseif ($_GET['id'] != '') {
$log = mysql_query("SELECT * FROM users WHERE uniq_id='$uniq'");
$idi = mysql_query("SELECT status FROM users WHERE uniq_id='$uniq'");

Спустя 50 секунд (27.07.2010 - 13:27) Basili4 написал(а):
Хочешь совет перепиши все а я это в свою коллекциию заберу. детей пугать

Спустя 1 минута, 10 секунд (27.07.2010 - 13:28) Kingcss написал(а):
Мне нужно было проверить существует ли логин с данным uniq-id в бд
Ваши варианты?

Спустя 45 секунд (27.07.2010 - 13:29) Kingcss написал(а):
Я php изучаю 2недели, что ты хочешь

Спустя 1 минута, 42 секунды (27.07.2010 - 13:31) Basili4 написал(а):
Kingcss
На сайте 1 мес 12 денй. ты не сказал в сабже что ты изучаешь пхп так мало.
щас напишу

Спустя 1 минута, 11 секунд (27.07.2010 - 13:32) Kingcss написал(а):
Ну я имею ввиду, что только 2 недели , сижу и реально вникаю пхп.

Спустя 6 минут, 41 секунда (27.07.2010 - 13:39) Basili4 написал(а):
Как то так

<?php
session_start();

include("config.php"); // если не критично будет исполнятся скрипт при нехватке этого файла
//тогда можно и include() оставить если критично require()
//Необходимо подключиться к БД

$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db($DB, $link) or die ('Не могу выбрать БД');
echo "<h2>Страница активации</h2>";
$uniq = $_GET['id'];
if(empty($uniq)) { exit ("Вы зашли на страницу без кода подтверждения"); }
else
{
$result = mysql_query("SELECT * FROM users WHERE uniq_id='$uniq'");
if (mysql_num_rows($result)>0) { exit( "Такой профиль не существует"); }
$row=mysql_fetch_assoc($result);
//elseif(isset($log) AND $idi = 1) {echo "Данный профиль уже активирован"; }
if ($row['status ']==1) {exit( "Данный профиль уже активирован"); }

$r=mysql_query("UPDATE users SET status=1 WHERE status=0 AND uniq_id='$uniq' ") or die (mysql_error());
echo '<h2>Ваша учетная запись активирована.</h2><br> Теперь вы можете <a href="index.php">войти на сайт</a> используя данные указанные при регистрации';
}
}

?>

Спустя 8 минут, 48 секунд (27.07.2010 - 13:47) Kingcss написал(а):
Спасибо за скрипт, но он почему то пишет : такой профиль не существует, хотя он в базе есть, и если ввести любой айдишник он пишет: ваша учетная запись активирована, Да и еще последняя } -лишняя

Спустя 57 секунд (27.07.2010 - 13:48) linker написал(а):
Потому что здесь ошибка
if (mysql_num_rows($result)>0) { exit( "Такой профиль не существует"); }

Спустя 54 минуты, 43 секунды (27.07.2010 - 14:43) Kingcss написал(а):
В упор не вижу ошибку

Спустя 5 минут, 44 секунды (27.07.2010 - 14:49) linker написал(а):
Логическая ошибка: "если записей больше нуля (пользователь существует), то пользователь не существует", ведь нелогично правда? Может надо "== 0"?Избавление от mysql_num_rows() существует в нормальном ввиде
if ($user = mysql_fetch_assoc($result))
{
}

else die("Пользователя не существует");

Спустя 39 секунд (27.07.2010 - 14:49) Basili4 написал(а):
if (mysql_num_rows($result)==0) { exit( "Такой профиль не существует"); } Вот так должно быть наверное

Спустя 24 минуты, 40 секунд (27.07.2010 - 15:14) Kingcss написал(а):
Посоветуйте для каких ситуаций какой из команд лучше пользоваться.
РАЗОБРАЛСЯ

Спустя 6 минут, 48 секунд (27.07.2010 - 15:21) Basili4 написал(а):
ИЗ каких ?

Спустя 3 часа, 32 минуты, 49 секунд (27.07.2010 - 18:54) Kingcss написал(а):
$result = mysql_query("SELECT id,avatar FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
$myrow = mysql_fetch_array($result);
Почему выдает ошибку?

Спустя 2 часа, 17 минут, 5 секунд (27.07.2010 - 21:11) linker написал(а):
$myrow = mysql_fetch_array($result, MYSQL_ASSOC)
или
$myrow = mysql_fetch_assoc($result)

Спустя 12 часов, 28 минут, 38 секунд (28.07.2010 - 09:39) Kingcss написал(а):

РЕШЕНОИ вот еще вопрос:
Вот форма входа:


<!--Правый блок с рекламной информацией -->
<table width="100%" border="1" cellpadding="0" cellspacing="0"
bordercolor="#000000">
<tr>
<td
bgcolor="#0000CC">
<div
align="center"><b>Меню пользователя</b></div>
</td>
</tr>
<tr>
<td>
<?php

// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
include ("config.php");
//Необходимо подключиться к БД
$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db($DB, $link) or die ('Не могу выбрать БД');
if (isset($_COOKIE['auto']) and isset($_COOKIE['login']) and isset($_COOKIE['password']))
{//если есть необходимые переменные
if ($_COOKIE['auto'] == 'yes') { // если пользователь желает входить автоматически, то запускаем сессии
$_SESSION['password']=strrev(md5($_COOKIE['password']))."b3p6f"; //в куках пароль был не зашифрованный, а в сессиях обычно храним зашифрованный
$_SESSION['login']=$_COOKIE['login'];//сессия с логином
$_SESSION['id']=$_COOKIE['id'];//идентификатор пользователя
}
}


if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существет логин и пароль в сессиях, то проверяем их и извлекаем аватар
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result = mysql_query("SELECT id,avatar FROM users WHERE login='$login' AND password='$password' AND activation='1'");
$myrow = mysql_fetch_array($result);
//извлекаем нужные данные о пользователе
}
?>


<?php

if (!isset($myrow['avatar']) or $myrow['avatar']=='') {
//проверяем, не извлечены ли данные пользователя из базы. Если нет, то он не вошел, либо пароль в сессии неверный. Выводим окно для входа. Но мы не будем его выводить для вошедших, им оно уже не нужно.
print <<<HERE
<form action="testreg.php" method="post">
<!-- testreg.php - это адрес обработчика. То есть, после нажатия на кнопку "Войти", данные из полей отправятся на страничку testreg.php методом "post" -->
<p>
<label>Ваш логин:<br></label>
<input name="login" type="text" size="15" maxlength="15"

HERE;


if (isset($_COOKIE['login'])) //есть ли переменная с логином в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его логин уже вписан в нужную графу
echo ' value="'.$_COOKIE['login'].'">';
}


print <<<HERE
</p>
<!-- В текстовое поле (name="login" type="text") пользователь вводит свой логин -->
<p>
<label>Ваш пароль:<br></label>
<input name="password" type="password" size="15" maxlength="15"

HERE;


if (isset($_COOKIE['password']))//есть ли переменная с паролем в в COOKIE. Должна быть, если пользователь при предыдущем входе нажал на чекбокс "Запомнить меня"
{
//если да, то вставляем в форму ее значение. При этом пользователю отображается, что его пароль уже вписан в нужную графу
echo ' value="'.$_COOKIE['password'].'">';
}

print <<<HERE
</p>
<!-- В поле для паролей (name="password" type="password") пользователь вводит свой пароль -->
<p>
<input name="save" type="checkbox" value='1'> Запомнить меня.
</p>
<p>
<input name="autovhod" type="checkbox" value='1'> Автоматический вход.
</p>

<p>
<input type="submit" name="submit" value="Войти">
<!-- Кнопочка (type="submit") отправляет данные на страничку testreg.php -->
<br>
<!-- ссылка на регистрацию, ведь как-то же должны гости туда попадать -->
<a href="reg.php">Зарегистрироваться</a>

<br>
<!-- ссылка на восстановление пароля -->
<a href="send_pass.php">Забыли пароль?</a>

</p></form>
<br>
Вы вошли на сайт, как гость<br><a href='#'>Эта ссылка доступна только зарегистрированным пользователям</a>

HERE;
}

else
{
//при удачном входе пользователю выдается все, что расположено ниже между звездочками.
//************************************************************************************



print <<<HERE
Вы вошли на сайт, как $_SESSION[login]<br>
<img alt='
$_SESSION[login]' src='$myrow[avatar]'><br>
<a href='page.php?id=
$_SESSION[id]'>Моя страница</a><br><a href='all_users.php'>Список пользователей</a><br><a href='exit.php'>Выход</a><br><br>

<!-- Между оператором "print <<<HERE" выводится html код с нужными переменными из php -->

<!-- выше ссылка на выход из аккаунта -->
<!-- Выше отображается аватар. Его адрес содержит переменная
$myrow[avatar] -->

<!-- Именно здесь можно добавлять формы для отправки комментариев и прочего... -->


HERE;


//************************************************************************************
//при удачном входе пользователю выдается все, что расположено ВЫШЕ между звездочками.

}

?>
</body>
</html>
</body>
</html>


Вот второй:
<?php
session_start();// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!

include ("config.php");
//Необходимо подключиться к БД
$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db($DB, $link) or die ('Не могу выбрать БД');
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную

if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!"); //останавливаем выполнение сценариев
}
//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);

$password = stripslashes($password);
$password = htmlspecialchars($password);

//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);


// дописываем новое********************************************

// подключаемся к базе


// минипроверка на подбор паролей

$ip=getenv("HTTP_X_FORWARDED_FOR");
if (empty($ip) || $ip=='unknown') { $ip=getenv("REMOTE_ADDR"); }

if ($myrow['col'] > 2) {
exit ("Вы набрали логин или пароль неверно 3 раза. Подождите 15 минут до следующей попытки."); //останавливаем выполнение сценариев


}

$password = md5($password);//шифруем пароль
$password = strrev($password);// для надежности добавим реверс
$password = $password."b3p6f";
//можно добавить несколько своих символов по вкусу, например, вписав "b3p6f". Если этот пароль будут взламывать методом подбора у себя на сервере этой же md5,то явно ничего хорошего не выйдет. Но советую ставить другие символы, можно в начале строки или в середине.

//При этом необходимо увеличить длину поля password в базе. Зашифрованный пароль может получится гораздо большего размера.



$result = mysql_query("SELECT * FROM users WHERE login='$login' AND password='$password' AND activation='1'"); //извлекаем из базы все данные о пользователе с введенным логином
//мы дописали «AND activation='1'», то есть пользователь будет искаться только среди активированных. Желательно добавить это условие к другим подобным проверкам данных пользователя

$myrow = mysql_fetch_array($result);
if (empty($myrow['id']))
{
//если пользователя с введенным логином и паролем не существует,то записываем ip пользователя и с датой ошибки



exit ("Извините, введённый вами логин или пароль неверный."); //останавливаем выполнение сценариев

}
else {

//если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
$_SESSION['password']=$myrow['password'];
$_SESSION['login']=$myrow['login'];
$_SESSION['id']=$myrow['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь



if (isset($_POST['save'])){
//Если пользователь хочет, чтобы его данные сохранились для последующего входа, то сохраняем в куках его браузера
setcookie("login", $_POST["login"], time()+9999999);
setcookie("password", $_POST["password"], time()+9999999);
setcookie("id", $myrow['id'], time()+9999999);
}

if (isset($_POST['autovhod'])){
//Если пользователь хочет входить на сайт автоматически
setcookie("auto", "yes", time()+9999999);
setcookie("login", $_POST["login"], time()+9999999);
setcookie("password", $_POST["password"], time()+9999999);
setcookie("id", $myrow['id'], time()+9999999);}
}


echo "<html><head><meta http-equiv='Refresh' content='0; URL=index.php'></head></html>";

//перенаправляем пользователя на главную страничку, там ему и сообщим об удачном входе
?>

Почему то если просто ввожу логин и пароль и нажимаю вход, то ничего не происходит, входит только если ставлю галочку на автоматический вход
РЕШЕНО

Спустя 18 минут, 29 секунд (28.07.2010 - 09:58) Basili4 написал(а):
Разметь код тегами PHP HTML и др. иначе сам будеш разбиратся в коде

Спустя 4 часа, 12 минут, 51 секунда (28.07.2010 - 14:11) Kingcss написал(а):
Отредактировал

Спустя 4 часа, 27 минут, 45 секунд (28.07.2010 - 18:39) Kingcss написал(а):
и наверно последний вопросик:
Вызываю сессию: session_start();
и пишет ошибку: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Y:\home\test1.ru\www\index.php:5) in Y:\home\test1.ru\www\right_block.php on line 12 , но все работает, ток ошибка весит. Эта команда тут обязательно нужна, убрать никак.

Спустя 2 минуты, 3 секунды (28.07.2010 - 18:41) Basili4 написал(а):
ну у тебя же написано в тексте ошибки на строке 5 вывод в браузер на строке 12 отправка хендеров ты или вывод убери либо хендеры раньше вывода отправляй

Спустя 14 минут, 39 секунд (28.07.2010 - 18:55) Kingcss написал(а):
Вопрос что такое хендеры

<!--Правый блок с рекламной информацией -->
<table width="100%" border="1" cellpadding="0" cellspacing="0"
bordercolor="#000000">
<tr>
<td
bgcolor="#0000CC"> //Вот 5 строка
<div align="center"><b>Меню пользователя</b></div>
</td>
</tr>
<tr>
<td>
<?php

session_start(); // Вот 12


Спустя 5 минут, 14 секунд (28.07.2010 - 19:00) Basili4 написал(а):
<?php
session_start(); // Вот 12
?>
Заголовки. их браузер отправляет как только ему есть что передать т.е. до 1. выведенного символа <!--Правый блок с рекламной информацией -->
<table width="100%" border="1" cellpadding="0" cellspacing="0"
bordercolor="#000000">
<tr>
<td
bgcolor="#0000CC"> //Вот 5 строка
<div align="center"><b>Меню пользователя</b></div>
</td>
</tr>
<tr>
<td>
<?php
....

Спустя 9 минут, 32 секунды (28.07.2010 - 19:10) Kingcss написал(а):
Теперь браузер пишет:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Y:\home\test1.ru\www\index.php:5) in Y:\home\test1.ru\www\right_block.php on line 2
Сделал как в твоем последнем посте.

Спустя 5 минут, 32 секунды (28.07.2010 - 19:16) Basili4 написал(а):
Kingcss
на 2 строке вывод

Спустя 3 минуты, 30 секунд (28.07.2010 - 19:19) Kingcss написал(а):

<?php
session_start();
?>
<table
width="100%" border="1" cellpadding="0" cellspacing="0"
bordercolor="#000000">
<tr>
<td
bgcolor="#0000CC">
<div
align="center"><b>Меню пользователя</b></div>
</td>
</tr>
<tr>
<td>
<?php


Ну где на второй строке вывод?

Спустя 1 час, 29 минут, 5 секунд (28.07.2010 - 20:48) Kingcss написал(а):
Проблемму решил, подставив в файл index.php с самого начала session_start(); и все

Спустя 7 минут, 24 секунды (28.07.2010 - 20:56) Stiven Rain написал(а):
if (empry($log)) { echo "Такой профиль не существует"; }



Оператор empty проверяет на пустое значение. empry ошибка

Спустя 2 часа, 36 минут, 58 секунд (28.07.2010 - 23:32) Kingcss написал(а):
Ну если значение не найдено, то профиль не существует, все верно. У меня вопрос: Где лучше хранить новости, статьи,информацию о файлах. В mysql неохото хранить, т.к много текста и фото. Как лучше сделать?

Спустя 13 минут, 25 секунд (28.07.2010 - 23:46) Basili4 написал(а):
Саму инфу храни в файлах в базе храни имена файлов и структуру страниц
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.