[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с запросами в БД.
quakes
Здравствуйте! Помогите пожалуйста!
Мне нужно устроить подключение к БД.
Из БД вытащить на страницу $uniq_id для активации аккаунта (чтоб везде отображалось).
Далее этот $uniq_id должно отобразиться в ссылке:
 
<a href="http://САЙТ/registration.php?activation='.$uniq_id.'">

Далее в БД послать что то типо этого:

$r=@mysql_query("UPDATE users SET status=1 WHERE uniq_id='".$uniq_id."' AND status=0");


Вот посмотрите на структуру в БД.


id nick password email uniq_id status

1 123 12345 12345@yahoo.com 7wbf83t8389ghgho38g03037ghh37saq 1
2 artem 12345 artem@yahoo.com 3c7057ebb24786ter14itjgfxnurux28 0
3 vasya 12 vasya@yahoo.com 53d43f01e0f 0


Тоесть при нажатии на ссылку
На странице должно отобразится примерно так:

Цитата

Привет artem!
Жми чтобы активировать аккаунт.
http://САЙТ/registration.php?activation=3c...14itjgfxnurux28


Вот. И при этом в БД значение status у Васи должно поменятся на 1!
Я программировал раньше на html, там всё намного проще. А вот здесь непонятно.
Очень прошу, помогите!
:(



Спустя 1 час, 24 минуты, 40 секунд (10.11.2010 - 06:40) phz написал(а):
Функция mysql_insert_id —Возвращает ID, сгенерированный при последнем INSERT-запросе.

Примерно:

При регистрации юзера (INSERT) узнаешь функцией mysql_insert_id последний id. Сразу к примеру функцией mail отправляешь юзеру ссылку на активацию.

INSERT ...

$id = mysql_insert_id();
$uniq_id = md5(time() . $id);

<a href="http://САЙТ/registration.php?activation='.$uniq_id.'">

mail()...

UPDATE WHERE ...

http://php.net/manual/en/function.mysql-insert-id.php
http://php.net/manual/en/function.mail.php

Спустя 14 часов, 13 минут, 30 секунд (10.11.2010 - 20:53) quakes написал(а):
Вот спасибо огромное... Может вы мне поможете с самим скриптом?:)
Вот сам скрипт. Просьба: Вытащите из него вот эту активацию аккаунта по email.
Просто после регистрации скрипт отправляет на email код подтверждения.
Я пытался вытащить, но всё равно не получилось.
Дело в том, что мне не нравится подтверждение по email. У меня php сайт для моб. телефонов, кто будет заходить на email и подтверждать аккаунт правильно? Тем более email может быть только такого вида name@domen.com.

<html>

<
head>

<
meta http-equiv="Content-Style-Type" content="text/css" />

<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<
title>Регистрация</title>

<
link rel="stylesheet"
href="http://сайт/style.css" type="text/css" />

</
head>


<?php
session_start();

@include("файл подкл. к БД");

@include("файл фильтрации домена");
$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)
or die("Не могу подключится к базе данных!" );

mysql_select_db($DB, $link) or die ('Не могу выбрать базу данных!');



