{"id":283,"date":"2011-06-21T15:35:41","date_gmt":"2011-06-21T15:35:41","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=283"},"modified":"2021-12-23T19:16:15","modified_gmt":"2021-12-23T19:16:15","slug":"generar-contrasena-aleatoria-con-php","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/","title":{"rendered":"Generar contrase\u00f1a aleatoria con PHP"},"content":{"rendered":"<p>En todo proyecto web que requiera un registro e inicio de sesi\u00f3n de usuarios, ser\u00eda un detalle y queda mucho m\u00e1s profesional permitir tambi\u00e9n a estos usuarios poder recuperar su contrase\u00f1a.<\/p>\n<p>Puede darse el caso de que el usuario vuelva a tu sitio web despu\u00e9s de 1 a\u00f1o y no recuerde la contrase\u00f1a que introdujo en aquel momento.<\/p>\n<p>Desde mi punto de vista, la opci\u00f3n de permitir recuperar la contrase\u00f1a no puede faltar en ning\u00fan proyecto que requiera registro de usuarios.<\/p>\n<p>Si la contrase\u00f1a est\u00e1 encriptada en la base de datos, que ser\u00eda lo l\u00f3gico, ser\u00e1 pr\u00e1cticamente imposible recuperarla en su formato original a no ser que se guarde tambi\u00e9n sin encriptar. Esto \u00faltimo no lo recomiendo.<\/p>\n<p>La idea ser\u00eda ofrecer una soluci\u00f3n h\u00edbrida que no sea insegura para el usuario como, por ejemplo, que a trav\u00e9s de su email se le pueda enviar por correo electr\u00f3nico una contrase\u00f1a nueva generada de forma aleatoria.<\/p>\n<p>En este art\u00edculo te voy a ense\u00f1ar la funci\u00f3n que utiliza en todos mis proyectos hechos a medida para <strong>generar contrase\u00f1as de forma aleatoria<\/strong>.<\/p>\n<h2>Funci\u00f3n generar contrase\u00f1a aleatoria<\/h2>\n<div id=\"wpshdo_1\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_1\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_1\"><\/a><a id=\"wpshat_1\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_1\"  onClick=\"javascript:wpsh_toggleBlock(1)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_code(1)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_print(1)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_1\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"php\" style=\"font-family:monospace;\"><span class=\"kw2\">function<\/span> generatePassword<span class=\"br0\">&#40;<\/span><span class=\"re0\">$length<\/span><span class=\"br0\">&#41;<\/span>\n<span class=\"br0\">&#123;<\/span>\n    <span class=\"re0\">$key<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;&quot;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"re0\">$pattern<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;1234567890abcdefghijklmnopqrstuvwxyz&quot;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"re0\">$max<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/strlen\"><span class=\"kw3\">strlen<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$pattern<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">-<\/span><span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">for<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$i<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span> <span class=\"re0\">$i<\/span> <span class=\"sy0\">&lt;<\/span> <span class=\"re0\">$length<\/span><span class=\"sy0\">;<\/span> <span class=\"re0\">$i<\/span><span class=\"sy0\">++<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>\n        <span class=\"re0\">$key<\/span> <span class=\"sy0\">.=<\/span> <a href=\"http:\/\/www.php.net\/substr\"><span class=\"kw3\">substr<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$pattern<\/span><span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/mt_rand\"><span class=\"kw3\">mt_rand<\/span><\/a><span class=\"br0\">&#40;<\/span>0<span class=\"sy0\">,<\/span><span class=\"re0\">$max<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> 1<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"br0\">&#125;<\/span>\n    <span class=\"kw1\">return<\/span> <span class=\"re0\">$key<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span><\/pre><\/div><\/div>\n<p>Esta funci\u00f3n recibe un \u00fanico par\u00e1metro y no es m\u00e1s que la longitud de caracteres que tendr\u00e1 la contrase\u00f1a que se generar\u00e1 de forma aleatoria.<\/p>\n<h2>\u00bfCu\u00e1l es la l\u00f3gica de la funci\u00f3n que genera una contrase\u00f1a aleatoria?<\/h2>\n<ul>\n<li>Definimos la variable <em>$key<\/em> vac\u00eda.<\/li>\n<li>Definimos la variable <em>$pattern<\/em> con una cadena con los n\u00fameros del 0 al 9 y las letras del abecedario en min\u00fasculas.<\/li>\n<li>En la variable <em>$max<\/em> asignamos la longitud de la cadena <em>$pattern<\/em>.<\/li>\n<li>Iteramos hasta la la variable <em>$length<\/em> que recibe como par\u00e1metro la funci\u00f3n.<\/li>\n<li>Rellenamos la variable $key con un car\u00e1cter seleccionado aleatoriamente de la cadena $pattern usando la funci\u00f3n <a href=\"https:\/\/www.php.net\/manual\/es\/function.mt-rand.php\" target=\"_blank\" rel=\"noopener\">mt_rand()<\/a> de PHP que justamente permite generar un n\u00famero entero aleatorio.<\/li>\n<li>La funci\u00f3n <a href=\"https:\/\/www.php.net\/manual\/es\/function.substr\" target=\"_blank\" rel=\"noopener\">substr()<\/a> es clave para seleccionar la posici\u00f3n exacta donde se encuentra el car\u00e1cter seleccionado aleatoriamente. Esta funci\u00f3n es muy \u00fatil ya que devuelve parte de una cadena. En este caso, tan solo nos interesa devolver un car\u00e1cter.<\/li>\n<li>Cuando se sale del bucle, se retorna la variable <em>$key<\/em> que contiene la cadena o <strong>contrase\u00f1a aleatoria<\/strong>.<\/li>\n<\/ul>\n<h2>Generar una contrase\u00f1a aleatoria m\u00e1s segura<\/h2>\n<p>Para generar una contrase\u00f1a aleatoria m\u00e1s segura puedes seguir usando la misma funci\u00f3n pero puedes ampliar con may\u00fasculas y caracteres especiales la variable <em>$pattern<\/em>.<\/p>\n<p>Por ejemplo:<\/p>\n<div id=\"wpshdo_2\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_2\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_2\"><\/a><a id=\"wpshat_2\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_2\"  onClick=\"javascript:wpsh_toggleBlock(2)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_code(2)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_print(2)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_2\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"php\" style=\"font-family:monospace;\"><span class=\"re0\">$pattern<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;1234567890abcdefghijklm\u00f1nopqrstuvwxyzABCDEFGHIJKLMN\u00d1OPQRSTUVWXYZ.-_*\/=[]{}#@|~\u00ac&amp;()?\u00bf&quot;<\/span><span class=\"sy0\">;<\/span><\/pre><\/div><\/div>\n<p style=\"text-align: center;\"><a class=\"btn btn-secondary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/php\/genpassword\/\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"fa fa-eye\"><\/i> Ver demo<\/a> <a class=\"btn btn-primary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/php\/genpassword\/genpassword.zip\"><i class=\"fa fa-download\"><\/i> Descargar<\/a><\/p>\n<h2>Conclusiones<\/h2>\n<p>Si quieres que tus usuarios sigan utilizando tus aplicaciones o p\u00e1ginas webs, es muy buena idea ayudarles a recuperar su contrase\u00f1a si se da el caso de que no pueden entrar porque ya no se acuerdan o la han perdido.<\/p>\n<p>La funcionalidad que permite recuperar contrase\u00f1as a los usuarios es m\u00e1s importante de lo que crees.<\/p>\n<p>A menudo, se piensa que no es importante y es una funcionalidad que siempre se deja para el final y es posible que quede en el olvido y nunca se desarrolle. Pues vengo a decirte que puedes perder clientes potenciales si tu aplicaci\u00f3n o p\u00e1gina web no ofrece esta soluci\u00f3n.<\/p>\n<p>Situ\u00e9monos en el ejemplo de una tienda online sin esta caracter\u00edstica. Soy un cliente que se registr\u00f3 hace 1 a\u00f1o y ahora no me acuerdo de la contrase\u00f1a. Quiero comprar pero no existe la posibilidad de recuperar mi contrase\u00f1a. Pierdes la venta en caliente. Mal asunto.<\/p>\n<p>\u00bfQu\u00e9 opinas? \u00bfEs importante para ti esta funci\u00f3n? \u00bfTienes alguna funci\u00f3n mejor? Comp\u00e1rtela y ayuda a la comunidad.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Descubre una funci\u00f3n muy sencilla que te permite generar una contrase\u00f1a o cadena de forma aleatoria.<\/p>\n","protected":false},"author":1,"featured_media":7654,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[79,64],"class_list":["post-283","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php","tag-inputs","tag-password"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Generar contrase\u00f1a aleatoria con PHP - Jose Aguilar Blog<\/title>\n<meta name=\"description\" content=\"Descubre una funci\u00f3n muy sencilla que te permite generar una contrase\u00f1a o cadena de forma aleatoria.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Generar contrase\u00f1a aleatoria con PHP - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"Descubre una funci\u00f3n muy sencilla que te permite generar una contrase\u00f1a o cadena de forma aleatoria.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2011-06-21T15:35:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-12-23T19:16:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/06\/generar-contrasena-aleatoria.png\" \/>\n\t<meta property=\"og:image:width\" content=\"250\" \/>\n\t<meta property=\"og:image:height\" content=\"250\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/\",\"name\":\"Generar contrase\u00f1a aleatoria con PHP - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/06\/generar-contrasena-aleatoria.png\",\"datePublished\":\"2011-06-21T15:35:41+00:00\",\"dateModified\":\"2021-12-23T19:16:15+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"description\":\"Descubre una funci\u00f3n muy sencilla que te permite generar una contrase\u00f1a o cadena de forma aleatoria.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/06\/generar-contrasena-aleatoria.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/06\/generar-contrasena-aleatoria.png\",\"width\":250,\"height\":250,\"caption\":\"Generar contrase\u00f1a aleatoria\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Generar contrase\u00f1a aleatoria con PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Generar contrase\u00f1a aleatoria con PHP - Jose Aguilar Blog","description":"Descubre una funci\u00f3n muy sencilla que te permite generar una contrase\u00f1a o cadena de forma aleatoria.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"Generar contrase\u00f1a aleatoria con PHP - Jose Aguilar Blog","og_description":"Descubre una funci\u00f3n muy sencilla que te permite generar una contrase\u00f1a o cadena de forma aleatoria.","og_url":"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2011-06-21T15:35:41+00:00","article_modified_time":"2021-12-23T19:16:15+00:00","og_image":[{"width":250,"height":250,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/06\/generar-contrasena-aleatoria.png","type":"image\/png"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/","url":"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/","name":"Generar contrase\u00f1a aleatoria con PHP - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/06\/generar-contrasena-aleatoria.png","datePublished":"2011-06-21T15:35:41+00:00","dateModified":"2021-12-23T19:16:15+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"description":"Descubre una funci\u00f3n muy sencilla que te permite generar una contrase\u00f1a o cadena de forma aleatoria.","breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/06\/generar-contrasena-aleatoria.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2011\/06\/generar-contrasena-aleatoria.png","width":250,"height":250,"caption":"Generar contrase\u00f1a aleatoria"},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/generar-contrasena-aleatoria-con-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Generar contrase\u00f1a aleatoria con PHP"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=283"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/283\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/7654"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}