Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RFpro.ru: Программирование на PHP


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

vladisslav
Статус: 5-й класс
Рейтинг: 903
∙ повысить рейтинг »
Палян Александр Михайлович
Статус: 5-й класс
Рейтинг: 208
∙ повысить рейтинг »
HookEst
Статус: Специалист
Рейтинг: 189
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / PHP

Номер выпуска:1173
Дата выхода:09.11.2009, 16:00
Администратор рассылки:Товарищ Бородин, Академик
Подписчиков / экспертов:627 / 183
Вопросов / ответов:1 / 1
IRC-канал по теме:#php

Вопрос № 173966: У меня такая проблема, на странице регистрации

Код:
   
Вопрос № 173966:

У меня такая проблема, на странице регистрации

Код:
<?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;

for(j=0; j<required.length; j++) {
for (i=0; i<document.forms[0].length; i++) {
if (document.forms[0].elements.name == required[j] && document.forms[0].elements[i].value == "" ) {
alert('Будьте бдительны: ' + required_show[j]);
document.forms[0].elements[i].focus();
return false;
}
}
}
//функция проверки м ыла
p_email = document.getElementById('regForm').mail.value.toString();
if (p_email != "") {
t = p_email.indexOf("@");
if((p_email.indexOf(".") == -1) || (t == -1) || (t < 1) || (t > p_email.length - 5) || (p_email.charAt(t - 1) == '.') || (p_email.charAt(t + 1) == '.')) {
alert("Некорректно указан E-mail !");
document.getElementById('regForm').mail.focus();
return false;
}
}
return true;



}

//-->

</script>
</HEAD>
<BODY>
<DIV class=bl id=bl-top>ВСОЛ Daily - фан-сайт on-line менеджера - www.virtualsoccer.ru</DIV>
<DIV class=bl id=bl-head>
<TABLE>
<TBODY>
<TR>
<TH noWrap align=left width=280><A href="index.php"><B>ВСОЛ Daily</B><BR>фан-сайт</A> </TH>
<TD align=middle width="100%">& lt;/TD>
<TD noWrap align=right width=500>Счёт для пожертвований и спонсорской помощи<br>/<span style=""color" : red; font-size: 18">Я</span>41001245927522 /</TD></TR></TBODY></TABLE></DIV>
<DIV class=bl style=""PADDING-RIGHT:" 0px; PADDING-LEFT: 0px; BACKGROUND: #fff; PADDING-BOTTOM: 5px; PADDING-TOP: 5px; TEXT-ALIGN: left">
<DIV style=""FLOAT:" right; MARGIN-RIGHT: 5px"></DIV>
 <B>Главред: <span style=""color" : red">TOK</B></span><br>
</DIV>
<!--//================================================-->
<DIV class=bl id=bl-main>
<TABLE>
<TBODY>
<TR>
<TD id=tb-main-c>

<!--//================================================================-->
<center>
<div id="div-regForm">
<div class="form-title"> ;РЕГИСТРАЦИЯ</div>
<?php
if(!$_POST['do'] OR $_POST['do'] =='') {
//Генерируем шестизначный ключ для капчи
if($_SESSION['uid'] =='') { $_SESSION['uid'] = mt_rand(100000,999999); }
echo '<div class="form-sub-title">Зарегистрируйся и наслаждайся!!!</div>
<form id="regForm" action="forma_register.php" method="post" onsubmit="return sendform();">
<table>
<tbody>
<tr>
<td><label for="name">Ваш логин:</label></td>
<td><div class="input-container"><input name="nick" id="nick" type="text" /></div></td>
</tr>
<tr>
<td><label for="password">Пароль:</label></td>
<td><div class="input-container"><input name="pass" id="pass" typ e="password" /></div></td>
</tr>
<tr>
<td><label for="password2">Подтвердите пароль:</label></td>
<td><div class="input-container"><input name="rpass" id="rpass" type="password" /></div></td>
</tr>
<tr>
<td><label for="email">Ваш Email:</label></td>
<td><div class="input-container"><input name="mail" id="mail" type="text" /></div></td>
</tr>
<tr>
<td><label for="komanda">Имя основной команды во ВСОЛе:</label></td>
<td><div class="input-container"><input name="komanda" id="komanda" type="text" /></div></td>
</tr>
<tr>
<td><img src="img/capcha/capcha.php?sid='.$_SESSION['uid'].'"/></td>
<td><div class="input-container"><input name="sid" id="sid" type="text" value="" /></div></td>
</tr>
<tr>
<td> </td>
<td><input name="do" type="submit" class="Button" value="Помчались..." /></td>
</tr>
</tbody>
</table>
</form>';
}
//Если данные отправлены
if($_POST['do'] !='') {
//Начинаем проверять входящие данные
if($_POST['sid'] == $_S ESSION['uid']) {

//Создаем запрос к базе для проверки существования Пользователя

$nick = $_POST['nick'];
mysql_query("SELECT * FROM users WHERE nick='".$nick."'");
//Проверка результата запроса

if(mysql_affected_rows()==0) {
//Проверка ввведенных паролей

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> ;';}


}
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 'Активация невозможна: профиль уже активирован';}

}?>

</center>
<!--//================================================================-->
</TD>
<TD id=tb-main-r>
<DIV class=menu>
<H4></H4>
<UL>
<LI><A href="index.php"><font size="+3">ВСОЛ Daily</font></A>
<LI>
<LI><A href="sigrannost.php">Сыгранность</A>
<LI><A href="http://dailyvsol.easyforum.ru/" TARGET="_blank">Форум</A>
<LI><A href="files/HelpVSOL_v.1.5(1.93Mb).exe">Скачать HelpVSOL_v.1.5(1.93Mb)</A>
</UL></DIV>
</TD></TR></TBODY></TABLE></DIV>
<DIV class=bl id=bl-sub>
<TABLE> ;
<TBODY>
<TR>
<TD noWrap></TD>
<TH width="100%">2009 © <A href="# ">VSOL
Daily</A></TH></TR></TBODY></TABLE></DIV>
</BODY></HTML>


при переходе по ссылкам на другие страницы вылазит такое ругательство

[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'])) {

if(get_magic_quotes_gpc()) { //Если слеши автоматически добавляются
$_POST['user']=stripslashes($_POST['user']);
$_POST['pass']=stripslashes($_POST['pass']);
}
$user = mysql_real_escape_string($_POST['user']);
$pass = md5($_POST['pass']);
if(login($user,$pass)) {
header('Refresh: 0');
die('Вы успешно авторизировались!');
}
else {
header('Refresh: 3;');
die('Пароль неправильный!');
}

}

##Действия при попытке выхода
if(isset($_GET['logout'])) {
logout();
}?>


Кстати, сам автор файла аутентификации тоже в растерянности:(

Отправлен: 04.11.2009, 15:43
Вопрос задал: vasja1601, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Selax, 5-й класс :
Здравствуйте, vasja1601.
Скорей всего у Вас в функции check_user() результат запроса ничего не возвращает и поэтому $sid = mysql_result($result, 0); возвращает первый Warning
Попробуйте переписать функцию как указано в приложении

Приложение:

Ответ отправил: Selax, 5-й класс
Ответ отправлен: 04.11.2009, 16:25

Оценка ответа: 5
Комментарий к оценке:
Вы просто Бог php!!!

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 256177 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.10 от 26.10.2009

    В избранное