2012-12-17 140 views
0

我在做一個Android應用程序,我需要用戶登錄到屬於joomla的數據庫。我正在做一個PHP,但它不起作用在外部登錄用戶joomla php

您如何看待代碼?你會改變嗎?

<?php 
    /** 
    * Database config variables 
    */ 
    define("DB_HOST", "localhost"); 
    define("DB_USER", "root");//cambiar por el nombre de usuario definido en la configuracion de la BD. 
    define("DB_PASSWORD", "");//Modificar por el password elegido 
    define("DB_DATABASE", "gestorrecursos");//Nombre de la base de datos reemplazar si se utilizo otro diferente al mencionado en el tutorial. 

     <?php 

    class funciones_BD { 

     private $db; 

     // constructor 

     function __construct() { 
      require_once 'connectbd.php'; 
      // connecting to database 

      $this->db = new DB_Connect(); 
      $this->db->connect(); 

     } 

     // destructor 
     function __destruct() { 

     } 

     /** 
     * agregar nuevo usuario 
     */ 
     public function adduser($username, $password,$id) { 

     $result = mysql_query("INSERT INTO ocbup_users(username,password,id) VALUES('$username', '$password',$id)"); 
      // check for successful store 

      if ($result) { 

       return true; 

      } else { 

       return false; 
      } 

     } 


     /** 
     * Verificar si el usuario ya existe por el username 
     */ 

     public function isuserexist($username) { 

      $result = mysql_query("SELECT username from ocbup_users WHERE username = '$username'"); 

      $num_rows = mysql_num_rows($result); //numero de filas retornadas 

      if ($num_rows > 0) { 

       // el usuario existe 

       return true; 
      } else { 
       // no existe 
       return false; 
      } 
     } 


     public function login($user,$passw){ 

     $result=mysql_query("SELECT COUNT(*) FROM ocbup_users WHERE username='$user' AND password='$passw' "); 
     $count = mysql_fetch_row($result); 


     /*como el usuario debe ser unico cuenta el numero de ocurrencias con esos datos*/ 


      if ($count[0]==0){ 

      return true; 

      }else{ 

      return false; 

      } 
     } 

    } 

    ?> 

我感謝您的幫助和耐心。

回答

0

Joomla! 1.5使用md5來散列密碼。在創建密碼時,它們會被附加到密碼字符串末尾的32個字符的哈希值散列。密碼存儲爲{TOTAL HASH}:{ORIGINAL SALT}。

要看到這是如何進行認證測試,看看插件/認證/ joomla.php線80-116.use相同的功能烏拉圭回合的應用程序登錄

0

的Joomla使用MD5哈希密碼,而是使用你無法訪問joomla資源的外部文件,因爲架構阻止了外部訪問。另一種方法是使用用戶/密碼以編程方式訪問joomla基本登錄系統來授予訪問權限。

0

您可以使用下面的代碼來實現您的要求。

在的Joomla標準,你可以用下面的方式

     jimport('joomla.user.helper'); 
      $salt = JUserHelper::genRandomPassword(32); 
      $crypt = JUserHelper::getCryptedPassword($password_choose, $salt); 
      $password = $crypt.':'.$salt; 

你提到你是從外部文件訪問(或程序),那麼如果你有另一側安裝Joomla創建密碼,您可以從外部訪問joomla結構。

這樣

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(); 

使用此文件在根安裝Joomla使用Joomla默認框架的工作,包括框架的Joomla工作,然後創建密碼。 您可以使用joomla's登錄系統的

$app->login($credentional,$option);

你可以在堆棧溢出很多類似的問題,試圖尋找更多..

take look at this 希望這將幫助你..