Cómo crear un blog en PHP y base de datos MySQL

2xsoftware - Blog

Estoy emocionado de llevarlos a través de este tutorial tan esperado, finalmente. Le mostraré cómo crear una aplicación de blog completa desde cero utilizando PHP y la base de datos MySQL. Un blog como lo conoce es una aplicación en la que algunos usuarios (usuarios administradores) pueden crear, editar, actualizar y publicar artículos para que estén disponibles al público para leerlos y tal vez comentarlos. Los usuarios y el público pueden navegar a través de un catálogo de estos artículos y hacer clic en cualquiera para leer más sobre el artículo y comentarlo.

Características:

  • Un sistema de registro de usuarios que gestiona dos tipos de usuarios: Administración y Usuarios normales
  • El blog tendrá un área de administración y un área pública separadas entre sí.
  • El área de administración será accesible solo para los usuarios administradores que hayan iniciado sesión y el área pública para los usuarios normales y el público en general
  • En la sección de administración, existen dos tipos de administradores:
    • Administración:
      • Puede crear, ver, actualizar, publicar / anular la publicación y eliminar NINGÚN correo.
      • También puede crear, ver, actualizar y eliminar temas.
      • Un usuario administrador (y solo un usuario administrador) puede crear otro usuario administrador o autor
      • Puede ver, actualizar y eliminar a otros usuarios administradores
    • Autor:
      • Puede crear, ver, actualizar y eliminar solo publicaciones creadas por ellos mismos
      • Ellos no puedo publicar una publicación. Toda la publicación de publicaciones la realiza el usuario administrador.
  • Solo las publicaciones publicadas se muestran en el área pública para su visualización
  • Cada publicación se crea bajo un tema en particular.
  • Existe una relación de varios a varios entre publicaciones y temas.
  • La página pública enumera las publicaciones; cada publicación se muestra con una imagen destacada, autor y fecha de creación.
  • El usuario puede navegar a través de todos los listados de publicaciones bajo un tema en particular haciendo clic en el tema.
  • Cuando un usuario hace clic en una publicación, puede ver la publicación completa y comentar en la parte inferior de las publicaciones.
  • Se implementa un sistema de comentarios Disqus que permite a los usuarios comentar usando cuentas de redes sociales con plataformas como Facebook, GooglePlus, Twitter.

Implementación

Bien, de inmediato comencemos a codificar.

Llamaremos al proyecto complete-blog-php. En el directorio de su servidor (htdocs o www), cree una carpeta llamada complete-blog-php. Abra esta carpeta en un editor de texto de su elección, por ejemplo, Sublime Text. Cree las siguientes subcarpetas dentro de él: admin, includes y static.

Las 3 carpetas contendrán los siguientes contenidos:

  • administración: Retendrá archivos para el área administrativa de backend. Archivos relacionados con la creación, visualización, actualización y eliminación de publicaciones, temas y usuarios.
  • incluye: Contendrá archivos que contengan fragmentos de código que se incluirán en una o más páginas. Por ejemplo, archivos para visualización de errores
  • estático: Mantenga archivos estáticos como imágenes, hojas de estilo CSS, Javascript.

En la carpeta raíz de la aplicación, cree un archivo llamado index.php:

Ábrelo y pega este código en él:

<!DOCTYPE html>
<html>
<head>
	<!-- Google Fonts -->
	<link href="https://fonts.googleapis.com/css?family=Averia+Serif+Libre|Noto+Serif|Tangerine" rel="stylesheet">
	<!-- Styling for public area -->
	<link rel="stylesheet" href="static/css/public_styling.css">
	<meta charset="UTF-8">
	<title>LifeBlog | Home </title>
</head>
<body>
	<!-- container - wraps whole page -->
	<div class="container">
		<!-- navbar -->
		<div class="navbar">
			<div class="logo_div">
				<a href="index.php"><h1>LifeBlog</h1></a>
			</div>
			<ul>
			  <li><a class="active" href="index.php">Home</a></li>
			  <li><a href="#news">News</a></li>
			  <li><a href="#contact">Contact</a></li>
			  <li><a href="#about">About</a></li>
			</ul>
		</div>
		<!-- // navbar -->

		<!-- Page content -->
		<div class="content">
			<h2 class="content-title">Recent Articles</h2>
			<hr>
			<!-- more content still to come here ... -->
		</div>
		<!-- // Page content -->

		<!-- footer -->
		<div class="footer">
			<p>MyViewers &copy; <?php echo date('Y'); ?></p>
		</div>
		<!-- // footer -->

	</div>
	<!-- // container -->
</body>
</html>

Entre las etiquetas , hemos incluido enlaces a algunas fuentes de Google. También hay un enlace a nuestro archivo de estilo public_styling.css, que crearemos en un minuto.

Observe también el elemento

con una clase establecida en envase que envuelven toda nuestra aplicación, incluida la barra de navegación, el contenido de la página y las secciones de pie de página de la página.

Para ver esto en su navegador, vaya a http: //localhost/complete-blog-php/index.php.

No se ve tan genial como te hubiera encantado, ¿verdad?

El estático La carpeta como se indicó anteriormente contendrá, entre otras cosas, el estilo del sitio. Cree 3 subcarpetas dentro de la carpeta estática: css, imagenes, js. En la subcarpeta css que acaba de crear, cree un archivo llamado public_styling.css.

Abierto public_styling.css y agregue este código de estilo:

/****************
*** DEFAULTS
*****************/
* { margin: 0px; padding: 0px; }

