Mostrando entradas con la etiqueta php. Mostrar todas las entradas
Mostrando entradas con la etiqueta php. Mostrar todas las entradas

Como habilitar short open php desde el archivo .htaccess

Para poder usar <?

php_value short_open_tag 1

¿Cómo saber cuantas cifras tiene un número?

El logaritmo es la inversa de la potencia.

Entonces, al hallar el logaritmo en base 10 de determinado número, la parte entera representa la cantidad de cifras del número.

Por ejemplo:


Log(1) => 0
Log(9) => 0,95...
Log(10) => 1
Log(11) => 1,04...
Log(99) => 1,99...
Log(100) => 2

Así que de esta manera se puede hacer una función simple para contar las cifras. Por ejemplo en PHP se podría contar las cifras con la siguiente función:
<?php

function getCifras($number) {
   return intval(log($number, 10)) + 1;
}

echo getCifras(11);   // imprime 2
echo getCifras(100);  // imprime 3
echo getCifras(1999); // imprime 4

?>


Programador PHP Argentina

Hola.

Soy un programador freelance de Argentina que se dedica al desarrollo de aplicaciones web.

Desde hace más de 7 años que me dedico al desarrollo de aplicaciones PHP. Empecé con PHP "puro y duro" por así decirlo.

Luego estuve viendo los diferentes frameworks MVP del mercado de los cuales los que más me gustaron son Zend y Symphony.

Y finalmente comencé a trabajar con los diferentes CMS que hay para PHP para no "reinventar la rueda" :)

Trabajé con Wordpress y Drupal a nivel CMS. Y en cuanto a tiendas online con Magento y Prestashop.

Ahora mismo, además de dedicarme al desarrollo de aplicaciones web me encuentro trabajando en el desarrollo de aplicaciones móviles. Principalmente me dedico a iOS con Objective, pero también (dependiendo del proyecto) trabajo con Android (desde 2.2 en adelante) y con jQuery Mobile (para el caso de web applications móviles).

Si tenés alguna duda o querés un presupuesto contactame acá que hoy mismo me pongo en contacto con vos.

Dónde está el archivo php.ini en Mac

El archivo php.ini en Mac se encuentra en la ruta /usr/php.ini

Si no se encuentra allí hay que copiarlo desde /etc/php.ini.default y darle permisos de escritura para poder modificarlo

# sudo cp /etc/php.ini.default /etc/php.ini
# sudo chmod u+w  /etc/php.ini



Cómo instalar mcrypt en Mountain Lion

La libería mcrypt para PHP no viene instalada por defecto.

Para instalarla hay que seguir una serie de pasos.

1) Instalar las command line tools de xcode.

2) Instalar mcrypt. Para ello.

Abrir una terminal (Applications > Utilities > Terminal). Y crear un directorio llamado mcrypt

# cd ~ ; mkdir mcrypt ; cd mcrypt

Descargar la libería mcrypt desde Sourceforge.

Descargar el código fuente de PHP. Para saber qué versión de PHP descargar tipear en la consola:

# php -v

Mover los archivos descargados a ~/mcrypt y expandirlos.

Configurar libmcrypt


Ir al directorio de mcrypt:

# cd libmcrypt-2.5.8
# ./configure
# make
# sudo make install

Ahora la librería mcrypt está configurada e instalada.

Errores de Autoconf

Si tenés errores como el siguiente:

Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

Significa que no está instalado autoconf. Para instalarlo ir a la consola ir tipear lo siguiente:

# cd ~/mcrypt<
# curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
# tar xvfz autoconf-latest.tar.gz
# cd autoconf-2.69/
# ./configure
# make
# sudo make install

Compilar la extensión mcrypt para php.


# cd ../php-5.3.13/ext/mcrypt/
# /usr/bin/phpize

La salida tiene que ser
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626 
configure.in:3: warning: prefer named diversions
configure.in:3: warning: prefer named diversions

# ./configure
# make
# sudo make install

La salida tiene que ser:

Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20090626/


Habilitar la extensión mcrypt para PHP.


Abrir el archivo /etc/php.ini (si no se encuentra allí lo podés copiar del default) y agregar la siguiente linea al final del archivo:

extension=mcrypt.so



Cómo obtener todos los posibles valores de los atributos de un producto configurable.

Para obtener todos los posibles valores de los atributos un producto configurable se puede utilizar el siguiente código:

 
// Collect options applicable to the configurable product
$productAttributeOptions = $product->getTypeInstance(true)->getConfigurableAttributesAsArray($product);
$attributeOptions = array();
foreach ($productAttributeOptions as $productAttribute) {
    foreach ($productAttribute['values'] as $attribute) {
        $attributeOptions[$productAttribute['label']][$attribute['value_index']] = $attribute['store_label'];
    }
}

Cómo eliminar todas las ordenes de prueba en Magento 1.4.2.

Para eliminar todas las órdenes de prueba de un site Magento (testeado en la versión 1.4.2) lanzar el siguiente query: 

 
SET FOREIGN_KEY_CHECKS = 0;

-- TRUNCATE TABLES
TRUNCATE `sales_flat_order`;
TRUNCATE `sales_billing_agreement`;
TRUNCATE `sales_billing_agreement_order`;
TRUNCATE `sales_flat_order_status_history`;
TRUNCATE `sales_flat_order_payment`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_payment`;
TRUNCATE `sales_flat_quote_shipping_rate`;
TRUNCATE `sales_flat_shipment`;
TRUNCATE `sales_flat_shipment_comment`;
TRUNCATE `sales_flat_shipment_grid`;
TRUNCATE `sales_flat_shipment_item`;
TRUNCATE `sales_flat_shipment_track`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_order_grid`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sales_flat_order_address`;
TRUNCATE `sales_flat_invoice`;
TRUNCATE `sales_flat_invoice_grid`;
TRUNCATE `sales_flat_invoice_item`;
TRUNCATE `sales_flat_invoice_comment`;
TRUNCATE `sales_invoiced_aggregated`;
TRUNCATE `sales_invoiced_aggregated_order`;
TRUNCATE `sales_order_aggregated_created`;
TRUNCATE `sales_order_tax`;
TRUNCATE `sales_flat_creditmemo`;
TRUNCATE `sales_flat_creditmemo_comment`;
TRUNCATE `sales_flat_creditmemo_grid`;
TRUNCATE `sales_flat_creditmemo_item`;
TRUNCATE `sales_payment_transaction`;
TRUNCATE `sales_recurring_profile`;
TRUNCATE `sales_recurring_profile_order`;
TRUNCATE `sales_refunded_aggregated`;
TRUNCATE `sales_refunded_aggregated_order`;
TRUNCATE `sales_shipping_aggregated`;
TRUNCATE `sales_shipping_aggregated_order`;
TRUNCATE `sales_bestsellers_aggregated_daily`;
TRUNCATE `sales_bestsellers_aggregated_monthly`;
TRUNCATE `sales_bestsellers_aggregated_yearly`;
TRUNCATE `sendfriend_log`;
TRUNCATE `tag`;
TRUNCATE `tag_relation`;
TRUNCATE `tag_summary`;
TRUNCATE `wishlist`;
TRUNCATE `log_quote`;
TRUNCATE `report_event`;


-- RESET AUTOINCREMENT TO 1
ALTER TABLE `sales_flat_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_billing_agreement` AUTO_INCREMENT=1;
ALTER TABLE `sales_billing_agreement_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_status_history` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_shipping_rate` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_track` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_invoiced_aggregated` AUTO_INCREMENT=1;
ALTER TABLE `sales_invoiced_aggregated_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_aggregated_created` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_tax` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_payment_transaction` AUTO_INCREMENT=1;
ALTER TABLE `sales_recurring_profile` AUTO_INCREMENT=1;
ALTER TABLE `sales_recurring_profile_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_refunded_aggregated` AUTO_INCREMENT=1;
ALTER TABLE `sales_refunded_aggregated_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_shipping_aggregated` AUTO_INCREMENT=1;
ALTER TABLE `sales_shipping_aggregated_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_bestsellers_aggregated_daily` AUTO_INCREMENT=1;
ALTER TABLE `sales_bestsellers_aggregated_monthly` AUTO_INCREMENT=1;
ALTER TABLE `sales_bestsellers_aggregated_yearly` AUTO_INCREMENT=1;
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
ALTER TABLE `tag` AUTO_INCREMENT=1;
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `wishlist` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;
ALTER TABLE `report_event` AUTO_INCREMENT=1;


-- RESET STORE ID COUNTERS
TRUNCATE `eav_entity_store`;
ALTER TABLE  `eav_entity_store` AUTO_INCREMENT=1; 

SET FOREIGN_KEY_CHECKS = 1;

Cómo eliminar todos los productos en Magento con un script de php.

Para eliminar todos los productos de Magento con un script de PHP se puede realizar de la siguiente manera.

Primero se obtienen todos los productos y luego se los recorre con un loop y se los elimina uno a uno.

 

require_once '../app/Mage.php';
Mage::app();

error_reporting(E_ALL);
ini_set('display_errors', '1');

Mage::register('isSecureArea', true);
try {
    $collection = Mage::getModel('catalog/product')
                        ->getCollection()
                        ->addAttributeToSelect('*');

    $i = 0;
    foreach ($collection as $product) {
        echo "Eliminando producto: " . $product->getId() . "
"; $product->delete(); } } catch (Exception $e) { echo 'Error'; } Mage::unregister('isSecureArea');

ucwords (php) no funciona.

Es un error común intentar aplicar ucwords a una cadena que es en su mayoría mayúsculas.

La solución es antes aplicarle strtolower:

$ucvar = ucwords(strtolower($var));

Importar un site Magento en MAMP

Primero crear el directorio para el site, y bajar los archivos desde el FTP.

Luego, exportar la base de datos en el servidor. Para importar el dump file del site con Magento en MAMP, hay que incluir la siguiente sentencia al comienzo del archivo SQL:

SET FOREIGN_KEY_CHECKS = 0;

Luego por consola, ejecutar la siguiente línea:
$ cd /Applications/MAMP/Library/bin
$ ./mysql -u root -p mylocaldb < /Users/myuser/bd_dump.sql

Para crear el Virtual Host, hay que editar el archivo /Applications/MAMP/conf/apache/httpd.conf y agregar el Virtual Host:

<virtualhost *="">
   ServerName mysite.local
   DocumentRoot "/Users/myuser/Work/MAMP/mysite.com"
</virtualhost>
 

También hay que editar el archivo /etc/hosts y agregar lo siguiente:

127.0.0.1    mysite.local
::1          mysite.local


Y por último hay que editar las siguientes filas en MySQL:

select * from core_config_data where path = 'web/unsecure/base_url';
select * from core_config_data where path = 'web/secure/base_url';

Y quizás esta: 
select * from core_config_data where path = 'admin/url/custom';

E incluir en ellas la nueva url: http://mysite.local. Acá colgué un script que hice para automatizar un poco la actualización de las URLs.

Si hay problemas luego de todo esto ver acá y acá.

SQL to query categories with no childrens in Wordpress

SELECT wp_terms.name, wp_terms.term_id
FROM wp_terms
INNER JOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
WHERE wp_term_taxonomy.taxonomy = "category"
AND wp_terms.term_id NOT
IN (
SELECT DISTINCT parent
FROM `wp_term_taxonomy`
WHERE parent <>0
)
LIMIT 0 , 30

Smarty first item of array

{foreach from=$items key=myId item=i name=foo} 
{/foreach}
{if $smarty.foreach.foo.first}LATEST{else}{$myId}{/if} {$i.label}

Prestashop | This module cannot be transplanted to this hook.

If you are trying to place a Prestahsop Module in some hook, and you are getting this error: "This module cannot be transplanted to this hook." you can fix it modifying the module's php.

For example if you are trying to place the Categories Block in the "Top of Pages" and you can't. Open the file: /modules/blockcategories/blockategories.php and add this function:

public function hookTop($params)
{
        return $this->hookLeftColumn($params);

}

Cómo utilizar Zend_Auth_Adapter con Web Services

<?
class My_Auth_Adapter implements Zend_Auth_Adapter_Interface {

    const OK_RESPONSE = 'OK';
    const KO_RESPONSE = 'KO';

    private $_username = '';
    private $_password = '';
    private $_data = null;

    public function setIdentity($username) {
        $this->_username = $username;
    }

    public function setCredential($password) {
        $this->_password = $password;
    }

    /**
     * Authenticate the user
     * 
     * @return Zend_Auth_Result 
     */
    public function authenticate() {
        $endpointLoginAuthor = Zend_Registry::get('config')->endpoint->userService->loginAuthor;

        $client = new Zend_Rest_Client($endpointLoginAuthor);
        $client->username($this->_username);
        $client->password($this->_password);

        $response = $client->get();
        
        $authenticated = ($response->ResponseDescription == $this::OK_RESPONSE);
        $authResult = Zend_Auth_Result::FAILURE;

        $authMessages = array();

        if ($authenticated){
            // user is authenticated, overwrite the auth result:
            $authResult = Zend_Auth_Result::SUCCESS;
            $this->_data = $response->Author;
        } else {
            // Couldn't authenticate the user, set a message:
            $authMessages[] = 'Datos de acceso inválidos.';
        }

        // return the result:
        return new Zend_Auth_Result( $authResult, $this->_username, $authMessages );

    }

    /**
     *
     * @param <type> $returnColumns
     * @param <type> $omitColumns
     * @return <type> SimpleXMLObject
     */
     public function getResultRowObject($returnColumns = null, $omitColumns = null){
        // If no data is set, return false:
        if (!$this->_data) {
            return false;
        }

        return $this->_data;
    }
}

?>


Cómo setear desde un Controller variables de un Zend_Layout

En el controller:
 

class MyController extends Zend_Controller_Action {
    public function init() {
        $this->_helper->layout->getView()->myVar = 'Value'; 
    }
}

En el layout.phtml

<? echo $this->myVar; ?>

Como debuggear con MAMP y Netbeans

1. Desde la consola:

vi /Applications/MAMP/conf/php5.3/php.ini

2. Buscar [xdebug] y agregar:


[xdebug]
xdebug.default_enable=1

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1

zend_extension="/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"

3. Reinicar MAMP

4. En Netbeans click derecho sobre el proyecto -> "Debug"

Cómo setear el include path de php para un determinado Virtual Host de Apache

Se puede hacer editando el archivo http.conf

Por ejemplo:

<VirtualHost *>
ServerName mysite.local
DocumentRoot "/path/to/site"
<Directory "/path/to/site">
php_value include_path ".:/include/path/"
</Directory>
</VirtualHost>

MAMP carga muy lento cuando se llama a Zend_Session::start();

El session handler tiene algún problema al intentar guardar las sessiones en disco.

Entonces se puede utilizar Zend para utilizar otro adapter y por ejemplo guardar las sesiones en una BD.

// Comment
$db = Zend_Db::factory('Pdo_Mysql', array(
    'host'        =>'localhost',
    'username'    => 'dbuser',
    'password'    => '****',
    'dbname'    => 'mydb'
));

//you can either set the Zend_Db_Table default adapter
//or you can pass the db connection straight to the save handler $config
Zend_Db_Table_Abstract::setDefaultAdapter($db);
$config = array(
    'name'           => 'session',
    'primary'        => 'id',
    'modifiedColumn' => 'modified',
    'dataColumn'     => 'data',
    'lifetimeColumn' => 'lifetime'
);

//create your Zend_Session_SaveHandler_DbTable and
//set the save handler for Zend_Session
Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));

// start session
Zend_Session::start();

How to get twitter statuses in json format

file_get_content("http://api.twitter.com/1/statuses/user_timeline.json?screen_name=carna3d");

Cómo instalar apache2 + mysql + php

sudo aptitude update
sudo aptitude upgrade
sudo aptitude install mysql-server
sudo /usr/bin/mysqladmin -u root password pon_tu_pass
sudo aptitude install apache2
sudo aptitude install php5
sudo aptitude install libapache2-mod-auth-mysql
sudo aptitude install php5-mysql
sudo /etc/init.d/apache2 restart
sudo gedit /var/www/test.php