![]() |
Показаны 13 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Идентификация пользователя (http://netadmin.ws/forum/showthread.php?threadid=6179)
Идентификация пользователя
Народ, я чего то торможу... не могу придумать как сделать subj.
Задача такова: Есть голосование, нужно запретить пользователю голосовать 2жды... (желательно без регистрации)
Можно как нить проверить вводимое мыло на "реальность"?
__________________
Админ - вождь Апачей...
subj:
куки
сессии
__________________
RTFM (Уважаемые! Читайте документацию!)
Orliha ну это и ежу ... как говориться... 
А если пользователь удалит куку? он проголосует 2ой раз?..
__________________
Админ - вождь Апачей...
Не!!!
Сессии тут не как не помогут - говоришь же без регистрации!
Первый метод - действительно задать кууку которая бы запрещала это! Токо сделать её надо скрытой - чтоб чел не знал о ней!
2 - это записывать IP в базу! если такой IP уже есть в базе - запретить голосование!
не, ну куку в любом случае удалить можно, но все равно ровно два варианта:
кукис и айпи - лучше вместе.
правда все равно можно через прокси зайти (или по модему у людей разные айпи частенько) - на сто процентов не защитишся.. )
__________________
RTFM (Уважаемые! Читайте документацию!)
he][es
пользователь вводит емаил и свой выбор, ему на мыло приходит ссылка которая реально засчитывает его голос когда он ее нажмет
лучше это совместить с куками и ip провекрой тогда почти невозможно подделывать голоса (если конечно не регистрировать левые емайлы, но тут уж ничем не поможешь)
__________________
http://simpsons.ykt.ru - русский портал о Симпсонах
Kfmook
Для пользователя это создает большое неудобство. Ð_ади голосования нужно оставлять свой e-mail. ИМХО голосовать в таком случае мало кто будет. Зачем это надо. Вот реальный совет - это куки и ip вместе. Так что не ломайте голову и используется, как посоветовали.
__________________
Gets.ru - Компьютерный Портал
Minister
смотря какое голосование, естественно если это простой опрос то там и подделывать голоса никто не будет, а если это определение чего-нибудь лучшего (напимер лучшей фотографии) то тут уже все не так просто
да и сам he][es написал:
quote:
Можно как нить проверить вводимое мыло на "реальность"?
__________________
http://simpsons.ykt.ru - русский портал о Симпсонах
Kfmook это конечно способ, но не совсем удобный, вот если бы действительно можно было какнить определить (без высылания письма) реальность введенного мыла....
А вариант с IP не подходит, хотя бы из-за 80-90% юзеров с модема... 
Пока что вариант с высылкой на мыло ссылки единственный... Но посудите сами, Вы бы стали голосовать в таком случае???
Суть в том что это будет конкурс красоты... Тема заманчивая.. т.что может и станут голосовать...
А регистрацию как то не охота делать...
Или как вы думаете? Может не париться и сделать регистрацию с высылкой на мыло???
__________________
Админ - вождь Апачей...
// Validate emails...
function SnowCheckMail($Email,$Debug=false)
{
global $system_os;
$HTTP_HOST=$_SERVER['SERVER_NAME'];
$Return =array();
// Variable for return.
// $Return[0] : [true|false]
// $Return[1] : Processing result save.
// if (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $Email)) {
//Fix by suilinma
if (!eregi("^[-_a-z0-9]+(.[-_a-z0-9]+)*@([-a-z0-9]+.)*([a-z]{2,4})$", $Email)) {
$Return[0]=false;
$Return[1]="${Email} is E-Mail form that is not right.";
if ($Debug) echo "Error : {$Email} is E-Mail form that is not right.<br>";
return $Return;
}
else if ($Debug) echo "Confirmation : {$Email} is E-Mail form that is right.<br>";
$Return[0]=true;
$Return[1]="{$Email} is E-Mail address that there is no any problem.";
// E-Mail @ by 2 by standard divide. if it is $Email this "lsm@ebeecomm.com"..
// $Username : lsm
// $Domain : ebeecomm.com
// list function reference : http://www.php.net/manual/en/function.list.php
// split function reference : http://www.php.net/manual/en/function.split.php
list ( $Username, $Domain ) = split ("@",$Email);
if($system_os == 'windows') return $Return;
// That MX(mail exchanger) record exists in domain check .
// checkdnsrr function reference : http://www.php.net/manual/en/function.checkdnsrr.php
if ( checkdnsrr ( $Domain, "MX" ) ) {
if($Debug) echo "Confirmation : MX record about {$Domain} exists.<br>";
// If MX record exists, save MX record address.
// getmxrr function reference : http://www.php.net/manual/en/function.getmxrr.php
if ( getmxrr ($Domain, $MXHost)) {
if($Debug) {
echo "Confirmation : Is confirming address by MX LOOKUP.<br>";
for ( $i = 0,$j = 1; $i < count ( $MXHost ); $i++,$j++ ) {
echo " Result($j) - $MXHost[$i]<BR>";
}
}
}
// Getmxrr function does to store MX record address about $Domain in arrangement form to $MXHost.
// $ConnectAddress socket connection address.
$ConnectAddress = $MXHost[0];
}
else {
// If there is no MX record simply @ to next time address socket connection do .
$ConnectAddress = $Domain;
if ($Debug) echo "Confirmation : MX record about {$Domain} does not exist.<br>";
}
// fsockopen function reference : http://www.php.net/manual/en/function.fsockopen.php
$Connect = fsockopen ( $ConnectAddress, 25 );
// Success in socket connection
if ($Connect)
{
if ($Debug) echo "Connection succeeded to {$ConnectAddress} SMTP.<br>";
// Judgment is that service is preparing though begin by 220 getting string after connection .
// fgets function reference : http://www.php.net/manual/en/function.fgets.php
if ( ereg ( "^220", $Out = fgets ( $Connect, 1024 ) ) ) {
// Inform client's reaching to server who connect.
fputs ( $Connect, "HELO $HTTP_HOST\r\n" );
if ($Debug) echo "Run : HELO $HTTP_HOST<br>";
$Out = fgets ( $Connect, 1024 ); // Receive server's answering cord.
// Inform sender's address to server.
fputs ( $Connect, "MAIL FROM: <{$Email}>\r\n" );
if ($Debug) echo "Run : MAIL FROM: <{$Email}><br>";
$From = fgets ( $Connect, 1024 ); // Receive server's answering cord.
// Inform listener's address to server.
fputs ( $Connect, "RCPT TO: <{$Email}>\r\n" );
if ($Debug) echo "Run : RCPT TO: <{$Email}><br>";
$To = fgets ( $Connect, 1024 ); // Receive server's answering cord.
// Finish connection.
fputs ( $Connect, "QUIT\r\n");
if ($Debug) echo "Run : QUIT<br>";
fclose($Connect);
// Server's answering cord about MAIL and TO command checks.
// Server about listener's address reacts to 550 codes if there does not exist
// checking that mailbox is in own E-Mail account.
if ( !ereg ( "^250", $From ) || !ereg ( "^250", $To )) {
$Return[0]=false;
$Return[1]="${Email} is address done not admit in E-Mail server.";
if ($Debug) echo "{$Email} is address done not admit in E-Mail server.<br>";
return $Return;
}
}
}
// Failure in socket connection
else {
$Return[0]=false;
$Return[1]="Can not connect E-Mail server ({$ConnectAddress}).";
if ($Debug) echo "Can not connect E-Mail server ({$ConnectAddress}).<br>";
return $Return;
}
$Return[0]=true;
$Return[1]="{$Email} is E-Mail address that there is no any problem.";
return $Return;
}
__________________
http://simpsons.ykt.ru - русский портал о Симпсонах
Нда.. Не скрипт а...
Проверка у него презабавнейшая =))
Если аутентификация на сервере "правильная" то он работает...
Ни у кого больше ничего нет?
__________________
Админ - вождь Апачей...
Господа, с такой проверкой, вы фиг что-нить проверите. Если только finger-ом, а это не всегда включенно на серверах. А тот же сендмыло даже если ему подставить левый адрес в rcpt to: сожрет его и не скажет реальный он или нет. Лишь посли посылки письма он убедиться что User unknown. Так шта эта маза не катит. Вариант с регистрацией куда лучше и проще, чем все эти навороты. А потом закрывать по сессии+IP+кукки. Более навороченного ещё ИМХО никто не придумал.
__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg
ExcErr вот и у меня такое же мнение складывается...
__________________
Админ - вождь Апачей...
| Формат времени GMT. Текущее время 10:28. | Показаны 13 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.