检查用户名可用性不适用于Joomla站点

时间:2012-01-12 19:33:37

标签: php ajax joomla

我只是在我的Joomla TPJOBS组件中添加了一个新功能,虽然它不是一个好的/完整/活动的组件,但只是我添加了一个用户名可用性检查器,但它不起作用,因为它可能是由于在这个组件中。

查看网站:http://tinyurl.com/72rx7af

[点击查看无效的可用性]

我的Joomla组件目录是:\ public_html \ components \ com_tpjobs \

您可以在此处获取文件http://forum.joomla.org/download/file.php?id=88705

编辑tpjobs.html.php(退出)和username_validate.php(已创建)

我的Javascript AJAX代码:属于tpjobs.html.php

<script type="text/javascript">
        <!--
  //function to create ajax object
  function pullAjax(){
    var a;
    try{
      a=new XMLHttpRequest()
    }
    catch(b)
    {
      try
      {
        a=new ActiveXObject("Msxml2.XMLHTTP")
      }catch(b)
      {
        try
        {
          a=new ActiveXObject("Microsoft.XMLHTTP")
        }
        catch(b)
        {
          alert("Your browser broke!");return false
        }
      }
    }
    return a;
  }

  function username_validate()
  {
    site_root = '';
    var x = document.getElementById('username');
    var msg = document.getElementById('msg');
    user = x.value;

    code = '';
    message = '';
    obj=pullAjax();
    obj.onreadystatechange=function()
    {
      if(obj.readyState==4)
      {
        eval("result = "+obj.responseText);
        code = result['code'];
        message = result['result'];

        if(code <=0)
        {
          x.style.border = "1px solid #FF0084";
          msg.style.color = "#FF1A00";
        }
        else
        {
          x.style.border = "1px solid #008C00";
          msg.style.color = "#73880A";
        }
        msg.innerHTML = message;
      }
    }
    obj.open("GET",site_root+"username_validate.php?username="+user,true);
    obj.send(null);
  }
  //-->
</script>
<style>
#username{border: 1px solid #000;}
</style>

TPJobs组件下的PHP文件

<?php
    defined('_JEXEC') or die('Restricted access');


    $user = strip_tags(trim($_REQUEST['username']));

    if(strlen($user) <= 0)
    {
      echo json_encode(array('code'  =>  -1,
      'result'  =>  'Invalid username, please try again.'
      ));
      die;
    }

    $db =& JFactory::getDBO(); //get database object
    $db->setQuery("Select username FROM #__users where username = '$user'")

    $db->query(); //do actual query

    $result = $db->getAffectedRows(); //return affected rows

    if($result)
    {
      echo json_encode(array('code'  =>  1,
      'result'  =>  "Success,username $user is still available"
      ));
      die;
    }
    else
    {
      echo  json_encode(array('code'  =>  0,
      'result'  =>  "Sorry but username $user is already taken."
      ));
      die;
    }
    die;
?>

1 个答案:

答案 0 :(得分:0)

我注意到有两个问题

第一个是你的ajax网址似乎不正确。 组件文件夹名称是com_tpjobs,在您的URL中它是components / tpjobs 它应该是components / com_tpjobs /.....

第二点是,在通过ajax直接调用文件时,它不会加载joomla框架,因此你不能在其中使用joomla类和函数。

要获得此功能,您必须在ajax文件的顶部包含几行 见How to extend Joomla! to my custom PHP file