Проверка имени пользователя Доступность не работает на сайте Joomla - PullRequest
0 голосов
/ 12 января 2012

Я просто добавляю новую функцию в мой компонент 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 (создано)

Мой код AJAX Javascript: который находится в разделе 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>

Файл PHP в компоненте TPJobs

<?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 голосов
/ 13 января 2012

Есть две проблемы, которые я замечаю

Во-первых, ваш аджакс-адрес не соответствует действительности. имя папки компонента - com_tpjobs, а в вашем URL - это компоненты / tpjobs это должны быть компоненты / com_tpjobs /.....

Второй момент заключается в том, что при вызове файла напрямую через ajax он не загружает каркас joomla, поэтому в нем нельзя использовать класс и функции joomla.

, чтобы получить это, вы должны включить несколько строк в верхней части вашего файла AJAX смотрите здесь Как расширить Joomla! в мой пользовательский файл PHP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...