регистрация в нескольких бд

Тема в разделе "Базы данных", создана пользователем irmscher, 6 июл 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. irmscher

    irmscher Создатель

    Регистр.:
    13 авг 2008
    Сообщения:
    37
    Симпатии:
    0
    Здраствуйте, подскажите возможно ли сделать так, чтобы при регистрации введенная юзером информация сохранялась в 3-х бд. (без объединения всех баз в одну)

    Имеется 3 сайта на денвере сайт1 сайт2 и сайт3 и базы база1 база2 и база3.

    в базе1 есть таблица users1 в ней строки userName1 и password1
    в базе2 есть таблица users2 в ней строки userName2 и password2
    в базе3 есть таблица users3 в ней строки userName3 и password3

    как сделать так чтобы при регистрации введенный юзером логин сохранялся сразу в разных бд соответственно userName1 userName2 userName3 и пароли соответственно. т.е. чтобы юзер мог 1 раз зарегится и использовать свои данные на трех сайтах.
     
  2. WorldsSpawn

    WorldsSpawn Создатель

    Регистр.:
    30 мар 2009
    Сообщения:
    15
    Симпатии:
    12
    PHP:
    $db1 mysql_connect ('localhost','root','');
    mysql_select_db('base1'$db1);

    $db2 mysql_connect ('localhost','root','');
    mysql_select_db('base2'$db2);

    $db3 mysql_connect ('localhost','root','');
    mysql_select_db('base3'$db3);


    mysql_query('запрос',$db1);
    mysql_query('запрос',$db2);
    mysql_query('запрос',$db3);

    Примерно так можно)
     
    irmscher нравится это.
  3. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Для уменьшения захламленности БД и дублирования информации идельано было бы иметь только одну таблицу с юзерами и обращаться к ней с каждого из сайтов.
     
  4. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102

    есть подозрение что тс хочет сделать зеркала на случай того же ддоса, а здесь без разнесения баз никак не обойтись
     
  5. irmscher

    irmscher Создатель

    Регистр.:
    13 авг 2008
    Сообщения:
    37
    Симпатии:
    0
    просто хотелось бы организовать единую регистрацию для всех сайтов, а на самих этих сайтах ее отключить. Чтобы была общая возможность управления юзерами. н-р если бан то сразу на всех сайтах

    Добавлено через 54 минуты
    Подскажите пожалуйста где ошибка
    Код:
    <?
    $db1 = mysql_connect ('localhost','root',''); 
    mysql_select_db('indexsite', $db1); 
    $db2 = mysql_connect ('localhost','root',''); 
    mysql_select_db('testsite1', $db2); 
    $db3 = mysql_connect ('localhost','root',''); 
    mysql_select_db('testsite2', $db3);
    $db4 = mysql_connect ('localhost','root',''); 
    mysql_select_db('testsite3', $db4); 
    if (($_POST['login']!='') || 
        ($_POST['pass1']!='') || 
        ($_POST['pass2']!='') || 
        ($_POST['email']!='')) { // если все данные для регистрации введены, то продолжаем
        $pass1 = $_POST['pass1'];
        $pass2 = $_POST['pass2'];
        if (strcmp($pass1, $pass2) == 0) {// если пароли совпадают, то продолжаем
          $login = $_POST['login'];
          $email = $_POST['email'];
          //проверяем наличие в БД пользователя с логином $login
          $sql='SELECT * FROM users WHERE login='.$login; // поиск по логину в таблице users
          if (!($res=mysql_query($sql)) || (mysql_num_rows($res) == 0)) { // если количество найденых записей ноль, то продолжаем
    	  // sql-скрипт для добавления даных в таблицу
    $sql1 = 'INSERT INTO users(login, pass, email) 
    		  VALUES("'.$login.'", "'.$pass1.'", "'.$email.'")';
    $sql2 = 'INSERT INTO users(login, pass, email) 
    		  VALUES("'.$login.'", "'.$pass1.'", "'.$email.'")';
    $sql3 = 'INSERT INTO users(login, pass, email) 
    		  VALUES("'.$login.'", "'.$pass1.'", "'.$email.'")';
    $sql4 = 'INSERT INTO users(login, pass, email) 
    		  VALUES("'.$login.'", "'.$pass1.'", "'.$email.'")';
    mysql_query('$sql1',$db1); 
    mysql_query('$sql2',$db2); 
    mysql_query('$sql3',$db3); 
    mysql_query('$sql4',$db4);
    if(mysql_query($sql)) {// выполняем скрипт
    	    echo 'Пользователь '.$_POST['login'].' успешно зарегистрирован! <a href="index.php">Форма для входа</a>.';
    	  } else {
    	    echo 'При регистрации произошла ошибка, <a href="register.php">повторите попытку</a>.';
    	  }
    	} else echo 'Пользователь с таким логином уже зарегистрирован!';
        } else echo 'Введенные пароли не совпадают, <a href="/register.php">повторите попытку</a>.';
    } else {
    ?>
      <form method='post' action='register.php'>
      Введите Логин: <input type='text' size='30' name='login' /><br />
      Введите e-mail: <input type=text size=30 name='email' /><br />
      Пароль: <input type='password' name='pass1' size='30' /><br />
      Повторите пароль: <input type='password' name='pass2' size='30' /><br />
      <input type='submit' value='Регистрация' />
    <?  
    }
    ?>
    
    после того как исправил ...WHERE login="'.$login.'"'; // поиск по ... по совету jo0o00nyy регистрация проходит. пишет "Пользователь USER успешно зарегистрирован! Форма для входа." но в таблицах с юзерами по прежнему пусто
     
  6. jo0o00nyy

    jo0o00nyy Постоялец

    Регистр.:
    12 май 2010
    Сообщения:
    65
    Симпатии:
    27
    Можно только догадываться где ошибка и какого хар-тера она... но предположу, что в "mysql_query($sql)". Раз используете мульти-подключение к БД, то для "простых" запросов тоже необходимо выбирать с какой БД соединяться.
     
  7. irmscher

    irmscher Создатель

    Регистр.:
    13 авг 2008
    Сообщения:
    37
    Симпатии:
    0
    indexsite я использую как простой сайт на котором производится регистрация для разных движков. Я не уверен, что для него нужна своя база, но сделал ее для того, чтобы юзеры не регились под одинаковми именами. т.е.:

    Код:
     //проверяем наличие в БД пользователя с логином $login
          $sql='SELECT * FROM users WHERE login='.$login; // поиск по логину в таблице users
          if (!($res=mysql_query($sql)) || (mysql_num_rows($res) == 0)) { // если количество найденых записей ноль, то продолжаем
    
    поиск имен юзеров производится по ней
    остальные базы testsite1 testsite2 testsite3 это базы допустим форума блога и чата.

    Подскажите пожалуйста как правильно сделать sql запросы
     
  8. jo0o00nyy

    jo0o00nyy Постоялец

    Регистр.:
    12 май 2010
    Сообщения:
    65
    Симпатии:
    27
    Кстати о птичках, тут значение $login в запросе к мускулю не экранировано.
    ...WHERE login='.$login; // поиск по ...
    ...WHERE login="'.$login.'"'; // поиск по ...

    Код:
    //проверяем наличие в БД пользователя с логином $login
          $sql='SELECT * FROM users WHERE login='.$login; // поиск по логину в таблице users
          if (!($res=mysql_query($sql)) || (mysql_num_rows($res) == 0)) { // если количество найденых записей ноль, то продолжаем
     
    irmscher нравится это.
  9. irmscher

    irmscher Создатель

    Регистр.:
    13 авг 2008
    Сообщения:
    37
    Симпатии:
    0
    Подскажите пожалуйста где ошибка. В Php знания не очень хорошие. Как можно это все реализовать?
     
  10. MadWizard

    MadWizard Постоялец

    Регистр.:
    24 мар 2009
    Сообщения:
    145
    Симпатии:
    20
    Код:
    mysql_query($sql1,$db1); 
    mysql_query($sql2,$db2); 
    mysql_query($sql3,$db3); 
    mysql_query($sql4,$db4);
     
Статус темы:
Закрыта.