2013-10-09 1 views
0

Этот вопрос, к сожалению, довольно специфичен в том, что я могу/не нуждаюсь в Joomla! специалист, который поможет мне в этом (надеюсь, что я этого не сделаю, и кто-то с хорошим знанием php/mysql может помочь).Создайте пользователя, когда я отправлю форму

http://pastebin.com/JRhNB4EP - Мне пришлось поместить мой код в pastebin, потому что файл довольно проклятый, и я не хотел наводнять эту страницу кодом.

Так что позвольте мне объяснить, что делает форма: это позволяет пользователям создавать листинг под выбранным типом бизнеса, но то, что мне нужно реализовать, заключается в том, что после отправки формы он создает пользователя в ACL «Registered» и случайным образом генерирует пароль. Имя пользователя будет электронной почтой, которую они предоставили. Затем эта информация будет отправлена ​​на отправленное письмо.

Я смотрел на помощь в течение пары дней (обычно через пару часов здесь и там в течение дня), но, поскольку вопрос настолько конкретный, я не сталкивался с чем-либо, что было ясно.

Любая помощь/указатели/ссылки, которые могут указывать на меня в правильном направлении, будут очень благодарны! Заранее спасибо.

+0

Это может быть какими-то помочь вам: http://stackoverflow.com/questions/1904809/how-can-i-create-a-new-joomla -user-account-from-in-a-script – Lodder

+0

Отъезд: http://tutorialzine.com/2013/08/simple-registration-system-php-mysql/ & http://www.infosearchshop.com/56 -php-registration-form-php-registration-script-with-mysql –

ответ

0

Нечто подобное .. Но вы получите идею:

HTML код:

<html> 
<head> 
<title>Registration </title> 
</head> 
<body> 
<form name="reg_form" id="reg_form" method="post" action="confirm.php"> 
<table> 
<tr><td colspan="2"><?php echo isset($_GET["msg"])?$_GET["msg"]:"";?> </td></tr> 
<tr><td>Username</td><td><input type="text" name="username" id="username" /> </td></tr> 
<tr><td>Password</td><td><input type="password" name="password" id="password" /> </td></tr> 
<tr><td>confirm</td><td><input type="password" name="confirm" id="confirm" /> </td></tr> 

<tr><td></td><td><input type="submit" name="btnsubmit" id="btnsubmit" /></td></tr> 
</table> 
</form> 
</body> 
</html> 

PHP код быть выполнен по форме представить

<?php 

$username=isset($_POST["username"])?$_POST["username"]:""; 

$password=isset($_POST["password"])?$_POST["password"]:""; 

$confirm=isset($_POST["confirm"])?$_POST["confirm"]:""; 

if(!empty($username)&&!empty($password)){ 

if($password!=$confirm) 
header("location:registration.php?msg=Password does not be match."); 

$host="localhost"; 

$user="mysql_user_name"; 

$pass="mysql_password"; 

///open connection 
$link=mysql_connect($host,$user,$pass) or die(mysql_error()); 

mysql_select_db("databse_name",$link); 

$query="SELECT * FROM users WHERE username='".mysql_escape_string($username)."'"; 

$result=mysql_query($query); 

//count no of rows 
$count=mysql_num_rows($result); 

if($count==1){ 
header("location:registration.php?msg=username already exists"); 
}else{ 

$qry="INSERT INTO users(username,password)VALUES('".mysql_escape_string($username)."' 
,'".mysql_escape_string($password)."')"; 

mysql_query($qry); 

//Sending mail part goes here 

echo "You are successfully registered."; 
} 

mysql_close($link); 
}else{ 
header("location:registration.php?msg=Username or password cannot be blank."); 
} 
+0

PHP-функции mysql_ * устарели. Я бы не использовал их в новом проекте, таком как это. – Devin

+0

Это для Joomla, а не для PHP – Lodder

0

Попробуйте это,

Предположим, что ваша страница представления не является частью joomla, то есть вне рамочной работы joomla.

Шаг 1:

Include Joomla Frame work 

define('_JEXEC', 1); 
define('JPATH_BASE', dirname(__FILE__));//this is when we are in the root 
define('DS', DIRECTORY_SEPARATOR); 

require_once (JPATH_BASE .DS.'includes'.DS.'defines.php'); 
require_once (JPATH_BASE .DS.'includes'.DS.'framework.php'); 

$mainframe = JFactory::getApplication('site'); 
$mainframe->initialise(); 
$db = JFactory::getDBO(); 

Шаг 2:

Collect your Form fields data. 
//Something like $user_email ,$password etc. 

Шаг 3: Проверьте имя пользователя уже существует в БД.

   $sql ="SELECT * FROM #__users WHERE username ='$username'"; 
      $db->setQuery($sql); 
    $db->query(); 
    if($db->getNumRows()>0){ 

      $mainframe->redirect("url","error msg","error"); 
      } 
      else{ 
        jimport('joomla.user.helper'); 
     $salt = JUserHelper::genRandomPassword(32); 
     $crypt = JUserHelper::getCryptedPassword($password, $salt); 
     $password = $crypt.':'.$salt; 
     //Data to login table 
     $sql= "INSERT INTO #__users(username,email,lastvisitDate,registerDate,block,sendEmail,password,name,params,) values('$user_email','$user_email','$now','$now',0,0,'$password','$full_name','{}')"; 
     $db->setQuery($sql); 
     $db->query(); 
     $last_inserted_id = $db->insertid(); 
        //User group tabe normally group id for registered user is 2 other wise you have to check that too 
     $sql= "INSERT INTO #__user_usergroup_map(user_id,group_id) values('$last_inserted_id',2)"; 
     $db->setQuery($sql); 
     $db->query(); 

       //Finally send a mail to user if required. 
      JUtility::sendMail(mailfrom, fromname, $user_email, $emailSubject, $email_body,true); 
} 

Надеется, что это имеет смысл ..

Смежные вопросы