Autor Zpráva
Polda7
Profil
Zdravím, mám script na registraci uživatelů. Když se někdo zaregistruje tak ho to zapíše do dočasné tabulky "login_doc" a příjde mu na email aktivační link, ten jak potvrdí, tak jeho záznam z tabulky "login_doc" přesune do tabulky "login_akt" a tak má účet aktivovaný.

"login_doc" a "login_akt" jsou úplně stejné.

A já potřebuji aby ho to duplikovalo i do jiné druhé tabulky, která má ale jiné parametry.

"login_akt" obsahuje (id, username, fullname, password, email, activate, code).

a druhá tabulka, do které ho to má duplikovat obsahuje (ID, user_login, user_pass, user_nicename, user_email, user_url, user_registred, user_activation_key, user_status, display_name).

Zde přikládám script:

<?php
$mysql_server = 'server';
$mysql_username = 'username';
$mysql_password = 'heslo';
$mysql_database = 'databaze';
$mysql_table = 'login_doc';
$success_page = '';
$error_message = "";
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['form_name'] == 'signupform')
{
   $newusername = $_POST['username'];
   $newemail = $_POST['email'];
   $newpassword = $_POST['password'];
   $confirmpassword = $_POST['confirmpassword'];
   $newfullname = $_POST['fullname'];
   $website = $_SERVER['HTTP_HOST'];
   $script = $_SERVER['SCRIPT_NAME'];
   $timestamp = time();                                                    
   $code = md5($website.$timestamp.rand(100000, 999999));
   if ($newpassword != $confirmpassword)
   {
      $error_message = 'Password and Confirm Password are not the same!';
   }
   else
   if (!preg_match("/^[A-Za-z0-9_!@$]{1,50}$/", $newusername))
   {
      $error_message = 'Username is not valid, please check and try again!';
   }
   else
   if (!preg_match("/^[A-Za-z0-9_!@$]{1,50}$/", $newpassword))
   {
      $error_message = 'Password is not valid, please check and try again!';
   }
   else
   if (!preg_match("/^[A-Za-z0-9_!@$.' &]{1,50}$/", $newfullname))
   {
      $error_message = 'Fullname is not valid, please check and try again!';
   }
   else
   if (!preg_match("/^.+@.+\..+$/", $newemail))
   {
      $error_message = 'Email is not a valid email address. Please check and try again.';
   }
   if (empty($error_message))
   {
      $db = mysql_connect($mysql_server, $mysql_username, $mysql_password);
      if (!$db)
      {
         die('Failed to connect to database server!<br>'.mysql_error());
      }
      mysql_select_db($mysql_database, $db) or die('Failed to select database<br>'.mysql_error());
      $sql = "SELECT username FROM ".$mysql_table." WHERE username = '".$newusername."'";
      $result = mysql_query($sql, $db);
      if ($data = mysql_fetch_array($result))
      {
         $error_message = 'Username already used. Please select another username.';
      }
   }
   if (empty($error_message))
   {
      $crypt_pass = md5($newpassword);
      $newusername = mysql_real_escape_string($newusername);
      $newemail = mysql_real_escape_string($newemail);
      $newfullname = mysql_real_escape_string($newfullname);
      $sql = "INSERT `".$mysql_table."` (`username`, `password`, `fullname`, `email`, `active`, `code`) VALUES ('$newusername', '$crypt_pass', '$newfullname', '$newemail', 0, '$code')";
      $result = mysql_query($sql, $db);
      mysql_close($db);
      $subject = 'Your new account';
      $message = 'A new account has been setup.';
      $message .= "\r\nUsername: ";
      $message .= $newusername;
      $message .= "\r\nPassword: ";
      $message .= $newpassword;
      $message .= "\r\n";
      $message .= "\r\nhttp://".$website.$script."?user=".$newusername."&code=$code";
      $header  = "From: webmaster@yourwebsite.com"."\r\n";
      $header .= "Reply-To: webmaster@yourwebsite.com"."\r\n";
      $header .= "MIME-Version: 1.0"."\r\n";
      $header .= "Content-Type: text/plain; charset=utf-8"."\r\n";
      $header .= "Content-Transfer-Encoding: 8bit"."\r\n";
      $header .= "X-Mailer: PHP v".phpversion();
      mail($newemail, $subject, $message, $header);
      header('Location: '.$success_page);
      exit;
   }
}
else
if (isset($_GET['code']) && isset($_GET['user']))
{
   $db = mysql_connect($mysql_server, $mysql_username, $mysql_password);
   if (!$db)
   {
      die('Failed to connect to database server!<br>'.mysql_error());
   }
   mysql_select_db($mysql_database, $db) or die('Failed to select database<br>'.mysql_error());
   $sql = "SELECT * FROM ".$mysql_table." WHERE username = '".$_GET['user']."' AND code = '".$_GET['code']."'";
   $result = mysql_query($sql, $db);
   if ($data = mysql_fetch_array($result)) 
   {
      $uzivatel = $_GET['user'];
      $sql = "INSERT INTO `login_akt` (SELECT * FROM `login_doc` WHERE `username` = '".$uzivatel."')";
      $sql2 = "UPDATE `login_akt` SET `active` = 1 WHERE `username` = '".$uzivatel."'";
      $sql3 = "UPDATE `login_akt` SET `code` = 'NA' WHERE `username` = '".$uzivatel."'";
      mysql_query($sql, $db);
      mysql_query($sql2, $db);
      mysql_query($sql3, $db);
   }
   else
   {
      die ('User not found!');
   }
   mysql_close($db);
   header("refresh:5;url=".basename(__FILE__));
   echo 'Your user account was succesfully activated. You\'ll be redirected in about 5 secs. If not, click <a href="'.basename(__FILE__).'">here</a>.';
   exit;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Untitled Page</title>
<meta name="generator" content="">
<style type="text/css">
body
{
   background-color: #FFFFFF;
   color: #000000;
}
</style>
<style type="text/css">
a
{
   color: #C8D7EB;
   text-decoration: underline;
}
a:visited
{
   color: #C8D7EB;
}
a:active
{
   color: #C8D7EB;
}
a:hover
{
   color: #376BAD;
   text-decoration: underline;
}
</style>
<style type="text/css">
.signupform_table
{
   background-color: #EDF2F8;
   border-color:#BBCEE6;
   border-width:1px;
   border-style: solid;
   color: #376BAD;
   font-family: Arial;
   font-size: 13px;
   text-align: right;
   border-spacing: 4px;
}
.signupform_header
{
   background-color: #BBCEE6;
   color: #376BAD;
   text-align: center;
}
.signupform_text
{
   background-color: #FFFFFF;
   border-color: #BBCEE6;
   border-width: 1px;
   border-style: solid;
   color: #376BAD;
   font-family: Arial;
   font-size: 13px;
}
.signupform_button
{
   background-color: #FFFFFF;
   border-color: #BBCEE6;
   border-width: 1px;
   border-style: solid;
   color: #376BAD;
   font-family: Arial;
   font-size: 13px;
}
</style>
</head>
<body>
<div id="wb_Signup1" style="position:absolute;left:506px;top:224px;width:275px;height:202px;text-align:right;z-index:0;">
<form name="signupform" method="post" action="<?php echo basename(__FILE__); ?>" id="signupform">
<input type="hidden" name="form_name" value="signupform">
<table class="signupform_table" style="width:275px;height:202px;">
<tr>
   <td class="signupform_header" colspan="2" style="height:20px;">Sign up for a new account</td>
</tr>
<tr>
   <td style="height:20px">Full Name:</td>
   <td style="text-align:left"><input class="signupform_text" name="fullname" type="text" id="fullname" style="width:150px;height:18px;"></td>
</tr>
<tr>
   <td style="height:20px">User Name:</td>
   <td style="text-align:left"><input class="signupform_text" name="username" type="text" id="username" style="width:150px;height:18px;"></td>
</tr>
<tr>
   <td style="height:20px;">Password:</td>
   <td style="text-align:left"><input class="signupform_text" name="password" type="password" id="password" style="width:150px;height:18px;"></td>
</tr>
<tr>
   <td style="height:20px">Confirm Password:</td>
   <td style="text-align:left"><input class="signupform_text" name="confirmpassword" type="password" id="confirmpassword" style="width:150px;height:18px;"></td>
</tr>
<tr>
   <td style="height:20px">E-mail:</td>
   <td style="text-align:left"><input class="signupform_text" name="email" type="text" id="email" style="width:150px;height:18px;"></td>
</tr>
<tr>
   <td colspan="2"><?php echo $error_message; ?></td>
</tr>
<tr>
   <td>&nbsp;</td><td style="text-align:left;vertical-align:bottom"><input class="signupform_button" type="submit" name="signup" value="Create User" id="signup" style="width:90px;height:20px;"></td>
</tr>
</table>
</form>
</div>
</body>
</html>

Doufám, že mi někdo poradí.... Předem děkuji.
Kajman
Profil
Těžko říci, co chcete v druhé tabulce dávat do sloupců, které nejsou v první tabulce, ale mohlo by to jít takto nějak...
INSERT INTO druhatabulka
            (id,
             user_login,
             user_pass,
             user_nicename,
             user_email,
             user_url,
             user_registred,
             user_activation_key,
             user_status,
             display_name)
SELECT id,
       username,
       password,
       fullname,
       email,
       NULL,
       Now(),
       code,
       activate,
       username
FROM   `login_akt`
WHERE  `username` = '$uzivatel'
Someone
Profil
Kód jsem nestudoval, ale přijde mi zbytečné mít kvůli aktivaci dvě tabulky. Stačí mít sloupce `aktivovano` s hodnotami 'ano', 'ne' a při registraci nechat defaultní ne a po aktivaci změnit na 'ano'
Polda7
Profil
Kajman: Tak jsem to zkoušel, ale nefunguje to, i po mých úpravách. Do těch sloupců se nic dávat nemusí, jde mi hlavně o to ID, username a password.

Someone: Ty dvě tabulky musím mít, pač z té databáze načítá data i hra.
Someone
Profil
Polda7:
Hra nemůže vytáhnout pouze záznamy, kde je sloupec `aktivovano` roven "ano" ?
Polda7
Profil
Someone: No ono je to trošku složitější, jde o hru minecraft, ale ten plugin to nepozná jestli je aktivován účet nebo ne. Plugin bere pouze username a password.
Someone
Profil
Polda7:
Ten plugin ale musí ta data vytáhnout nějakým dotazem ne? Pak stačí ten dotaz upravit tak, aby vytáhnul pouze ty řádky, které mají `aktivovano` = "ano"
Polda7
Profil
Someone: To je pravda, ale ten plugin je napsaný v javě a nedá se nijak upravit, už jsem to zkoušel i decompilovat a nepodařilo se.
Polda7
Profil
Tak už jsem to vyřešil, zde to můžete zamčít...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0