if(!$_POST['do'] OR $_POST['do'] =='')
{
if($_SESSION['uid'] =='')
{ $_SESSION['uid'] = mt_rand(100000,999999);

}


echo '

<html>

<head>

<div class="main">

<div align="padding-left">

<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">

<span style="color:white">Регистрация</span></a>
</div>
<title>Регистрация</title></div>

</head>

<body>'
;
echo '
<form action="" method="post" enctype="multipart/form-data">'
;

echo '
Логин:<br />
<input name="nick" type="text" size="20" value=""><br />'
;

echo '
Пароль:<br />
<input name="pass" type="password" size="20" value=""><br />'
;

echo '
Повторите пароль:<br />
<input name="rpass" type="password" size="20" value=""><br />'
;

echo '
E-mail адрес:<br />
<input name="mail" type="text" size="20" value="">
<br /><br />'
;

echo '
<tr align="center">
<td colspan=2>
<img src="img/capcha.php?sid='
.$_SESSION['uid'].'"/><br/>
<input name="sid" type="text" value=""></td></tr>'
;

echo '<br><tr>
<td colspan=2 align="right">
<input name="do" type="submit" value="Регистрация"><br>'
;

echo '<span style="font-size:small; color:green;">
<a href="http://сайт/">Главная</a> ·
<a href="http://сайт/registration/index.php">Авторизоваться</a></span> ;</div>
<span style="font-size:x-small; color:green;">© 2010 Desing by ***</span></div>
</form>
</body>
</html>'
;





}
if($_POST['do'] !='')
{
if($_POST['sid'] == $_SESSION['uid'])
{

$nick = $_POST['nick'];

mysql_query("SELECT * FROM users WHERE nick='".strtolower($nick)."'");



if(mysql_affected_rows()==0)
{

if($_POST['pass'] !='' AND $_POST['rpass'] !='' AND $_POST['pass'] === $_POST['rpass'])

{
if(checkmail($_POST['mail']) !== -1)
{

$uniq_id = md5($_SERVER['REMOTE_ADDR'].
$_SERVER['HTTP_USER_AGENT'].mktime());

$pass = $_POST['pass'];

$email = $_POST['mail'];

$r = @mysql_query("INSERT INTO users VALUES(NULL,'".strtolower($nick)."','".md5($pass)."','".$email."','".$uniq_id."',0,'".date("dmY")."','".date("dmY")."')");


if($r) {


$headers = 'MIME-Version: 1.0' . "\r\n";

$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";


$headers .= 'From:Сайт %sitename%' . "\r\n";


$mailto = $email;

$subject = "Подтверждение регистрации на сайте";

$message = 'Для активации аккаунта пройдите по следующей ссылке
<a href="http://сайт/registration/registration.php?activation='
.$uniq_id.'" target="_blank">http://сайт/registration/registration.php?activation='.$uniq_id.'</a>';

$message .= 'или скопируйте ссылку в окно ввода адреса браузера и нажмите Enter.';

if(sendmail($mailto,$subject,$message,$headers) !== FALSE)



{echo '

<div class="main">

<div align="padding-left">

<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">

<span style="color:white">Регистрация</span></a></div>

<form action="" method="post" enctype="multipart/form-data">Регистрация завершена!<br>На введённый Вами E-mail было отправлено сообщение для активации аккаунта.
<br>
<a href="registration.php"/>Назад</a></div></form>'
;





}
else
{echo '

<div class="main">

<div align="padding-left">

<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">

<span style="color:white">Ошибка</span></a></div>

<form action="" method="post" enctype="multipart/form-data">Регистрация невозможна! <br>Повторите запрос позднее!<br/>

<a href="registration.php"/>Назад</a></div></form>'
;

}



}

else
{echo '

<div class="main">

<div align="padding-left">

<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">

<span style="color:white">Ошибка</span></a></div>

<form action="" method="post" enctype="multipart/form-data">Регистрация невозможна! <br>Повторите запрос позднее!<br/>

<a href="registration.php"/>Назад</a></div></form>'
;
}





}

else
{echo '

<div class="main">

<div align="padding-left">

<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">

<span style="color:white">Ошибка</span></a></div>

<form action="" method="post" enctype="multipart/form-data">
Регистрация невозможна!
<br>Электронный адрес должен соответствовать шаблону <b>name@domen.com</b>

<a href="registration.php"/>Назад</a></div></form>'
;
}

}
else {echo '
<div class="main">
<div align="padding-left">
<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">
<span style="color:white">Ошибка</span></a></div>
<form action="" method="post" enctype="multipart/form-data">Регистрация невозможна! <br>Введенные пароли не совпадают!
<br/><a href="registration.php"/>Назад</a></div></form>'
;}



}
else { echo '
<div class="main">
<div align="padding-left">
<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">
<span style="color:white">Ошибка</span></a></div>
<form action="" method="post" enctype="multipart/form-data">Регистрация невозможна! <br>Пользователь с таким именем уже существует!<br/>
<a href="registration.php"/>Назад</a></div></form>'
;}


session_destroy();

}else { echo '
<div class="main">
<div align="padding-left">
<div style="text-align: padding-left;padding-top:1px;padding-bottom:3px;background-color:#008000;color:white;">
<span style="color:white">Ошибка</span></a></div>
<form action="" method="post" enctype="multipart/form-data">Регистрация невозможна!
<br>Код подтверждения введен не верно!
<br/><a href="registration.php"/>Назад</a></div></form>'
;}


}


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 'Активация уже подтверждена.';}

}

?>



Далее вот файл фильтровки email.
Как в нём изменить фильтрацию, чтоб все email поддерживались а не только name@domain.com.


<?
function
checkmail($mail) {
$mail=trim($mail);
if (strlen($mail)==0) return -1;
if (!preg_match("/^[a-z0-9_-]{1,20}+(\.){0,2}+([a-z
0-9_-]){0,5}@(([a-z0-9-]+\.)+(com|net|org|mil|"
.
"edu|gov|arpa|info|biz|inc|name|
[a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-"
.
"9]{1,3}\.[0-9]{1,3})$/is",$mail))
return -1;
return $mail;
}
function sendmail($mail,$subject,$message,$headers)
{
if(mail($mail,$subject,$message,$headers))
{ return TRUE;}
else {return FALSE;}
}

?>




Вот и всё что нужно. Должно получится что уберётся подтверждение по email и фильтрация email должна быть, но разные домены.
Думаю скрипт index.php вам показывать не стоит.

Вот скрипт подключения к БД.
Как видно то он include к выше описанным скриптам.


<?
$DBSERVER = "localhost";
$DBUSER = "user";
$DBPASS = "pass";
$DB = "dbname";
?>



Вообщем вот. Скрипт работает, всё в порядке.

Спустя 5 часов, 22 минуты, 9 секунд (11.11.2010 - 02:15) quakes написал(а):
Всё, спасибо разобрался!
Быстрый ответ:

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