2013-10-09 4 views
0

이 질문은 유감스럽게도 Joomla! 전문가가 이걸 도와줬으면 좋겠어. (잘하면 내가하지도 않고 좋은 PHP/MySQL 지식을 가진 사람이 도울 수있다.)양식을 제출할 때 사용자 만들기

http://pastebin.com/JRhNB4EP - 파일이 꽤 크기 때문에이 코드를 코드로 넘치려고하지 않기 때문에 붙여 넣기에 코드를 넣어야했습니다.

양식이하는 일을 설명하겠습니다. 사용자가 선택한 비즈니스 유형으로 목록을 작성할 수 있지만 구현이 필요하면 양식이 제출되면 '등록 된'ACL에 사용자가 생성됩니다. 무작위로 암호를 생성합니다. 사용자 이름은 그들이 제공 한 이메일이됩니다. 이 정보는 제공된 이메일로 전송됩니다.

저는 며칠 동안 도움을 구했는데 (보통 며칠 내에 여기 저기에 시간을 보냈습니다) 질문이 매우 구체적이기 때문에 명확한 문제는 발견하지 못했습니다.

올바른 방향으로 나를 가리킬 수있는 도움말/포인터/참조는 크게 감사하겠습니다! 미리 감사드립니다.

+0

이 당신에게 어떤 도움이 될 수 있습니다 ..이 의미를 희망 : http://stackoverflow.com/questions/1904809/how-can-i-create-a-new-joomla -user-account-from-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 단계 : 확인 사용자 이름이 이미 DB에 존재 : 3

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

단계.

   $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); 
} 

관련 문제