html { height: 100%; box-sizing: border-box; }
body {
  position: relative;
  margin: 0;
  padding-bottom: 6rem;
  min-height: 100%;
}
/* HEADINGS DEFAULT */
h1, h2, h3, h4, h5, h6 { color: #444; font-family: 'Averia Serif Libre', cursive; }
a { text-decoration: none; }
ul, ol { margin-left: 40px; }
hr { margin: 10px 0px; opacity: .25; }

/* FORM DEFAULTS */
form h2 {
	margin: 25px auto;
	text-align: center;
	font-family: 'Averia Serif Libre', cursive;
}
form input {
	width: 100%;
	display: block;
	padding: 13px 13px;
	font-size: 1em;
	margin: 5px auto 10px;
	border-radius: 3px;
	box-sizing : border-box;
	background: transparent;
	border: 1px solid #3E606F;
}
form input:focus {
	outline: none;
}
/* BUTTON DEFAULT */
.btn {
	color: white;
	background: #4E6166;
	text-align: center;
	border: none;
	border-radius: 5px;
	display: block;
	letter-spacing: .1em;
	margin: 10px 0px;
	padding: 13px 20px;
	text-decoration: none;
}
.container {
	width: 80%;
	margin: 0px auto;
}
/* NAVBAR */
.navbar {
	margin: 0 auto;
    overflow: hidden;
	background-color: #3E606F;
    border-radius: 0px 0px 6px 6px;
}
.navbar ul {
    list-style-type: none;
    float: right;
}
.navbar ul li {
    float: left;
    font-family: 'Noto Serif', serif;
}
.navbar ul li a {
    display: block;
    color: white;
    text-align: center;
    padding: 20px 28px;
    text-decoration: none;
}
.navbar ul li a:hover {
	color: #B9E6F2;
    background-color: #334F5C;
}

/* LOGO */
.navbar .logo_div {
	float: left; 
	padding-top: 5px;
	padding-left: 40px;
}
.navbar .logo_div h1 {
	color: #B9E6F2;
	font-size: 3em;
	letter-spacing: 5px;
	font-weight: 100;
	font-family: 'Tangerine', cursive;
}

/* FOOTER */
.footer {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  color: white;
  background-color: #73707D;
  text-align: center;
  width: 80%;
  margin: 20px auto 0px;
  padding: 20px 0px;
}

Este código comienza con el estilo predeterminado para el sitio seguido por el estilo de la barra de navegación y el del pie de página.

Nuestra página, sin embargo, tiene algunos segmentos de código que se repetirán en muchas otras páginas del sitio web. Por ejemplo, la mayoría de las páginas necesitarán una barra de navegación y el pie de página, así como los enlaces al estilo y las fuentes que se encuentran en la sección del encabezado. En PHP, podemos escribir un fragmento de código en un archivo e incluirlo en una posición particular en varios otros archivos. Esto es lo mismo que escribir ese mismo código en esas ubicaciones pero con la ventaja de que evita la repetición de código. Hacemos esto usando el incluye o Exigir palabras clave.

Como ya habrás adivinado, es hora de hacer uso de nuestra incluye carpeta que creamos al principio. Las secciones que se repiten son la sección del encabezado, la barra de navegación y el pie de página. Entonces, en su carpeta de inclusiones, cree 3 archivos a saber head_section.php, navbar.php y footer.php.

Ve a la index.php archivo, seleccione la parte del código desde la primera línea hasta e incluyendo el «UTF-8«> etiqueta directamente encima de las etiquetas y córtela. Ahora dirígete al archivo recién creado <span class="marker">complete-blog-php / incluye / head_section.php</span> y pega el código en él. </p> <p>Entonces el<span class="marker"> head_section.php</span> archivo tiene el siguiente código:</p> <pre><code class="language-php"><!DOCTYPE html> <html> <head> <!-- Google Fonts --> <link href="https://fonts.googleapis.com/css?family=Averia+Serif+Libre|Noto+Serif|Tangerine" rel="stylesheet"> <!-- Styling for public area --> <link rel="stylesheet" href="static/css/public_styling.css"> <meta charset="UTF-8"></code></pre> <p>De vuelta en tu <span class="marker">index.php</span> file, reemplace el código que acaba de cortar con la siguiente línea:<span id="ezoic-pub-ad-placeholder-114" class="ezoic-adpicker-ad"/><span class="ezoic-ad large-leaderboard-2 large-leaderboard-2114 adtester-container adtester-container-114" data-ez-name="codewithawa_com-large-leaderboard-2"><span id="div-gpt-ad-codewithawa_com-large-leaderboard-2-0" ezaw="300" ezah="250" style="position:relative;z-index:0;display:inline-block;padding:0;min-height:250px;min-width:300px;" class="ezoic-ad"/></span></p> <pre><code class="language-php"><?php require_once('includes/head_section.php') ?></code></pre> <p>Tenga en cuenta que la línea que sigue inmediatamente a esta línea de inclusión es la etiqueta <title>. No incluimos la etiqueta <title> en el <span class="marker">head_section.php</span> archivo porque el título de cada página puede tener que ser diferente de los demás para fines de optimización de motor de búsqueda.</p> <p>Ahora hagamos lo mismo con la sección de la barra de navegación y el pie de página. </p> <p>En tus <span class="marker">index.php</span> archivo, seleccione y corte el código de la barra de navegación donde se indica con un comentario y péguelo dentro <span class="marker">navbar.php</span> en la carpeta incluye. Aquí está <span class="marker">navbar.php</span> después de pegar:</p> <pre><code class="language-php"><div class="navbar"> <div class="logo_div"> <a href="index.php"><h1>LifeBlog</h1></a> </div> <ul> <li><a class="active" href="index.php">Home</a></li> <li><a href="#news">News</a></li> <li><a href="#contact">Contact</a></li> <li><a href="#about">About</a></li> </ul> </div></code></pre> <p>Luego, en lugar de la barra de navegación en su <span class="marker">index.php</span>, agregue esta línea:</p> <pre><code class="language-php"><!-- navbar --> <?php include('includes/navbar.php') ?></code></pre> <p>En cuanto al pie de página, seleccione y corte el código desde la etiqueta </p> <div> del pie de página de apertura hasta la última línea de la página, y péguelo en el archivo footer.php recién creado. Aquí está <span class="marker">footer.php</span> archivo después de pegar:</p> <pre><code class="language-php"> <div class="footer"> <p>MyViewers &copy; <?php echo date('Y'); ?></p> </div> </div> <!-- // container --> </body> </html></code></pre> <p>Luego reemplace esta sección en la página index.php con el include para footer.php</p> <pre><code class="language-php"><!-- footer --> <?php include('includes/footer.php') ?></code></pre> <p>Después de todo este reordenamiento, nuestro <span class="marker">index.php</span> archivo tiene este aspecto:<span id="ezoic-pub-ad-placeholder-115" class="ezoic-adpicker-ad"/><span class="ezoic-ad leader-1 leader-1115 adtester-container adtester-container-115" data-ez-name="codewithawa_com-leader-1"><span id="div-gpt-ad-codewithawa_com-leader-1-0" ezaw="300" ezah="250" style="position:relative;z-index:0;display:inline-block;padding:0;min-height:250px;min-width:300px;" class="ezoic-ad"/></span></p> <pre><code class="language-php"><?php require_once('includes/head_section.php') ?> <title>LifeBlog | Home </title> </head> <body> <!-- container - wraps whole page --> <div class="container"> <!-- navbar --> <?php include('includes/navbar.php') ?> <!-- Page content --> <div class="content"> <h2 class="content-title">Recent Articles</h2> <hr> <!-- more content still to come here ... --> </div> <!-- // Page content --> <!-- footer --> <?php include('includes/footer.php') ?> </code></pre> <p>Si vuelve a cargar la página, no se observará ningún cambio.</p> <p>Ahora agreguemos un banner en la página de inicio inmediatamente debajo de la barra de navegación. Crea un nuevo archivo llamado <span class="marker">banner.php</span> en tus <span class="marker">blog-completo-</span><span class="marker">php</span><span class="marker">/ incluye</span> carpeta y pegue este código en ella:</p> <pre><code class="language-php"><div class="banner"> <div class="welcome_msg"> <h1>Today's Inspiration</h1> <p> One day your life <br> will flash before your eyes. <br> Make sure it's worth watching. <br> <span>~ Gerard Way</span> </p> <a href="register.php" class="btn">Join us!</a> </div> <div class="login_div"> <form action="index.php" method="post" > <h2>Login</h2> <input type="text" name="username" placeholder="Username"> <input type="password" name="password" placeholder="Password"> <button class="btn" type="submit" name="login_btn">Sign in</button> </form> </div> </div></code></pre> <p>Incluya esto en su <span class="marker">index.php</span> inmediatamente debajo de la barra de navegación incluyen:</p> <pre><code class="language-php"><!-- navbar is up here... --> <!-- banner --> <?php include('includes/banner.php') ?></code></pre> <p>POR FAVOR DESCARGAR<a href="https://unsplash.com/photos/LrPKL7jOldI" target="_blank" rel="noopener"> esta imagen</a>, cámbiale el nombre a <span class="marker">banner.jpg</span> y colócalo en tu <span class="marker">blog-completo-</span><span class="marker">php</span><span class="marker">/ static / images /</span> carpeta. Es la imagen de fondo del banner.</p> <p>Una vez que haya hecho eso, agregue este código CSS en su <span class="marker">public_styling.css</span> filete; es el estilo del banner:</p> <pre><code class="language-css">/* BANNER: Welcome message; */ .banner { margin: 5px auto; min-height: 400px; color: white; border-radius: 5px; background-image: url('../images/banner.jpg'); background-size: 100% 100%; } .banner .welcome_msg { width: 45%; float: left; padding: 20px; } .banner .welcome_msg h1 { color: #B9E6F2; margin: 25px 0px; font-size: 2.4em; font-family: 'Averia Serif Libre', cursive; } .banner .welcome_msg p { color: white; font-size: 1.5em; line-height: 1.8em; font-family: 'Noto Serif', serif; } .banner .welcome_msg p span { font-size: .81em; color: #3E606F; } .banner .welcome_msg a { width: 30%; margin: 20px 0px; padding: 12px 15px; font-size: 1.2em; text-decoration: none; } .banner .welcome_msg a:hover { background: #374447; } /* BANNER: Login Form; */ .banner .login_div { width: 50%; float: left; } .banner .login_div form { margin-top: 40px; } .banner .login_div form h2 { color: white; margin-bottom: 20px; font-family: 'Noto Serif', serif; } .banner .login_div form input { width: 60%; color: white; border: 1px solid white; margin: 10px auto; letter-spacing: 1.3px; font-family: 'Noto Serif', serif; } .banner .login_div form button { display: block; background: #006384; margin-left: 20%; }</code></pre> <p>Vuelve a cargar la página ahora.</p> <p>Si hiciste todo correctamente, tendrás un hermoso banner con la imagen. <span class="marker">banner.jpg</span> en su fondo, un formulario de inicio de sesión a la derecha y una cita inspiradora junto con un botón ‘Únase a nosotros’ a la izquierda. ¡Frio!</p> <p><span id="ezoic-pub-ad-placeholder-116" class="ezoic-adpicker-ad"/><span class="ezoic-ad large-mobile-banner-1 large-mobile-banner-1116 adtester-container adtester-container-116" data-ez-name="codewithawa_com-large-mobile-banner-1"><span id="div-gpt-ad-codewithawa_com-large-mobile-banner-1-0" ezaw="250" ezah="250" style="position:relative;z-index:0;display:inline-block;padding:0;width:100%;max-width:1200px;margin-left:auto !important;margin-right:auto !important;min-height:90px;min-width:728px;" class="ezoic-ad"/></span>Creemos un archivo para inicializar las variables globales de nuestra aplicación. En la carpeta raíz (complete-blog-php) de su aplicación, cree un archivo con nombre <span class="marker">config.php</span> y pega este código en él:</p> <pre><code class="language-php"><?php session_start(); // connect to database // coming soon... define ('ROOT_PATH', realpath(dirname(__FILE__))); define('BASE_URL', 'http://localhost/complete-blog-php/'); ?></code></pre> <p><span class="marker">ROOT_PATH</span> se establece en la dirección física con respecto al sistema operativo, al directorio actual en el que reside este archivo (config.php). En mi máquina, por ejemplo, ROOT_PATH tiene el valor <span class="marker">/ocho/</span><span class="marker">lampp</span><span class="marker">/</span><span class="marker">htdocs</span><span class="marker">/ blog-completo-</span><span class="marker">php /</span>. Se utiliza para incluir archivos físicos como archivos de código fuente PHP (como los que acabamos de incluir), archivos físicos descargables como imágenes, archivos de video, archivos de audio, etc. Pero en este tutorial, lo usaremos solo para incluir archivos fuente PHP.</p> <p><span class="marker">BASE_URL</span> es simplemente una dirección web que establece una URL que apunta a la raíz de nuestro sitio web. En nuestro caso, su valor es <span class="marker">http: // localhost / complete-blog-php.</span> Se utiliza para formar enlaces a CSS, imágenes, javascript. </p> <p>Espero haber explicado bastante bien esas dos variables. Si no lo entendió, quédese, puede averiguarlo mientras usamos las variables.</p> <p>Ahora incluyamos el recién creado <span class="marker">config.php</span> archivar como nuestro <strong>muy primera línea</strong> en index.php. Después de incluirlo, vamos a modificar los cuatro lugares en nuestro código donde incluimos otros segmentos de código para que ahora usen la variable <span class="marker">ROOT_PATH</span> al señalar los archivos incluidos. Después de todos estos cambios, nuestro <span class="marker">index.php</span> se verá así:</p> <pre><code class="language-php"><!-- The first include should be config.php --> <?php require_once('config.php') ?> <?php require_once( ROOT_PATH . '/includes/head_section.php') ?> <title>LifeBlog | Home </title> </head> <body> <!-- container - wraps whole page --> <div class="container"> <!-- navbar --> <?php include( ROOT_PATH . '/includes/navbar.php') ?> <!-- // navbar --> <!-- banner --> <?php include( ROOT_PATH . '/includes/banner.php') ?> <!-- // banner --> <!-- Page content --> <div class="content"> <h2 class="content-title">Recent Articles</h2> <hr> <!-- more content still to come here ... --> </div> <!-- // Page content --> <!-- footer --> <?php include( ROOT_PATH . '/includes/footer.php') ?> <!-- // footer --></code></pre> <p>Esta forma de incluir archivos tiene la ventaja de que, si posteriormente algunos archivos se mueven a otros directorios, es posible que no necesitemos actualizar las inclusiones. Además, si decidimos cambiar la ruta al directorio raíz, solo lo haremos en un lugar, es decir, en el <span class="marker">config.php</span> filete.</p> <p>Hemos terminado con la configuración básica del área pública. Hasta ahora, la aplicación no es dinámica. Aún no hemos creado una base de datos y si hace clic en el botón Únase a nosotros, obtendrá un error que dice «archivo no encontrado». El inicio de sesión de usuario aún no se ha implementado. Todos estos se tratarán en las siguientes partes de este tutorial.</p> <p>Espero que lo hayan disfrutado. Si te gustó esta publicación y quieres más, no olvides compartirla con tus amigos usando cualquiera de los enlaces de redes sociales a continuación. Gracias</p> <p>Siguiente parte: El diseño de la base de datos.</p> </p></div> <p><script>(function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src="https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.11&appId=187693445124711"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script></p> <div class="kk-star-ratings kksr-valign-bottom kksr-align-center " data-payload="{"align":"center","id":"1122","slug":"default","valign":"bottom","reference":"auto","count":"624","readonly":"","score":"4.8","best":"5","gap":"4","greet":"Valora este artculo post","legend":"4.8\/5 - (624 votos)","size":"24","width":"132.4","_legend":"{score}\/{best} - ({count} {votes})"}"> <div class="kksr-stars"> <div class="kksr-stars-inactive"> <div class="kksr-star" data-star="1" style="padding-right: 4px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </div> <div class="kksr-star" data-star="2" style="padding-right: 4px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </div> <div class="kksr-star" data-star="3" style="padding-right: 4px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </div> <div class="kksr-star" data-star="4" style="padding-right: 4px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </div> <div class="kksr-star" data-star="5" style="padding-right: 4px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </div> </div> <div class="kksr-stars-active" style="width: 132.4px;"> <div class="kksr-star" style="padding-right: 4px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </div> <div class="kksr-star" style="padding-right: 4px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </div> <div class="kksr-star" style="padding-right: 4px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </div> <div class="kksr-star" style="padding-right: 4px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </div> <div class="kksr-star" style="padding-right: 4px"> <div class="kksr-icon" style="width: 24px; height: 24px;"></div> </div> </div> </div> <div class="kksr-legend"> 4.8/5 - (624 votos) </div> </div> </div> <div class="text-base link inline"> </div> </div> </article> <div class="mx-auto yuki-max-w-content"> <div class="yuki-socials yuki-post-socials yuki-socials-custom yuki-socials-rounded yuki-socials-solid"> <a class="yuki-social-link" target="_blank" rel="nofollow" style="--yuki-official-color: #557dbc;" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2F2xsoftware.es%2F2021%2F12%2F15%2Fcomo-crear-un-blog-en-php-y-base-de-datos-mysql%2F"> <span class="yuki-social-icon"> <i class="fab fa-facebook"></i> </span> </a> <a class="yuki-social-link" target="_blank" rel="nofollow" style="--yuki-official-color: #7acdee;" href="https://twitter.com/share?url=https%3A%2F%2F2xsoftware.es%2F2021%2F12%2F15%2Fcomo-crear-un-blog-en-php-y-base-de-datos-mysql%2F&text=C%C3%B3mo%20crear%20un%20blog%20en%20PHP%20y%20base%20de%20datos%20MySQL"> <span class="yuki-social-icon"> <i class="fab fa-twitter"></i> </span> </a> </div> </div> <div class="yuki-max-w-content mx-auto"> <nav class="navigation yuki-post-navigation" aria-label="<span class="nav-subtitle screen-reader-text">Page</span>"> <h2 class="screen-reader-text"><span class="nav-subtitle screen-reader-text">Page</span></h2> <div class="nav-links"><div class="nav-previous"><a href="https://2xsoftware.es/2021/12/15/php-crud-cree-edite-actualice-y-elimine-publicaciones-con-la-base-de-datos-mysql/" rel="prev"><div class="prev-post-thumbnail post-thumbnail"><img width="300" height="197" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20300%20197'%3E%3C/svg%3E" class="attachment-medium size-medium wp-post-image" alt="PHP CRUD Cree, edite, actualice y elimine publicaciones con la base de datos MySQL" decoding="async" fetchpriority="high" data-lazy-srcset="https://2xsoftware.es/wp-content/uploads/2021/12/crud_featured_image.png.2017-07-15.1500105217-300x197.png 300w, https://2xsoftware.es/wp-content/uploads/2021/12/crud_featured_image.png.2017-07-15.1500105217-768x503.png 768w, https://2xsoftware.es/wp-content/uploads/2021/12/crud_featured_image.png.2017-07-15.1500105217.png 900w" data-lazy-sizes="(max-width: 300px) 100vw, 300px" data-lazy-src="https://2xsoftware.es/wp-content/uploads/2021/12/crud_featured_image.png.2017-07-15.1500105217-300x197.png" /><noscript><img width="300" height="197" src="https://2xsoftware.es/wp-content/uploads/2021/12/crud_featured_image.png.2017-07-15.1500105217-300x197.png" class="attachment-medium size-medium wp-post-image" alt="PHP CRUD Cree, edite, actualice y elimine publicaciones con la base de datos MySQL" decoding="async" fetchpriority="high" srcset="https://2xsoftware.es/wp-content/uploads/2021/12/crud_featured_image.png.2017-07-15.1500105217-300x197.png 300w, https://2xsoftware.es/wp-content/uploads/2021/12/crud_featured_image.png.2017-07-15.1500105217-768x503.png 768w, https://2xsoftware.es/wp-content/uploads/2021/12/crud_featured_image.png.2017-07-15.1500105217.png 900w" sizes="(max-width: 300px) 100vw, 300px" /></noscript><i class="fas fa-arrow-left-long"></i></div><div class="item-wrap px-gutter"><span class="item-label">Previous Post</span><span class="item-title">PHP CRUD Cree, edite, actualice y elimine publicaciones con la base de datos MySQL</span></div></a></div><div class="nav-next"><a href="https://2xsoftware.es/2021/12/15/carga-de-imagenes-usando-php-y-base-de-datos-mysql/" rel="next"><div class="next-post-thumbnail post-thumbnail"><img width="300" height="215" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20300%20215'%3E%3C/svg%3E" class="attachment-medium size-medium wp-post-image" alt="Carga de imágenes usando php y base de datos MySQL" decoding="async" data-lazy-srcset="https://2xsoftware.es/wp-content/uploads/2021/12/image_upload_featured_image.png.2017-07-16.image-upload-using-php-and-mysql-database-300x215.png 300w, https://2xsoftware.es/wp-content/uploads/2021/12/image_upload_featured_image.png.2017-07-16.image-upload-using-php-and-mysql-database.png 701w" data-lazy-sizes="(max-width: 300px) 100vw, 300px" data-lazy-src="https://2xsoftware.es/wp-content/uploads/2021/12/image_upload_featured_image.png.2017-07-16.image-upload-using-php-and-mysql-database-300x215.png" /><noscript><img width="300" height="215" src="https://2xsoftware.es/wp-content/uploads/2021/12/image_upload_featured_image.png.2017-07-16.image-upload-using-php-and-mysql-database-300x215.png" class="attachment-medium size-medium wp-post-image" alt="Carga de imágenes usando php y base de datos MySQL" decoding="async" srcset="https://2xsoftware.es/wp-content/uploads/2021/12/image_upload_featured_image.png.2017-07-16.image-upload-using-php-and-mysql-database-300x215.png 300w, https://2xsoftware.es/wp-content/uploads/2021/12/image_upload_featured_image.png.2017-07-16.image-upload-using-php-and-mysql-database.png 701w" sizes="(max-width: 300px) 100vw, 300px" /></noscript><i class="fas fa-arrow-right-long"></i></div><div class="item-wrap px-gutter"><span class="item-label">Next Post</span><span class="item-title">Carga de imágenes usando php y base de datos MySQL</span></div></a></div></div> </nav></div> <div class="yuki-max-w-content mx-auto"> <div class="yuki-related-posts-wrap yuki-heading yuki-heading-style-1"> <h3 class="heading-content uppercase my-gutter">Related Posts</h3> <div class="flex flex-wrap yuki-related-posts-list"> <div class="card-wrapper"> <article data-card-layout="archive-grid" class="card overflow-hidden h-full post-5728 post type-post status-publish format-standard has-post-thumbnail hentry category-tutoriales tag-2xsoftware tag-archivos tag-cambios tag-monitor tag-para tag-process tag-procmon tag-rastrear tag-registros tag-uso post-ftoc card-thumb-motion"> <a href="https://2xsoftware.es/2023/08/15/uso-de-process-monitor-procmon-para-rastrear-cambios-en-archivos-y-registros-2xsoftware/" class="card-thumbnail entry-thumbnail last:mb-0"> <img width="596" height="243" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20596%20243'%3E%3C/svg%3E" class="w-full h-full wp-post-image" alt="" decoding="async" data-lazy-srcset="https://2xsoftware.es/wp-content/uploads/2023/08/Uso-de-Process-Monitor-ProcMon-para-rastrear-cambios-en-archivos.png 596w, https://2xsoftware.es/wp-content/uploads/2023/08/Uso-de-Process-Monitor-ProcMon-para-rastrear-cambios-en-archivos-300x122.png 300w" data-lazy-sizes="(max-width: 596px) 100vw, 596px" data-lazy-src="https://2xsoftware.es/wp-content/uploads/2023/08/Uso-de-Process-Monitor-ProcMon-para-rastrear-cambios-en-archivos.png" /><noscript><img width="596" height="243" src="https://2xsoftware.es/wp-content/uploads/2023/08/Uso-de-Process-Monitor-ProcMon-para-rastrear-cambios-en-archivos.png" class="w-full h-full wp-post-image" alt="" decoding="async" srcset="https://2xsoftware.es/wp-content/uploads/2023/08/Uso-de-Process-Monitor-ProcMon-para-rastrear-cambios-en-archivos.png 596w, https://2xsoftware.es/wp-content/uploads/2023/08/Uso-de-Process-Monitor-ProcMon-para-rastrear-cambios-en-archivos-300x122.png 300w" sizes="(max-width: 596px) 100vw, 596px" /></noscript> </a> <div class="card-content"> <h4 class="entry-title mb-half-gutter last:mb-0"><a class="link" href="https://2xsoftware.es/2023/08/15/uso-de-process-monitor-procmon-para-rastrear-cambios-en-archivos-y-registros-2xsoftware/" rel="bookmark">Uso de Process Monitor (ProcMon) para rastrear cambios en archivos y registros – 2xsoftware</a> </h4> <div class="entry-excerpt yuki-raw-html mb-gutter last:mb-0"> 1.1K El Monitoreo de procesos (ProcMon) La herramienta se utiliza<a class="yuki-entry-excerpt-more yuki-entry-excerpt-more-link mx-1" href="https://2xsoftware.es/2023/08/15/uso-de-process-monitor-procmon-para-rastrear-cambios-en-archivos-y-registros-2xsoftware/">...</a> </div> <div class="entry-metas mb-half-gutter last:mb-0"> <span class="byline meta-item"> <i class="fas fa-feather"></i><a class="entry-meta-link" href="https://2xsoftware.es/author/mitzamitza-es/">@2xsoftware.e</a></span><span class="meta-divider"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 20 20"><path d="M7.8 10c0 1.215 0.986 2.2 2.201 2.2s2.199-0.986 2.199-2.2c0-1.215-0.984-2.199-2.199-2.199s-2.201 0.984-2.201 2.199z"></path></svg></span><span class="meta-item posted-on"><i class="far fa-calendar"></i><a class="entry-meta-link" href="https://2xsoftware.es/2023/08/15/uso-de-process-monitor-procmon-para-rastrear-cambios-en-archivos-y-registros-2xsoftware/" rel="bookmark"><span class="entry-date"><time class="published" datetime="2023-08-15T04:56:14+00:00">Ago 15, 2023</time><time class="updated hidden" datetime="2023-08-15T04:56:21+00:00">Ago 15, 2023</time></span></a></span><span class="meta-divider"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 20 20"><path d="M7.8 10c0 1.215 0.986 2.2 2.201 2.2s2.199-0.986 2.199-2.2c0-1.215-0.984-2.199-2.199-2.199s-2.201 0.984-2.201 2.199z"></path></svg></span> </div> </article> </div> <div class="card-wrapper"> <article data-card-layout="archive-grid" class="card overflow-hidden h-full post-5725 post type-post status-publish format-standard has-post-thumbnail hentry category-tutoriales tag-2xsoftware tag-como tag-con tag-estado tag-herramienta tag-migracion tag-migrar tag-perfiles tag-usmt tag-usuario tag-windows post-ftoc card-thumb-motion"> <a href="https://2xsoftware.es/2023/08/15/como-migrar-perfiles-de-usuario-con-la-herramienta-de-migracion-de-estado-de-usuario-usmt-en-windows-10-2xsoftware/" class="card-thumbnail entry-thumbnail last:mb-0"> <img width="620" height="450" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20620%20450'%3E%3C/svg%3E" class="w-full h-full wp-post-image" alt="" decoding="async" data-lazy-srcset="https://2xsoftware.es/wp-content/uploads/2023/08/Como-migrar-perfiles-de-usuario-con-la-herramienta-de-migracion.png 620w, https://2xsoftware.es/wp-content/uploads/2023/08/Como-migrar-perfiles-de-usuario-con-la-herramienta-de-migracion-300x218.png 300w" data-lazy-sizes="(max-width: 620px) 100vw, 620px" data-lazy-src="https://2xsoftware.es/wp-content/uploads/2023/08/Como-migrar-perfiles-de-usuario-con-la-herramienta-de-migracion.png" /><noscript><img width="620" height="450" src="https://2xsoftware.es/wp-content/uploads/2023/08/Como-migrar-perfiles-de-usuario-con-la-herramienta-de-migracion.png" class="w-full h-full wp-post-image" alt="" decoding="async" srcset="https://2xsoftware.es/wp-content/uploads/2023/08/Como-migrar-perfiles-de-usuario-con-la-herramienta-de-migracion.png 620w, https://2xsoftware.es/wp-content/uploads/2023/08/Como-migrar-perfiles-de-usuario-con-la-herramienta-de-migracion-300x218.png 300w" sizes="(max-width: 620px) 100vw, 620px" /></noscript> </a> <div class="card-content"> <h4 class="entry-title mb-half-gutter last:mb-0"><a class="link" href="https://2xsoftware.es/2023/08/15/como-migrar-perfiles-de-usuario-con-la-herramienta-de-migracion-de-estado-de-usuario-usmt-en-windows-10-2xsoftware/" rel="bookmark">¿Cómo migrar perfiles de usuario con la herramienta de migración de estado de usuario (USMT) en Windows 10? – 2xsoftware</a> </h4> <div class="entry-excerpt yuki-raw-html mb-gutter last:mb-0"> 2K Una de las herramientas más populares para migrar perfiles<a class="yuki-entry-excerpt-more yuki-entry-excerpt-more-link mx-1" href="https://2xsoftware.es/2023/08/15/como-migrar-perfiles-de-usuario-con-la-herramienta-de-migracion-de-estado-de-usuario-usmt-en-windows-10-2xsoftware/">...</a> </div> <div class="entry-metas mb-half-gutter last:mb-0"> <span class="byline meta-item"> <i class="fas fa-feather"></i><a class="entry-meta-link" href="https://2xsoftware.es/author/mitzamitza-es/">@2xsoftware.e</a></span><span class="meta-divider"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 20 20"><path d="M7.8 10c0 1.215 0.986 2.2 2.201 2.2s2.199-0.986 2.199-2.2c0-1.215-0.984-2.199-2.199-2.199s-2.201 0.984-2.201 2.199z"></path></svg></span><span class="meta-item posted-on"><i class="far fa-calendar"></i><a class="entry-meta-link" href="https://2xsoftware.es/2023/08/15/como-migrar-perfiles-de-usuario-con-la-herramienta-de-migracion-de-estado-de-usuario-usmt-en-windows-10-2xsoftware/" rel="bookmark"><span class="entry-date"><time class="published" datetime="2023-08-15T03:53:41+00:00">Ago 15, 2023</time><time class="updated hidden" datetime="2023-08-15T03:53:49+00:00">Ago 15, 2023</time></span></a></span><span class="meta-divider"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 20 20"><path d="M7.8 10c0 1.215 0.986 2.2 2.201 2.2s2.199-0.986 2.199-2.2c0-1.215-0.984-2.199-2.199-2.199s-2.201 0.984-2.201 2.199z"></path></svg></span> </div> </article> </div> <div class="card-wrapper"> <article data-card-layout="archive-grid" class="card overflow-hidden h-full post-5719 post type-post status-publish format-standard has-post-thumbnail hentry category-tutoriales tag-2xsoftware tag-cerrar tag-comandos tag-como tag-con tag-del tag-forma tag-linea tag-remota tag-sesion tag-usuario post-ftoc card-thumb-motion"> <a href="https://2xsoftware.es/2023/08/15/como-cerrar-la-sesion-del-usuario-de-forma-remota-con-la-linea-de-comandos-2xsoftware/" class="card-thumbnail entry-thumbnail last:mb-0"> <img width="695" height="72" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20695%2072'%3E%3C/svg%3E" class="w-full h-full wp-post-image" alt="" decoding="async" data-lazy-srcset="https://2xsoftware.es/wp-content/uploads/2023/08/Como-cerrar-la-sesion-del-usuario-de-forma-remota-con.png 695w, https://2xsoftware.es/wp-content/uploads/2023/08/Como-cerrar-la-sesion-del-usuario-de-forma-remota-con-300x31.png 300w" data-lazy-sizes="(max-width: 695px) 100vw, 695px" data-lazy-src="https://2xsoftware.es/wp-content/uploads/2023/08/Como-cerrar-la-sesion-del-usuario-de-forma-remota-con.png" /><noscript><img width="695" height="72" src="https://2xsoftware.es/wp-content/uploads/2023/08/Como-cerrar-la-sesion-del-usuario-de-forma-remota-con.png" class="w-full h-full wp-post-image" alt="" decoding="async" srcset="https://2xsoftware.es/wp-content/uploads/2023/08/Como-cerrar-la-sesion-del-usuario-de-forma-remota-con.png 695w, https://2xsoftware.es/wp-content/uploads/2023/08/Como-cerrar-la-sesion-del-usuario-de-forma-remota-con-300x31.png 300w" sizes="(max-width: 695px) 100vw, 695px" /></noscript> </a> <div class="card-content"> <h4 class="entry-title mb-half-gutter last:mb-0"><a class="link" href="https://2xsoftware.es/2023/08/15/como-cerrar-la-sesion-del-usuario-de-forma-remota-con-la-linea-de-comandos-2xsoftware/" rel="bookmark">¿Cómo cerrar la sesión del usuario de forma remota con la línea de comandos? – 2xsoftware</a> </h4> <div class="entry-excerpt yuki-raw-html mb-gutter last:mb-0"> 1.1K Un administrador de Windows puede utilizar el desconectarse Comando<a class="yuki-entry-excerpt-more yuki-entry-excerpt-more-link mx-1" href="https://2xsoftware.es/2023/08/15/como-cerrar-la-sesion-del-usuario-de-forma-remota-con-la-linea-de-comandos-2xsoftware/">...</a> </div> <div class="entry-metas mb-half-gutter last:mb-0"> <span class="byline meta-item"> <i class="fas fa-feather"></i><a class="entry-meta-link" href="https://2xsoftware.es/author/mitzamitza-es/">@2xsoftware.e</a></span><span class="meta-divider"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 20 20"><path d="M7.8 10c0 1.215 0.986 2.2 2.201 2.2s2.199-0.986 2.199-2.2c0-1.215-0.984-2.199-2.199-2.199s-2.201 0.984-2.201 2.199z"></path></svg></span><span class="meta-item posted-on"><i class="far fa-calendar"></i><a class="entry-meta-link" href="https://2xsoftware.es/2023/08/15/como-cerrar-la-sesion-del-usuario-de-forma-remota-con-la-linea-de-comandos-2xsoftware/" rel="bookmark"><span class="entry-date"><time class="published" datetime="2023-08-15T01:40:16+00:00">Ago 15, 2023</time><time class="updated hidden" datetime="2023-08-15T01:40:24+00:00">Ago 15, 2023</time></span></a></span><span class="meta-divider"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 20 20"><path d="M7.8 10c0 1.215 0.986 2.2 2.201 2.2s2.199-0.986 2.199-2.2c0-1.215-0.984-2.199-2.199-2.199s-2.201 0.984-2.201 2.199z"></path></svg></span> </div> </article> </div> </div> </div> </div> <div class="mx-auto yuki-max-w-content"> <div id="comments" class="yuki-comments-area"> <div id="respond" class="comment-respond"> <h3 id="reply-title" class="comment-reply-title">Deja una respuesta <small><a rel="nofollow" id="cancel-comment-reply-link" href="/2021/12/15/como-crear-un-blog-en-php-y-base-de-datos-mysql/#respond" style="display:none;">Cancelar la respuesta</a></small></h3><form action="https://2xsoftware.es/wp-comments-post.php" method="post" id="commentform" class="comment-form yuki-form form-default"><p class="comment-notes"><span id="email-notes">Tu dirección de correo electrónico no será publicada.</span> <span class="required-field-message">Los campos obligatorios están marcados con <span class="required">*</span></span></p><p class="comment-form-comment"><label for="comment">Comentario <span class="required">*</span></label> <textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required></textarea></p><p class="comment-form-author"><label for="author">Nombre <span class="required">*</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" autocomplete="name" required /></p> <p class="comment-form-email"><label for="email">Correo electrónico <span class="required">*</span></label> <input id="email" name="email" type="email" value="" size="30" maxlength="100" aria-describedby="email-notes" autocomplete="email" required /></p> <p class="comment-form-url"><label for="url">Web</label> <input id="url" name="url" type="url" value="" size="30" maxlength="200" autocomplete="url" /></p> <p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes" /> <label for="wp-comment-cookies-consent">Guarda mi nombre, correo electrónico y web en este navegador para la próxima vez que comente.</label></p> <p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="Publicar el comentario" /> <input type='hidden' name='comment_post_ID' value='1122' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p></form> </div><!-- #respond --> </div> </div><!-- #comments --> </div> <div class="yuki-sidebar sidebar-primary prose prose-yuki shrink-0 yuki-heading yuki-heading-style-1" role="complementary"> <section id="block-2" class="yuki-widget yuki-scroll-reveal-widget clearfix widget_block"><a href="https://www.mitza.es" rel="nofollow"> <div class="mehrcontainer"> <div class="amazonbutton"> <span> Diseño web barato (desde 100€)</span> </div> </div> </a> <style> .mehrcontainer{ max-width:100%; margin-top:15px; } .amazonbutton{ display: flex; align-items: center; justify-content: center; border-radius: 5px; border:1px solid #b79033; background:linear-gradient( #fde7ae,#f3c451); } .amazonbutton img{ max-height:20px; } .amazonbutton span{ font-family: Helvetica, sans-serif; line-height:44px; margin-left:10px; color:black; } </style></section> <style type="text/css" id="fixedtoc-style-inline-css">#ftwp-container.ftwp-wrap #ftwp-contents { width: 250px; height: auto; } #ftwp-container.ftwp-wrap #ftwp-trigger { width: 50px; height: 50px; font-size: 30px; } #ftwp-container #ftwp-trigger.ftwp-border-medium { font-size: 29px; } #ftwp-container.ftwp-wrap #ftwp-header { font-size: 22px; font-family: inherit; } #ftwp-container.ftwp-wrap #ftwp-header-title { font-weight: bold; } #ftwp-container.ftwp-wrap #ftwp-list { font-size: 14px; font-family: inherit; } #ftwp-container #ftwp-list.ftwp-liststyle-decimal .ftwp-anchor::before { font-size: 14px; } #ftwp-container #ftwp-list.ftwp-strong-first>.ftwp-item>.ftwp-anchor .ftwp-text { font-size: 15.4px; } #ftwp-container #ftwp-list.ftwp-strong-first.ftwp-liststyle-decimal>.ftwp-item>.ftwp-anchor::before { font-size: 15.4px; } #ftwp-container.ftwp-wrap #ftwp-trigger { color: #333; background: rgba(243,243,243,0.95); } #ftwp-container.ftwp-wrap #ftwp-trigger { border-color: rgba(51,51,51,0.95); } #ftwp-container.ftwp-wrap #ftwp-contents { border-color: rgba(51,51,51,0.95); } #ftwp-container.ftwp-wrap #ftwp-header { color: #333; background: rgba(243,243,243,0.95); } #ftwp-container.ftwp-wrap #ftwp-contents:hover #ftwp-header { background: #f3f3f3; } #ftwp-container.ftwp-wrap #ftwp-list { color: #333; background: rgba(243,243,243,0.95); } #ftwp-container.ftwp-wrap #ftwp-contents:hover #ftwp-list { background: #f3f3f3; } #ftwp-container.ftwp-wrap #ftwp-list .ftwp-anchor:hover { color: #00A368; } #ftwp-container.ftwp-wrap #ftwp-list .ftwp-anchor:focus, #ftwp-container.ftwp-wrap #ftwp-list .ftwp-active, #ftwp-container.ftwp-wrap #ftwp-list .ftwp-active:hover { color: #fff; } #ftwp-container.ftwp-wrap #ftwp-list .ftwp-text::before { background: rgba(221,51,51,0.95); } .ftwp-heading-target::before { background: rgba(221,51,51,0.95); }</style> <section id="fixedtoc-2" class="yuki-widget yuki-scroll-reveal-widget clearfix ftwp-widget"><div id="ftwp-widget-container"><div id="ftwp-container" class="ftwp-wrap ftwp-hidden-state ftwp-minimize ftwp-middle-right"><button type="button" id="ftwp-trigger" class="ftwp-shape-round ftwp-border-medium" title="click To Maximize The Table Of Contents"><span class="ftwp-trigger-icon ftwp-icon-number"></span></button><nav id="ftwp-contents" class="ftwp-shape-square ftwp-border-medium"><header id="ftwp-header"><span id="ftwp-header-control" class="ftwp-icon-number"></span><button type="button" id="ftwp-header-minimize" class="ftwp-icon-expand" aria-labelledby="ftwp-header-title"></button><h3 id="ftwp-header-title">Contenido</h3></header><ol id="ftwp-list" class="ftwp-liststyle-decimal ftwp-effect-bounce-to-right ftwp-list-nest ftwp-strong-first ftwp-colexp ftwp-colexp-icon"><li class="ftwp-item"><a class="ftwp-anchor" href="#ftoc-heading-1"><span class="ftwp-text">Características:</span></a></li><li class="ftwp-item"><a class="ftwp-anchor" href="#ftoc-heading-2"><span class="ftwp-text">Implementación</span></a></li></ol></nav></div> </div></section> <section id="recent-posts-2" class="yuki-widget yuki-scroll-reveal-widget clearfix widget_recent_entries"> <h3 class="widget-title mb-half-gutter heading-content">Entradas recientes</h3> <ul> <li> <a href="https://2xsoftware.es/2025/10/09/configure-perfiles-de-empleados-y-flujos-de-trabajo-de-incorporacion-en-zoho-people/">Configure perfiles de empleados y flujos de trabajo de incorporación en Zoho People</a> <span class="post-date">octubre 9, 2025</span> </li> <li> <a href="https://2xsoftware.es/2025/10/09/la-maquina-virtual-hyper-v-no-puede-conectarse-al-host-m-c/">La máquina virtual Hyper-V no puede conectarse al host M/C</a> <span class="post-date">octubre 9, 2025</span> </li> <li> <a href="https://2xsoftware.es/2025/10/09/como-restablecer-mfa-para-un-usuario-en-office-365/">Cómo restablecer MFA para un usuario en Office 365</a> <span class="post-date">octubre 9, 2025</span> </li> <li> <a href="https://2xsoftware.es/2025/10/08/error-0x8000ffff-falla-catastrofica-extraccion-del-archivo-zip/">Error 0x8000FFFF Falla catastrófica Extracción del archivo zip</a> <span class="post-date">octubre 8, 2025</span> </li> <li> <a href="https://2xsoftware.es/2025/10/08/el-explorador-falla-al-abrir-una-carpeta-grande-en-windows-11-fix/">El explorador falla al abrir una carpeta grande en Windows 11 [Fix]</a> <span class="post-date">octubre 8, 2025</span> </li> <li> <a href="https://2xsoftware.es/2025/10/08/las-mejores-alternativas-de-capcut-para-windows-pc/">Las mejores alternativas de Capcut para Windows PC</a> <span class="post-date">octubre 8, 2025</span> </li> <li> <a href="https://2xsoftware.es/2025/10/07/bloqueado-de-la-cuenta-de-administracion-de-microsoft-365-que-hacer/">¿Bloqueado de la cuenta de administración de Microsoft 365? ¿Qué hacer?</a> <span class="post-date">octubre 7, 2025</span> </li> <li> <a href="https://2xsoftware.es/2025/10/07/corrige-0x8007003b-error-de-inicio-de-sesion-algo-salio-mal/">Corrige 0x8007003b Error de inicio de sesión: algo salió mal</a> <span class="post-date">octubre 7, 2025</span> </li> <li> <a href="https://2xsoftware.es/2025/10/07/notebook-onenote-no-aparece-en-la-aplicacion/">Notebook OneNote no aparece en la aplicación</a> <span class="post-date">octubre 7, 2025</span> </li> <li> <a href="https://2xsoftware.es/2025/10/07/no-se-puede-agregar-una-pagina-web-a-colecciones-en-microsoft-edge/">No se puede agregar una página web a Colecciones en Microsoft Edge</a> <span class="post-date">octubre 7, 2025</span> </li> <li> <a href="https://2xsoftware.es/2025/10/06/no-se-puede-agregar-calendario-a-outlook-fix/">No se puede agregar calendario a Outlook [Fix]</a> <span class="post-date">octubre 6, 2025</span> </li> <li> <a href="https://2xsoftware.es/2025/10/06/lgpo-exe-g-no-funciona-durante-la-operacion-de-exportacion-o-importacion/">Lgpo.exe /g no funciona durante la operación de exportación o importación</a> <span class="post-date">octubre 6, 2025</span> </li> <li> <a href="https://2xsoftware.es/2025/10/06/como-crear-usuarios-a-granel-en-office-365/">Cómo crear usuarios a granel en Office 365</a> <span class="post-date">octubre 6, 2025</span> </li> <li> <a href="https://2xsoftware.es/2025/10/06/enviar-datos-de-diagnostico-opcionales-que-no-se-apagan-en-windows-11/">Enviar datos de diagnóstico opcionales que no se apagan en Windows 11</a> <span class="post-date">octubre 6, 2025</span> </li> <li> <a href="https://2xsoftware.es/2025/10/05/la-velocidad-de-transferencia-de-archivos-cae-a-cero-en-windows-11/">La velocidad de transferencia de archivos cae a cero en Windows 11</a> <span class="post-date">octubre 5, 2025</span> </li> </ul> </section><section id="archives-2" class="yuki-widget yuki-scroll-reveal-widget clearfix widget_archive"><h3 class="widget-title mb-half-gutter heading-content">Archivos</h3> <ul> <li><a href='https://2xsoftware.es/2025/10/'>octubre 2025</a></li> <li><a href='https://2xsoftware.es/2025/09/'>septiembre 2025</a></li> <li><a href='https://2xsoftware.es/2025/08/'>agosto 2025</a></li> <li><a href='https://2xsoftware.es/2025/07/'>julio 2025</a></li> <li><a href='https://2xsoftware.es/2025/06/'>junio 2025</a></li> <li><a href='https://2xsoftware.es/2025/05/'>mayo 2025</a></li> <li><a href='https://2xsoftware.es/2025/04/'>abril 2025</a></li> <li><a href='https://2xsoftware.es/2025/03/'>marzo 2025</a></li> <li><a href='https://2xsoftware.es/2025/02/'>febrero 2025</a></li> <li><a href='https://2xsoftware.es/2025/01/'>enero 2025</a></li> <li><a href='https://2xsoftware.es/2024/12/'>diciembre 2024</a></li> <li><a href='https://2xsoftware.es/2024/11/'>noviembre 2024</a></li> <li><a href='https://2xsoftware.es/2023/08/'>agosto 2023</a></li> <li><a href='https://2xsoftware.es/2022/07/'>julio 2022</a></li> <li><a href='https://2xsoftware.es/2022/06/'>junio 2022</a></li> <li><a href='https://2xsoftware.es/2022/05/'>mayo 2022</a></li> <li><a href='https://2xsoftware.es/2021/12/'>diciembre 2021</a></li> </ul> </section><section id="categories-2" class="yuki-widget yuki-scroll-reveal-widget clearfix widget_categories"><h3 class="widget-title mb-half-gutter heading-content">Categorías</h3> <ul> <li class="cat-item cat-item-2"><a href="https://2xsoftware.es/category/tutoriales/">Tutoriales</a> </li> <li class="cat-item cat-item-1012"><a href="https://2xsoftware.es/category/windows/">Windows</a> </li> <li class="cat-item cat-item-39"><a href="https://2xsoftware.es/category/wordpress/">Wordpress</a> </li> </ul> </section><section id="meta-2" class="yuki-widget yuki-scroll-reveal-widget clearfix widget_meta"><h3 class="widget-title mb-half-gutter heading-content">Meta</h3> <ul> <li><a rel="nofollow" href="https://2xsoftware.es/wp-login.php">Acceder</a></li> <li><a href="https://2xsoftware.es/feed/">Feed de entradas</a></li> <li><a href="https://2xsoftware.es/comments/feed/">Feed de comentarios</a></li> <li><a href="https://es.wordpress.org/">WordPress.org</a></li> </ul> </section> </div> </div> <footer class="yuki-footer-area"> <div class="yuki-footer-row yuki-footer-row-bottom" data-row="bottom"><div class="container mx-auto px-gutter flex flex-wrap"><div class="yuki-builder-column yuki-builder-column-0 yuki-builder-column-all yuki-builder-column-desktop-dir-row yuki-builder-column-tablet-dir-row yuki-builder-column-mobile-dir-row yuki_footer_builder_col_bottom_0_all flex"><div data-builder-element="footer-menu" class="yuki-menu-wrap h-full yuki_footer_el_menu_wrap"><ul class="sf-menu clearfix yuki-menu yuki_footer_el_menu yuki-menu-has-arrow"><li class="page_item page-item-3"><a href="https://2xsoftware.es/privacy-policy/">Privacy Policy<span class="yuki-menu-icon"><i class="fas fa-angle-down"></i></span></a></li> </ul> </div></div><div class="yuki-builder-column yuki-builder-column-1 yuki-builder-column-all yuki-builder-column-desktop-dir-row yuki-builder-column-tablet-dir-row yuki-builder-column-mobile-dir-row yuki_footer_builder_col_bottom_1_all flex"> <div data-builder-element="copyright" class="yuki-copyright yuki-raw-html yuki_footer_el_copyright"> Copyright © 2025 - <a href="https://www.wpmoose.com/themes/yuki-blogger/" target="_blank">Yuki Blogger Theme</a> By <a href="https://www.wpmoose.com" target="_blank">WP Moose</a> </div> </div></div></div> </footer> <a href="#" id="scroll-top" class="yuki-to-top yuki-to-top-right"><i class="fas fa-angle-up"></i></a> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp-*.php","\/wp-admin\/*","\/wp-content\/uploads\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/yuki-blogger\/*","\/wp-content\/themes\/yuki\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <!--[if lte IE 9]> <script> (function($) { $(document).ready(function() { $('#ftwp-container').addClass('ftwp-ie9'); }); })(jQuery); </script> <![endif]--> <script id="kk-star-ratings-js-extra"> var kk_star_ratings = {"action":"kk-star-ratings","endpoint":"https:\/\/2xsoftware.es\/wp-admin\/admin-ajax.php","nonce":"01e50a51b1"}; </script> <script src="https://2xsoftware.es/wp-content/plugins/kk-star-ratings/src/core/public/js/kk-star-ratings.min.js?ver=5.3.0" id="kk-star-ratings-js"></script> <script src="https://2xsoftware.es/wp-content/plugins/interlinks-manager/public/assets/js/track-internal-links.js?ver=1.25" id="daim-track-internal-links-js"></script> <script id="rocket-browser-checker-js-after"> "use strict";var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}var RocketBrowserCompatibilityChecker=function(){function RocketBrowserCompatibilityChecker(options){_classCallCheck(this,RocketBrowserCompatibilityChecker),this.passiveSupported=!1,this._checkPassiveOption(this),this.options=!!this.passiveSupported&&options}return _createClass(RocketBrowserCompatibilityChecker,[{key:"_checkPassiveOption",value:function(self){try{var options={get passive(){return!(self.passiveSupported=!0)}};window.addEventListener("test",null,options),window.removeEventListener("test",null,options)}catch(err){self.passiveSupported=!1}}},{key:"initRequestIdleCallback",value:function(){!1 in window&&(window.requestIdleCallback=function(cb){var start=Date.now();return setTimeout(function(){cb({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-start))}})},1)}),!1 in window&&(window.cancelIdleCallback=function(id){return clearTimeout(id)})}},{key:"isDataSaverModeOn",value:function(){return"connection"in navigator&&!0===navigator.connection.saveData}},{key:"supportsLinkPrefetch",value:function(){var elem=document.createElement("link");return elem.relList&&elem.relList.supports&&elem.relList.supports("prefetch")&&window.IntersectionObserver&&"isIntersecting"in IntersectionObserverEntry.prototype}},{key:"isSlowConnection",value:function(){return"connection"in navigator&&"effectiveType"in navigator.connection&&("2g"===navigator.connection.effectiveType||"slow-2g"===navigator.connection.effectiveType)}}]),RocketBrowserCompatibilityChecker}(); </script> <script id="rocket-preload-links-js-extra"> var RocketPreloadLinksConfig = {"excludeUris":"\/(.+\/)?feed\/?.+\/?|\/(?:.+\/)?embed\/|\/(index\\.php\/)?wp\\-json(\/.*|$)|\/wp-admin\/|\/logout\/|\/wp-login.php","usesTrailingSlash":"1","imageExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif","fileExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|php|pdf|html|htm","siteUrl":"https:\/\/2xsoftware.es","onHoverDelay":"100","rateThrottle":"3"}; </script> <script id="rocket-preload-links-js-after"> (function() { "use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e=function(){function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}}();function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var t=function(){function n(e,t){i(this,n),this.browser=e,this.config=t,this.options=this.browser.options,this.prefetched=new Set,this.eventTime=null,this.threshold=1111,this.numOnHover=0}return e(n,[{key:"init",value:function(){!this.browser.supportsLinkPrefetch()||this.browser.isDataSaverModeOn()||this.browser.isSlowConnection()||(this.regex={excludeUris:RegExp(this.config.excludeUris,"i"),images:RegExp(".("+this.config.imageExt+")$","i"),fileExt:RegExp(".("+this.config.fileExt+")$","i")},this._initListeners(this))}},{key:"_initListeners",value:function(e){-1<this.config.onHoverDelay&&document.addEventListener("mouseover",e.listener.bind(e),e.listenerOptions),document.addEventListener("mousedown",e.listener.bind(e),e.listenerOptions),document.addEventListener("touchstart",e.listener.bind(e),e.listenerOptions)}},{key:"listener",value:function(e){var t=e.target.closest("a"),n=this._prepareUrl(t);if(null!==n)switch(e.type){case"mousedown":case"touchstart":this._addPrefetchLink(n);break;case"mouseover":this._earlyPrefetch(t,n,"mouseout")}}},{key:"_earlyPrefetch",value:function(t,e,n){var i=this,r=setTimeout(function(){if(r=null,0===i.numOnHover)setTimeout(function(){return i.numOnHover=0},1e3);else if(i.numOnHover>i.config.rateThrottle)return;i.numOnHover++,i._addPrefetchLink(e)},this.config.onHoverDelay);t.addEventListener(n,function e(){t.removeEventListener(n,e,{passive:!0}),null!==r&&(clearTimeout(r),r=null)},{passive:!0})}},{key:"_addPrefetchLink",value:function(i){return this.prefetched.add(i.href),new Promise(function(e,t){var n=document.createElement("link");n.rel="prefetch",n.href=i.href,n.onload=e,n.onerror=t,document.head.appendChild(n)}).catch(function(){})}},{key:"_prepareUrl",value:function(e){if(null===e||"object"!==(void 0===e?"undefined":r(e))||!1 in e||-1===["http:","https:"].indexOf(e.protocol))return null;var t=e.href.substring(0,this.config.siteUrl.length),n=this._getPathname(e.href,t),i={original:e.href,protocol:e.protocol,origin:t,pathname:n,href:t+n};return this._isLinkOk(i)?i:null}},{key:"_getPathname",value:function(e,t){var n=t?e.substring(this.config.siteUrl.length):e;return n.startsWith("/")||(n="/"+n),this._shouldAddTrailingSlash(n)?n+"/":n}},{key:"_shouldAddTrailingSlash",value:function(e){return this.config.usesTrailingSlash&&!e.endsWith("/")&&!this.regex.fileExt.test(e)}},{key:"_isLinkOk",value:function(e){return null!==e&&"object"===(void 0===e?"undefined":r(e))&&(!this.prefetched.has(e.href)&&e.origin===this.config.siteUrl&&-1===e.href.indexOf("?")&&-1===e.href.indexOf("#")&&!this.regex.excludeUris.test(e.href)&&!this.regex.images.test(e.href))}}],[{key:"run",value:function(){"undefined"!=typeof RocketPreloadLinksConfig&&new n(new RocketBrowserCompatibilityChecker({capture:!0,passive:!0}),RocketPreloadLinksConfig).init()}}]),n}();t.run(); }()); </script> <script src="https://2xsoftware.es/wp-content/themes/yuki/dist/js/app.min.js?ver=1.3.8" id="yuki-script-js"></script> <script src="https://2xsoftware.es/wp-includes/js/comment-reply.min.js?ver=6.8.3" id="comment-reply-js" async data-wp-strategy="async"></script> <script id="fixedtoc-js-js-extra"> var fixedtocOption = {"showAdminbar":"","inOutEffect":"zoom","isNestedList":"1","isColExpList":"1","showColExpIcon":"1","isAccordionList":"","isQuickMin":"1","isEscMin":"1","isEnterMax":"1","fixedMenu":"","scrollOffset":"10","fixedOffsetX":"10","fixedOffsetY":"0","fixedPosition":"middle-right","contentsFixedHeight":"","inPost":"","contentsFloatInPost":"right","contentsWidthInPost":"250","contentsHeightInPost":"","contentsColexpInitMobile":"1","inWidget":"1","fixedWidget":"1","triggerBorder":"medium","contentsBorder":"medium","triggerSize":"50","isClickableHeader":"","debug":"0","contentsColexpInit":""}; </script> <script src="https://2xsoftware.es/wp-content/plugins/fixed-toc/frontend/assets/js/ftoc.min.js?ver=3.1.20" id="fixedtoc-js-js"></script> <script>window.lazyLoadOptions={elements_selector:"img[data-lazy-src],.rocket-lazyload,iframe[data-lazy-src]",data_src:"lazy-src",data_srcset:"lazy-srcset",data_sizes:"lazy-sizes",class_loading:"lazyloading",class_loaded:"lazyloaded",threshold:300,callback_loaded:function(element){if(element.tagName==="IFRAME"&&element.dataset.rocketLazyload=="fitvidscompatible"){if(element.classList.contains("lazyloaded")){if(typeof window.jQuery!="undefined"){if(jQuery.fn.fitVids){jQuery(element).parent().fitVids()}}}}}};window.addEventListener('LazyLoad::Initialized',function(e){var lazyLoadInstance=e.detail.instance;if(window.MutationObserver){var observer=new MutationObserver(function(mutations){var image_count=0;var iframe_count=0;var rocketlazy_count=0;mutations.forEach(function(mutation){for(i=0;i<mutation.addedNodes.length;i++){if(typeof mutation.addedNodes[i].getElementsByTagName!=='function'){continue} if(typeof mutation.addedNodes[i].getElementsByClassName!=='function'){continue} images=mutation.addedNodes[i].getElementsByTagName('img');is_image=mutation.addedNodes[i].tagName=="IMG";iframes=mutation.addedNodes[i].getElementsByTagName('iframe');is_iframe=mutation.addedNodes[i].tagName=="IFRAME";rocket_lazy=mutation.addedNodes[i].getElementsByClassName('rocket-lazyload');image_count+=images.length;iframe_count+=iframes.length;rocketlazy_count+=rocket_lazy.length;if(is_image){image_count+=1} if(is_iframe){iframe_count+=1}}});if(image_count>0||iframe_count>0||rocketlazy_count>0){lazyLoadInstance.update()}});var b=document.getElementsByTagName("body")[0];var config={childList:!0,subtree:!0};observer.observe(b,config)}},!1)</script><script data-no-minify="1" async src="https://2xsoftware.es/wp-content/plugins/wp-rocket/assets/js/lazyload/16.1/lazyload.min.js"></script><script>function lazyLoadThumb(e){var t='<img loading="lazy" data-lazy-src="https://i.ytimg.com/vi/ID/hqdefault.jpg" alt="" width="480" height="360"><noscript><img src="https://i.ytimg.com/vi/ID/hqdefault.jpg" alt="" width="480" height="360"></noscript>',a='<div class="play"></div>';return t.replace("ID",e)+a}function lazyLoadYoutubeIframe(){var e=document.createElement("iframe"),t="ID?autoplay=1";t+=0===this.dataset.query.length?'':'&'+this.dataset.query;e.setAttribute("src",t.replace("ID",this.dataset.src)),e.setAttribute("frameborder","0"),e.setAttribute("allowfullscreen","1"),e.setAttribute("allow", "accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"),this.parentNode.replaceChild(e,this)}document.addEventListener("DOMContentLoaded",function(){var e,t,a=document.getElementsByClassName("rll-youtube-player");for(t=0;t<a.length;t++)e=document.createElement("div"),e.setAttribute("data-id",a[t].dataset.id),e.setAttribute("data-query", a[t].dataset.query),e.setAttribute("data-src", a[t].dataset.src),e.innerHTML=lazyLoadThumb(a[t].dataset.id),e.onclick=lazyLoadYoutubeIframe,a[t].appendChild(e)});</script></body> </html> <!-- This website is like a Rocket, isn't it? Performance optimized by WP Rocket. Learn more: https://wp-rocket.me - Debug: cached@1759993634 -->