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> </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 |
#2 · Zasláno: 16. 3. 2013, 22:10:18
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 |
#3 · Zasláno: 16. 3. 2013, 22:12:49
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 |
#4 · Zasláno: 17. 3. 2013, 18:50:26
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 |
#5 · Zasláno: 17. 3. 2013, 18:51:48
Polda7:
Hra nemůže vytáhnout pouze záznamy, kde je sloupec `aktivovano` roven "ano" ? |
||
Polda7 Profil |
#6 · Zasláno: 17. 3. 2013, 18:56:10
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 |
#7 · Zasláno: 17. 3. 2013, 19:02:45
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 |
#8 · Zasláno: 17. 3. 2013, 19:07:11
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.
|
||
Časová prodleva: 6 dní
|
|||
Polda7 Profil |
Tak už jsem to vyřešil, zde to můžete zamčít...
|
||
Časová prodleva: 11 let
|
0