Веб-сервис для получения Координат GPS

Я реализовал подобную вещь не так давно. Фундаментальное понятие следует в примере кода.

я создал свой собственный configAcl.php файл, который загружается в файле начальной загрузки, в моем случае это - index.php. Вот то, как это было бы согласно Вашему случаю:

$acl = new Zend_Acl();

$roles  = array('admin', 'normal');

// Controller script names. You have to add all of them if credential check
// is global to your application.
$controllers = array('auth', 'index', 'news', 'admin');

foreach ($roles as $role) {
    $acl->addRole(new Zend_Acl_Role($role));
}
foreach ($controllers as $controller) {
    $acl->add(new Zend_Acl_Resource($controller));
}

// Here comes credential definiton for admin user.
$acl->allow('admin'); // Has access to everything.

// Here comes credential definition for normal user.
$acl->allow('normal'); // Has access to everything...
$acl->deny('normal', 'admin'); // ... except the admin controller.

// Finally I store whole ACL definition to registry for use
// in AuthPlugin plugin.
$registry = Zend_Registry::getInstance();
$registry->set('acl', $acl);

Другой случай - то, если Вы хотите позволить обычному пользователю, только "перечисляют" действие со всеми Вашими контроллерами. Это довольно просто, Вы добавили бы строку как это:

$acl->allow('normal', null, 'list'); // Has access to all controller list actions.

Следующий необходимо создать новый плагин, который заботится об учетных данных, проверяющих автоматически, когда существует запрос на некоторое действие контроллера. Эта проверка происходит в предварительной отправке () метод, который называют перед каждым призывом к действию контроллера.

Вот AuthPlugin.php:

class AuthPlugin extends Zend_Controller_Plugin_Abstract
{
    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        $loginController = 'auth';
        $loginAction     = 'login';

        $auth = Zend_Auth::getInstance();

        // If user is not logged in and is not requesting login page
        // - redirect to login page.
        if (!$auth->hasIdentity()
                && $request->getControllerName() != $loginController
                && $request->getActionName()     != $loginAction) {

            $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector');
            $redirector->gotoSimpleAndExit($loginAction, $loginController);
        }

        // User is logged in or on login page.

        if ($auth->hasIdentity()) {
            // Is logged in
            // Let's check the credential
            $registry = Zend_Registry::getInstance();
            $acl = $registry->get('acl');
            $identity = $auth->getIdentity();
            // role is a column in the user table (database)
            $isAllowed = $acl->isAllowed($identity->role,
                                         $request->getControllerName(),
                                         $request->getActionName());
            if (!$isAllowed) {
                $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector');
                $redirector->gotoUrlAndExit('/');
            }
        }
    }
}

Заключительные шаги загружают Ваш configAcl.php и регистрируют AuthPlugin в файле начальной загрузки (вероятно, index.php).

require_once '../application/configAcl.php';

$frontController = Zend_Controller_Front::getInstance();
$frontController->registerPlugin(new AuthPlugin());

, Таким образом, это - фундаментальное понятие. Я не протестировал код выше (копия и вставил и переписал только для цели витрины), таким образом, это не является пуленепробиваемым. Только дать общее представление.

РЕДАКТИРОВАНИЕ

Для ясности. Код выше в AuthPlugin предполагает, что объект $identity заполнен пользовательскими данными ("ролевой" столбец в базе данных). Это могло быть сделано в рамках процесса входа в систему как это:

[...]
$authAdapter = new Zend_Auth_Adapter_DbTable($db);
$authAdapter->setTableName('Users');
$authAdapter->setIdentityColumn('username');
$authAdapter->setCredentialColumn('password');
$authAdapter->setIdentity($username);
$authAdapter->setCredential(sha1($password));
$authAdapter->setCredentialTreatment('? AND active = 1');
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter);
if ($result->isValid()) {
    $data = $authAdapter->getResultRowObject(null, 'password'); // without password
    $auth->getStorage()->write($data);
[...]
7
задан Nuwan 24 August 2009 в 02:40
поделиться

3 ответа

Геокодер Yahoo прост в использовании. В основном измените несколько строк запроса, и вы получите простой для синтаксического анализа файл xml.

Google ' У s было несколько проблем в нашем районе, когда возвращаемые координаты были невероятно неточными. Yahoo имеет тенденцию попадать на указанную улицу, но, вероятно, не попадет на саму посылку.

Тем не менее, просто обратите внимание, что эти услуги не будут самыми точными.

3
ответ дан 7 December 2019 в 14:36
поделиться

Для этого можно использовать Карты Bing или Геолокацию Google . Bing имеет приятную способность связываться с собственными пространствами имен .NET.

1
ответ дан 7 December 2019 в 14:36
поделиться

http://code.google.com/apis/maps/documentation/geocoding/index.html

это ссылка на службу геокодирования от Google

0
ответ дан 7 December 2019 в 14:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: