viernes, 30 de diciembre de 2011

Passing values from PHP to javascript

Seen in stackoverflow:



What is the easiest way to encode a PHP string for output to a Javascript variable?

I have a PHP string which includes quotes and newlines. I need the contents of this string to be put into a Javascript variable.

Normally, I would just construct my Javascript in a PHP file, ala:

var myvar = "";


However, this doesn't work when $myVarValue contains quotes or newlines.



Expanding on someone else's answer:



This does require PHP 5.2.0 or greater.

miércoles, 30 de noviembre de 2011

Creating dialogs with jquery-ui

<script type="text/javascript">
$(function(){

var options = {
autoOpen: false,
width: 600,
buttons: {
"Ok": function() {
$(this).dialog("close");
}
}
};
$("#dialog").dialog(options);


// Dialog Link
$('#dialog_link').click(function(){
$('#dialog').dialog('open');
return false;
});

//hover states on the static widgets
$('#dialog_link, ul#icons li').hover(
function() { $(this).addClass('ui-state-hover'); },
function() { $(this).removeClass('ui-state-hover'); }
);

});
</script>

miércoles, 2 de noviembre de 2011

Caracteres latinos (ñ, eñe) en html

Tan solo ha que poner dentro de la sección la siguiente etiqueta:





además de especificarlo en la cabecera:

jueves, 20 de octubre de 2011

Removing html tags in a php string

Visto en http://php.net/manual/en/function.strip-tags.php 

strip_tags

(PHP 4, PHP 5)
strip_tagsStrip HTML and PHP tags from a string

reject note Description

string strip_tags ( string $str [, string $allowable_tags ] )
This function tries to return a string with all NUL bytes, HTML and PHP tags stripped from a given str. It uses the same tag stripping state machine as the fgetss() function.

reject note Parameters

str
The input string.
allowable_tags
You can use the optional second parameter to specify tags which should not be stripped.
Note:
HTML comments and PHP tags are also stripped. This is hardcoded and can not be changed with allowable_tags.
Note:
This parameter should not contain whitespace. strip_tags() sees a tag as a case-insensitive string between < and the first whitespace or >. It means that strip_tags(" ", " ") returns an empty string.

reject note Return Values

Returns the stripped string.

reject note Changelog

Version Description
5.0.0 strip_tags() is now binary safe
4.3.0 HTML comments are now always stripped

reject note Examples

Example #1 strip_tags() example
$text 'Test paragraph.
 Other text'
;
echo 
strip_tags($text);
echo 
"\n";
// Allow  and 
echo strip_tags($text'');?>

reject note Notes

Warning
Because strip_tags() does not actually validate the HTML, partial or broken tags can result in the removal of more text/data than expected.
Warning
This function does not modify any attributes on the tags that you allow using allowable_tags, including the style and onmouseover attributes that a mischievous user may abuse when posting text that will be shown to other users.

reject note See Also



stripcslashes> <strcspn
[edit] Last updated: Fri, 14 Oct 2011
 
reject note add a
 note add a note User Contributed Notes strip_tags
dhgouveia at hotmail dot com 10-Oct-2011 11:09
this is just for strip the inside tags

$allow = '
  • ';

    $str = '
    Paragraph
    Bold
    Red

    Header

    '
    ;

    $result = strip_tags($str,$allow);
    $result = clean_inside_tags($result,$allow);

    echo
    '';

    //Clean the inside of the tags
    function clean_inside_tags($txt,$tags){
       
       
    preg_match_all("/<([^>]+)>/i",$tags,$allTags,PREG_PATTERN_ORDER);

        foreach (
    $allTags[1] as $tag){
           
    $txt = preg_replace("/<".$tag."[^>]*>/i","<".$tag.">",$txt);
        }

        return
    $txt;
    }

    ?>

lunes, 10 de octubre de 2011

Setting file name in dynamically generated files wiht HTTP headers

Content-Disposition

The Content-Disposition response-header field has been proposed as a means for the origin server to suggest a default filename if the user requests that the content is saved to a file. This usage is derived from the definition of Content-Disposition in RFC 1806 [35].
content-disposition = "Content-Disposition" ":"
                              disposition-type *( ";" disposition-parm )
        disposition-type = "attachment" | disp-extension-token
        disposition-parm = filename-parm | disp-extension-parm
        filename-parm = "filename" "=" quoted-string
        disp-extension-token = token
        disp-extension-parm = token "=" ( token | quoted-string )
An example is
Content-Disposition: attachment; filename="fname.ext"
The receiving user agent SHOULD NOT respect any directory path information present in the filename-parm parameter, which is the only parameter believed to apply to HTTP implementations at this time. The filename SHOULD be treated as a terminal component only.
If this header is used in a response with the application/octet- stream content-type, the implied suggestion is that the user agent should not display the response, but directly enter a `save response as...' dialog.
See section 15.5 for Content-Disposition security issues.


Content-Disposition

The original MIME specifications only described the structure of mail messages. They did not address the issue of presentation styles. The content-disposition header field was added in RFC 2183 to specify the presentation style. A MIME part can have:
  • an inline content-disposition, which means that it should be automatically displayed when the message is displayed, or
  • an attachment content-disposition, in which case it is not displayed automatically and requires some form of action from the user to open it.
In addition to the presentation style, the content-disposition header also provides fields for specifying the name of the file, the creation date and modification date, which can be used by the reader's mail user agent to store the attachment.
The following example is taken from RFC 2183, where the header is defined
Content-Disposition: attachment; filename=genome.jpeg;
         modification-date="Wed, 12 February 1997 16:29:51 -0500";
The filename may be encoded as defined by RFC 2231.
As of 2010, a good majority of mail user agents do not follow this prescription fully. The widely used Mozilla Thunderbird mail client makes its own decisions about which MIME parts should be automatically displayed, ignoring the content-disposition headers in the messages. It also sends out newly composed messages with inline content-disposition for all MIME parts. Most users are unaware of how to set the content-disposition to attachment.[4] Many mail user agents also send messages with the file name in the name parameter of the content-type header instead of the filename parameter of the content-disposition header. This practice is discouraged.[5]

lunes, 29 de agosto de 2011

301 redirection with wikidot pages

Visto en http://doc.wikidot.com/module:redirect

Redirect
Short Description
Performs a "301" redirect from a page with optional URL mapping

Description

The Redirect module performs a "301 Permanently Moved" redirection, i.e. it tells a web browser to request another web page.

Attributes

attribute required allowed values default description
destination yes page-name or URL none where to redirect?
When the destination attribute is just an alphanumeric string, e.g. "start", the page which contains the Redirect module will automatically forward the browser to the wiki page called "start". If destination is the whole URL address (e.g. "http://slashdot.org"), the browser will be redirected to this external address.

Mapping

If the destination attribute ends with a slash, e.g. destination="start/" or destination="http://www.example.com/", the current URL will be mapped to the destination in the following way. The code for the module would be:
[[module Redirect destination="http://www.example.com/base/"]]
Now if the Redirect module is placed on page http://your-wiki.wikidot.com/redir the following mapping will be performed:
from to
http://your-wiki.wikidot.com/redir http://www.example.com/base/
http://your-wiki.wikidot.com/redir/mapped-path http://www.example.com/base/mapped-path
http://your-wiki.wikidot.com/redir/mapped-path/file1.html http://www.example.com/base/mapped-path/file1.html

Preventing the redirect

If the Redirect module redirected the browser always there would be no way to edit the actual page. The solution is to pass an extra parameter to the module in the URL as follows:
http://your-wiki.wikidot.com/page-with-redirect/noredirect/true
There should be an information box where the module is placed.
Working with the Redirect module might not be very convenient but even of you have to do this you will not configure it every day ;-)



domingo, 28 de agosto de 2011

Use '=' or LIKE to compare strings in SQL?


LIKE and the equality operator have different purposes, they don't do the same thing: = is much faster, whereas LIKE can interpret wildcards. Use = wherever you can and LIKE wherever you must.

SELECT * FROM user WHERE login LIKE 'Test%';
-- Matches
-- TestUser1
-- TestUser2
-- TestU
-- Test
-- etc.

Registros duplicados con SQL

Here's a handy query for finding duplicates in a table. Suppose you want to find all email addresses in a table that exist more than once:

SELECT email,
COUNT(email) AS NumOccurrences
FROM users
GROUP BY email
HAVING ( COUNT(email) > 1 )

You could also use this technique to find rows that occur exactly once:
SELECT email
FROM users
GROUP BY email
HAVING ( COUNT(email) = 1 )

domingo, 19 de junio de 2011

Expandir textos con JQuery y su plugin Expander

Estoy en pleno desarrollo de una web relacionada con el mundo de los mapas y la cartografía. El tema está es que, dentro de una sola página tienen que convivir textos descriptivos, que en algunos casos pueden ser muy grandes, con mapas interactivos, y siempre es deseable que el mapa ocupe un lugar predominante en el diseño final.

Buscando alguna solución para que de los textos descriptivos solo se muestre una parte, pudiéndose leer el resto al pulsar sobre éstos, me he encontrado un magnífico plugin de la librería javascript JQuery: JQueryExpander.

La verdad es que es muy simple de utilizar:

En primer lugar se "importan" las librerías javascript JQuery, y su plugin JQueryExpander (en el ejemplo uso una librería local, también se puede referenciar la librería publicada por los desarrolladores):






Seguidamente, el texto que se quiera hacer "expandible" hay que marcarlo con etiquetas CSS (div, p, etc:


Finalmente, añadimos un script a la cabecera de la página html (header) que ejecute un código de inicialización al cargarse la página, código que manipula los elementos que hemos marcado como expandibles.



sábado, 23 de abril de 2011

Replace All en Javascript

En ocasiones cuando trabajamos con Javascript, es necesario buscar una cadena de texto y sustituirla por otra.

El API de javascript tiene una función, para los objetos de tipo cadena de texto (String) replace, pero ésta solo sustituye la primera ocurrencia que encuentra.

Así, si tenemos el texto "primero;segundo;tercero" (campos separados por ;, típico cuando trabajamos con ficheros en formato CSV), y con javascript queremos sustituir el separador ; por el separador ',', el siguiente código no funcionará:

"primero;segundo;tercero".replace(";",",")

Pues devolverá el siguiente resultado:
"primero,segundo;tercero" (es decir, solo sustituirá la primera ocurrencia).

Podemos conseguir sustituir todas las ocurrencias del texto a cambiar haciendo uso de expresiones regulares, en concreto de la expresión /textoAcambiar/g (el /g le indica al motor de sustitución basado en expresiones regulares que busque todas las ocurrencias).

Si el texto a sustituir está en una variable javascript, el código a emplear sería el siguiente:


var separator = ";";
var re = new RegExp(separator, "g");
var textoNuevo = "primero;segundo;tercero".replace(re, ",");

Limpiar un Wordpress hackeado

 Check list para limpiar instancias de Wordpress que han sido hackeadas, y para prevenir hackeos. Para técnicos de sistemas con acceso SSH a...