Přihlásit se

Joomla 5.1.0 a Joomla 4.4.4 (17 dub 2024)

Dnes byla uvolněna nová verze Joomla 5.1.0, společně s Joomla 4.4.4. Tato verze přináší spoustu nových funkcí, vylepšení v oblasti bezpečnosti a kódu a díky těmto vylepšením i vyšší rychlost.

předání dat z javascript do PHP

23. zář 2015 19:38 #123554
Odpověď od Ernst
Joomla Expert
Ano funguje, jak jsem si myslel.
Pokud někdo tuhle diskuzi sleduje, tak pak lokace.php vypadá následovně:
<?php
define( '_JEXEC', 1 );
if (stristr( $_SERVER, 'win32' )) {
define( 'JPATH_BASE', realpath(dirname(__FILE__).'\..\..\..' ));
} else define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../..' ));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE.DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php' );
$app =& JFactory::getApplication('site');
$app->initialise();
jimport( 'joomla.user.user' );
jimport( 'joomla.user.helper' );
$real_lat = floatval($_REQUEST);
$real_lgt = floatval($_REQUEST);
$user = JFactory::getUser()->username;
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$fields = array($db->quoteName('reallat') . ' = ' . $db->quote($real_lat), $db->quoteName('reallgt') . ' = ' . $db->quote($real_lgt));
$conditions = array($db->quoteName('display_name') . ' = "$user"');
$query->update($db->quoteName('#__lovefactory_profiles'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->query();
?>

Možná se tam tahá něco i zbytečně, to ještě otestuji

23. zář 2015 19:49 #123555
Odpověď od Ernst
Joomla Expert
a máte Cony pravdu, použil jsem tam raději to JFactory::getUser()->id, tam mám opravdu jistotu, že nenastane duplicita.

PS jak zde vkládáte ukázky kódu do toho rámečku? To neumím a vypsání do textu je trochu nepřehledné.

24. zář 2015 09:26 #123561
Odpověď od Cony
Moderátor

ernst napsal: PS jak zde vkládáte ukázky kódu do toho rámečku? To neumím a vypsání do textu je trochu nepřehledné.


V horní řadě ikon nad smajlíkama, cca uprostřed ikona "kód", nebo ručně

[code]
Tady bude kód
[/code]

24. zář 2015 10:44 #123562
Odpověď od Ernst
Joomla Expert
Tak to zkusím stejně jsem měl chybu v tom zápisu do databáze. Správně má být to lokace.php
Code:
<?php define( '_JEXEC', 1 ); if (stristr( $_SERVER['SERVER_SOFTWARE'], 'win32' )) { define( 'JPATH_BASE', realpath(dirname(__FILE__).'\..\..\..' )); } else define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../..' )); define( 'DS', DIRECTORY_SEPARATOR ); require_once ( JPATH_BASE.DS.'includes'.DS.'defines.php' ); require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php' ); $app =& JFactory::getApplication('site'); $app->initialise(); jimport( 'joomla.user.user' ); jimport( 'joomla.user.helper' ); $real_lat = floatval($_REQUEST['lat']); $real_lgt = floatval($_REQUEST['lgt']); $user = intval(JFactory::getUser()->id); $db =& JFactory::getDBO(); $query = $db->getQuery(true); $fields = array($db->quoteName('reallat') . ' = ' . $db->quote($real_lat), $db->quoteName('reallgt') . ' = ' . $db->quote($real_lgt)); $conditions = array($db->quoteName('user_id') . ' = '.$user); $query->update($db->quoteName('#__lovefactory_profiles'))->set($fields)->where($conditions); $db->setQuery($query); $db->query(); ?>

24. zář 2015 16:52 #123570
Odpověď od Cony
Moderátor
Používáte Joomlu (i když tady poměrně nešikovně nepřímo), používejte tedy její "vychytávky".
Místo šahání přímo na $_REQUEST zkuste
Code:
$real_lat = $app->input->getInt('lat',0); $real_lgt = $app->input->getInt('lgt',0);
Odstraňte & u těcto řádků - emitovalo by to deprecated hlášení
Code:
$app =& JFactory::getApplication('site'); $db =& JFactory::getDBO();
Měl by jste si asi také přidat kontrolu na to, že uživatel je přihlášen, něco jako
Code:
if ($user) { ... }

25. zář 2015 11:56 - 25. zář 2015 12:00 #123586
Odpověď od Ernst
Joomla Expert
děkuji za rady, zkusím to.
Teď jsem aplikoval tyto informace v php, tam moc rad nepotřebuji.
To první funguje, jen místo getint( musím dát get( , potřebuji to na desetinná místa.
To druhé nefunguje, naopak to vypíše parse error. Musím tam to $ nechat.
Test na přihlášení nepotřebuji, všichni uživatelé webu musí být přihlášeni, ale dát ho tam mohu.
Kvůli podmínkám jsem tam musel přidat čtení z databáze, tak to teď vypadá takto:
Code:
<?php define( '_JEXEC', 1 ); if (stristr( $_SERVER['SERVER_SOFTWARE'], 'win32' )) { define( 'JPATH_BASE', realpath(dirname(__FILE__).'\..\..\..' )); } else define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../..' )); define( 'DS', DIRECTORY_SEPARATOR ); require_once ( JPATH_BASE.DS.'includes'.DS.'defines.php' ); require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php' ); $app =& JFactory::getApplication('site'); $app->initialise(); jimport( 'joomla.user.user' ); jimport( 'joomla.user.helper' ); $real_lat = $app->input->get('lat',0); $real_lgt = $app->input->get('lgt',0); $user = intval(JFactory::getUser()->id); $db = JFactory::getDbo(); $query = $db->getQuery(true); $conditions = array($db->quoteName('user_id') . ' = '.$user); $query->select(array('field_50','membership_sold_id')) ->from($db->quoteName('#__lovefactory_profiles')) ->where($conditions); $db->setQuery($query); $row = $db->loadRow(); $db = JFactory::getDbo(); $query = $db->getQuery(true); $conditions = array($db->quoteName('user_id') . ' = '.$user); $query->select(array('membership_id')) ->from($db->quoteName('#__lovefactory_memberships_sold')) ->where($conditions); $db->setQuery($query); $row1 = $db->loadRow(); $db =& JFactory::getDBO(); $query = $db->getQuery(true); if (!($row[0]==0 and $row1[0]==2)){ $fields = array($db->quoteName('reallat') . ' = ' . $db->quote($real_lat), $db->quoteName('reallgt') . ' = ' . $db->quote($real_lgt));} else { $fields = array($db->quoteName('reallat') . ' = ' . $db->quote($real_lat), $db->quoteName('reallgt') . ' = ' . $db->quote($real_lgt),$db->quoteName('field_43_lat') . ' = ' . $db->quote($real_lat), $db->quoteName('field_43_lng') . ' = ' . $db->quote($real_lgt)); } $conditions = array($db->quoteName('user_id') . ' = '.$user); $conditions = array($db->quoteName('user_id') . ' = '.$user); $query->update($db->quoteName('#__lovefactory_profiles'))->set($fields)->where($conditions); $db->setQuery($query); $db->query(); ?>

Jak moc zatěžují ty dotazy na databázi server? Musel jsem je i jinde párkrát přidat.

Powered by Fórum