<?php session_start(); include("include/user_register/functions.inc.php"); include_once("include/connectdb.php"); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD><TITLE>Виртуальная
футбольная лига - VSOL</TITLE> <META http-equiv=Content-Type content="text/html; charset=windows-1251"> <LINK media=screen href="index.css" type=text/css rel=stylesheet> <link rel="icon" href="favicon.ico" type="image/x-icon"> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"> <
META content="MSHTML 6.00.6000.16448" name=GENERATOR> <script language="javascript"> <!-- required = new Array("nick", "pass", "rpass", "mail", "komanda", "sid"); required_show = new Array("введите свой Логин!", "введите свой Пароль!","подтвердите свой Пароль!","введите свой E-mail!","введите название основной команды во ВСОЛе!", "введите контрольный
код!");
function sendform() { //функция проверки присутствия не заполненых полей var i, j;
if($_POST['pass'] !='' AND $_POST['rpass'] !='' AND $_POST['pass'] === $_POST['rpass']){ //Проверяем на валидность электронный
адрес if(checkmail($_POST['mail']) !== -1) {
//Осуществляем регистарацию //Генерируем uniq_id $uniq_id = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].mktime()); $pass = $_POST['pass']; $email = $_POST['mail']; $komanda = $_POST['komanda']; //Создаем запрос для записи данных в БД $r = "INSERT INTO users(nick, password, email, komanda, uniq_id, status, last_date, date) VALUES(
9;".$nick."','".md5($pass)."','".$email."','".$komanda."','".
$uniq_id."',0,'".date("dmY")."','".date("dmY")."')"; mysql_query ($r) or die (mysql_error());
//После запроса отправляем письмо юзеру, для активации аккаунта if($r) {
// Для отправки e-mail в виде HTML устанавливаем необходимый mime-тип и кодировку $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n";
// Откуда пришло $headers
.= 'From: Сайт www.daily-vsol.hut.ru' . "\r\n";
//Здесь укажите электронный адрес, куда будут уходить сообщения $mailto = $email; $subject = "Подтверждение регистарции на сайте"; $message = 'Для активации аккаунта пройдите по следующей ссылке <a href="http://www.daily-vsol.hut.ru/forma_register.php? activation='.$uniq_id.'" target="_blank">http://www.daily-vsol.hut.ru/forma
_register.php?activation='.$uniq_id.'</a>'; $message .= 'или скопируйте ссылку в окно ввода адреса браузера и нажмите enter.'; //Отправляем сообщение if(sendmail($mailto,$subject,$message,$headers) !== FALSE) { echo 'Регистрация завершена, на введеный Вами e-mail было отправлено сообщение для активации аккаунта'; } else {echo 'Регистрация невозможна: Повторите запрос позднее';} } else {echo 'Регистрация
невозможна: Повторите запрос позднее';} } else {echo 'Регистрация невозможна: Электронный адрес должен соответствовать шаблону <b>name@domen.com</b><br/><a href="forma_register.php"/>назад</a>';}
} else { echo 'Регистрация невозможна: Пользователь с таким именем уже существует<br/><a href="forma_register.php"/>назад</a>';}
session_destroy(); } else { echo 'Регистрация невозможна: код подтверждения введен не верно<br/><a href="forma_register.php"/>назад</a>';}
} //Модуль отвечающий за активацию аккаунта
if($_GET['activation']
AND $_GET['activation']!='') {
$uniq_id = $_GET['activation']; //Создаем запрос $r=mysql_query("UPDATE users SET status=1 WHERE uniq_id='".$uniq_id."' AND status=0"); if($r) {echo '<h2>Ваша учетная запись активирована.</h2><br/> Теперь вы можете войти на сайт используя данные
указанные при регистрации. <a href="index.php">На главн
ую</a>';}
else {echo 'Активация невозможна: профиль уже активирован';}
при переходе по ссылкам на другие страницы вылазит такое ругательство
[i]Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 6 in Z:\home\test1.ru\www\include\user_register\uni-auth.php on line 55
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\test1.ru\www\sigrannost.php:15)
in Z:\home\test1.ru\www\include\user_register\uni-auth.php on line 25
Я уже всё кажись перепробывал, но ничего не помогло. Подскажите как с этим бороться. Вот файл uni-auth.php
Код:
<?php /* Универсаль
ный скрипт авторизации. Используется сессии для хранения данных. Скрипт типа "всё-в-одном" - его необходимо включать в каждый файл для использования. Распространяется по лицензии BSD.
+Требования: +-Mysql & PHP5 +-Созданое подключение к MySQL и запущеная сессия =)
(c)2008 Vasilii B. Shpilchin */
##Определяем константы define('USERS_TABLE','users'); define('SID',session_id()); ##Определяем функции //Функция
выхода. //Пользователь считается авторизированым, если в сессии присутствует uid //см. "Действия - если пользователь авторизирован". function logout() { session_unregister('uid'); //Удаляем из сессии ID пользователя die(header('Location:'.$_SERVER['PHP_SELF'])); }
//Функция входа. //Все выбраные поля записываются в сессию. //Таким образом, при каждом просмотре страницы не надо выбирать их зан
ово. //Для обновления информации из БД можно пользоваться этой же функцией - имя и пароль //хранятся в сессиях function login($username,$password) { $result = mysql_query("SELECT * FROM `".USERS_TABLE."` WHERE `nick`='$username' AND `password`='$password';") or die(mysql_error()); $USER = mysql_fetch_array($result,1); //Генерирует удобный массив из результата запроса if(!empty($USER)) { //Если массив не пустой (это значит,
что пара имя/пароль верная) $_SESSION = array_merge($_SESSION,$USER); //Добавляем массив с пользователем к массиву сессии
mysql_query("UPDATE `".USERS_TABLE."` SET `sid`='".SID."' WHERE `uid`='".$USER['uid']."';") or die(mysql_error()); return true; } else { return false; } }
//Функция проверки залогинност
и пользователя. //При входе, ID сессии записывается в БД. //Если ID текущей сессии и SID из БД не совпадают, производится logout. //Благородя этому нельзя одновременно работать под одним ником с разных браузеров. function check_user($uid) { $result = mysql_query("SELECT `sid` FROM `".USERS_TABLE."` WHERE `uid`='$uid';"); $sid = mysql_result($result, 0); return $sid==SID ? true : false; }
##Действия - если пользователь авторизирован
if(isset($_SESSION['uid'])) { //Если была произведена авторизация, то в сессии есть uid
//Константу удобно проверять в любом месте скрипта define('USER_LOGGED',true); //Создаём удобные переменные //Все поля таблицы пользователей записываются в сесси (см. стр. 35-37) //Таким образом, после добавления нового поля в таблицу надо дописать лишь одну строку $UserName = $_SESSION['nick'];
$UserPass = $_SESSION['password']; $UserID = $_SESSION['uid']; } else { define('USER_LOGGED
9;,false); }
##Действия при попытке входа if (isset($_POST['login'])) {
Отвечает Selax, 5-й класс :
Здравствуйте, vasja1601. Скорей всего у Вас в функции check_user() результат запроса ничего не возвращает и поэтому $sid = mysql_result($result, 0); возвращает первый Warning Попробуйте переписать функцию как указано в приложении
Приложение:
Ответ отправил: Selax, 5-й класс
Ответ отправлен: 04.11.2009, 16:25
Оценка ответа: 5 Комментарий к оценке: Вы просто Бог php!!!
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 256177
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.