Nueva pregunta

Pregunta:

Fecha: 18-05-2015 20:34:35 (En Español)

¿Cómo hacer un Perfil Público?[Resuelta]

Hola amigos alguien sabe como puedo hacer un perfil público para que los otros usuarios lo vean ya he intentado mucho y cada vez que me mete a ese perfil y le doy F5 me loguea con ese usuario ya no se que hacer me enfade tanto que elimine el archivo jejeje espero me ayuden ???? Etiquetas: HTML - PHP - Pregunta Votos: 0 - Respuestas: 9 - Vistas: 10 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 19-05-2015 12:56:15 Mmm... amigo algo haces mal xD ya que no deberia que sacarte de la sesion al menos que le des a cerrar sesion tal vez es por que nunca le pusistes al principio session_start() no se :/
    primero que nada neesitas un correcto inicio de sesion y de registro de los usuarios si no perjudicaran en tus nuevos proyectos en este caso el perfil publico n.n asi que deja te explico.

    aqui inicial sesion para los usuarios, a este archivo llamale logeo.php o como gustes ^^:

    <?php
    session_start(); //algo asi como sesion iniciada n.n
    required "aquituconexionalabasededatos.php o asp ect";
    if(isset($_POST['enviar']) || $user = $_POST['usuario'] || $pass = $_POST['pass']) {
    //creamos las variables.
    $usuario = $_POST['usuario'];
    $pass = $_POST['pass'];
    //selecioamos la base de datos.
    $select = "SELECT id,usuario,pass FROM usuarios WHERE usuario = '".$usuario."' AND pass = '".$pass."'";
    $query = mysql_query($select,$conexion);
    $rows = mysql_num_rows($query);
    if($row = mysql_fetch_array($query)) {
    $_SESSION['usuario'] = $row['usuario'];
    $_SESSION['pass'] = $row['pass'];
    $_SESSION['id'] = $row['id'];
    echo "Has Iniciado Sesion Correctamente ^^";
    header("refresh:5, perfil.php");
    } else if(empty($_POST['usuario']) || empty($_POST['pass'])) {
      $usuario = $_POST['usuario'];
        $pass = $_POST['pass'];
        $select = "SELECT usuario,pass FROM usuarios WHERE usuario = '".$usuario."' AND pass = '".$pass."'";
      echo "No Puede Dejar Un Campo Obligatorio Vacio";
      } else if (!empty($_POST['usuario']) || !empty($_POST['pass'])){
         echo "<b style='position: relative; border: solid 1px rgb(0,0,0); width: 180px; height: 50px; background: rgb(0,0,0); color: rgb(255,255,255); top: 280px; left: 500px; border-radius: 5px; box-shadow: 5px 2px 2px rgb(0,0,255) inset, 5px 2px 2px rgb(0,0,255); text-shadow: 1px 1px 1px rgb(255,0,0);'>El Usuario o La Contrase&ntilde;a Son Invalidos</b>";
         header('refresh:5; login.php'); //quitale el header si lo vas a llamar desde ajax n.n
     }
    }
    ?>
    


    ok explico este hace el reconocimientos de los datos intruducidos por el usuario como veras esta correcto ya que creamos variables de sesion que es esto, bueno esto te sirvira para que no se cierre sesion que tan bien pudieron ser cookies pero bueno a mi parecer son mas vuneralbles.
    tambien puedes mejorarlo con sha y md5 y cript para mejorar la seguridad de tus usuarios, tambien puedes crear mas variable si lo requires, tamien si te fijas hay una SESSION id que es esto bueno esto te servira para crear diferentes tipos de perfiles en tu caso, tipo facebook solo que facebook utilisa el metodo get para que se visualize el id del usuario n.n claro si este no ha modificado su url de perfil n.n o al principio cuando creas tu cuenta te aparece no aqui yo lo puse en post asi nunca sabran que id de usuario es y es mejor en cosas de seguridad pero ya sabras tu si lo cambias, ahora si lo quieres llamar desde ajax pon una function al prinipio y lo cierras hasta el final asi seria llamado desde un onclick desde el ajax la respuestas de echo n.n, ahora crea correctamente tambien un tabla en mysql o donde tengas tu base de datos, la tabla por el momento solo debe que tener lo siguiente tres filas una llamada id llave primaria, y auto increment y entero, ahora una llamada usuario este sera varchar y ya n.n y pass este lo puedes poner blob pero es algo complicado si quieres por el momento ponlo en varchar tambien y ya desde el registro que ahorita pondre lo registras n.n ok aqui va lo otro:
    {veras aqui no se ocupa session_start();}
    me falto poner que tambien cries otra fila llamada correo donde ira los correos electronicos de los usuarios n.n

    aqui tambien te pongo el login.php:

    <?php 
    session_start();
    @include "aquituconexionalabasededatos.php";
    if(isset($_SESSION['usuario'])) // esto sirve para saber si existe una sesion iniciada esto es muy importante
    {
         ?>
          Hola <?=$_SESSION['usuario']?> Ya Has Iniciado Sesion <a href="closesession.php">Cerrar Sesion</a>
         <?
    } else {
           ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
           <head>
    <title>Login</title>
    <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
           <style type="text/css">
           html {
           background: url("../imagenes/loimagen.jpg");
           background-position: center center;
           background-repeat: no-repeat;
           background-attachment: fixed;
           background-size: cover;
           }
           
           .log_in {
           border: solid 1px rgb(0,0,0);
           border-radius: 3px;
           width: 250px;
           height: 200px;
           background: rgba(0,0,0,0.7);
           color: rgb(255,255,255);
           position: absolute;
           top: 200px;
           left: 500px;
           box-shadow: 1px 1px 1px rgb(255,0,0) inset, 1px 1px 1px rgb(255,0,0);
           }
           
           .center {
           text-align: center;
           }
           
           input[type="submit"]:hover {
           cursor: pointer;
           color: rgb(0,0,0);
           text-shadow: 1px 1px 1px rgb(0,0,0);
           opacity: 0.9;
           }
           </style>
           </head>
           <body>
           <div class="log_in center">
            <form method="post" action="logeo.php">
            <span>Usuario:</span>
            <br />
            <input type="text" name="usuario" />
            <br />
            <span>Contraseña:</span>
            <br />
            <input type="password" name="pass" />
            <br />
            <input type="submit" name="enviar" value="Login" />
        </form>
        </div>
            </body>
            </html>
            <?
    }
    ?>
    


    ok explico puedes quitar lo primero o puedes poner lo que gustes n.n yo lo quitaria da igual solo es una pagina que dice con que usuario unicie sesion como gustes

    <?php
    @require "aquituconexionatubasededatos.php";
    if(isset($_POST['enviar'])) { //estos seran los campos obligatorios
    $usuario = $_POST['usuario'];
    $correo = $_POST['correo'];
    $buscarUsuario = "SELECT * FROM usuarios WHERE usuario = '".$usuario."' AND correo = '".$correo."'";
    
     $result = mysql_query($buscarUsuario);
    
     $buscarUsuario = mysql_num_rows($result);
     
     $buscarUsuariotoll = "SELECT * FROM usuarios WHERE usuario = '$_POST[usuario]'";
    
     $resulte = mysql_query($buscarUsuariotoll);
    
     $buscarUsuariotoll = mysql_num_rows($resulte);
     
     $buscaremail = "SELECT * FROM usuarios WHERE correo = '$_POST[correo]'";
    
     $resultw = mysql_query($buscaremail);
    
     $buscarcorreo = mysql_num_rows($resultw);
     
     if($buscarUsuario == 1){
     echo "El Nombre De Usuario o El Correo Electonico Ya Existe :/";
     }
     else if($buscarUsuariotoll == '' || $buscarcorreo == '') {
     echo "No Se Puede Dejar Un Campo Obligatorio Vacio";
     }
     else {
    $query = "INSERT INTO usuarios (usuario, correo, pass) VALUES ('$_POST[usuario]', '$_POST[correo]', '$_POST[pass]')";
    if (!mysql_query($query, $conexion))
     {
     die('Error: ' . mysql_error());
     echo "Error al crear el usuario." . "<br />";
     }
    else {
     echo "Registrado Correctamente ^^";
    }
    }
    }
    ?>
    


    explico rapidamente este es el registro para los usuarios ok ya sea en usuario o correo haz que sea obligatorio: ok aqui pondre en codigo html para el registro n.n

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <title>User Register</title>
        <meta charset="utf-8" />
        
        <link rel="stylesheet" href="register_style.css" media="screen" />
    </head>
    <body>
    <div class="all">
    <header>
    		 <h1>Registrarme:</h1>
      	</header> 
    	<form action="registro.php" method="post" name="procesar-usuario" class="registro">   
     
      	<hr/>
     	<h3>Crea un Nombre de Usuario y Clave para tener acceso a Contenido Exclusivo!</h3>
      
      	<!--Nombre Usuario-->
         <label>Nombre de Usuario:</label>
         <br />
         <input id="user" type="text" name="user" /> 
         <br /><br />
         <!--Password-->  
         <label>Password o Clave:</label>
         <br />
         <input type="password" name="pass" />
         <br /> <br />
         <!--Correo Electronico Usuario-->
         <label>Correo Electronico:</label>
         <br />
         <input type="email" name="correo" title="Correo Electronico" /> 
         <br /> <br />
         <input type="submit" id="result" name="enviar" />
         <input type="reset" name="clear" value="Borrar" />
         <hr />
         <button type="button" class="buttonlogin" onclick="window.location.href='login.php'">Login</button>
         </form>
        <div id="resultado">Datos</div>
        </div>
    <footer>
    <span class="alt-letter">&copy; 2015 By: aqui tu nonbre o lo que quieras n.n</span>
    </footer>
    </body>
    </html>
    


    como veras tuve que modificar y no se si me quedo bien estructurado en uestion de diseño pero bueno, arriba al principio me falto poner el html del login pero veras es muy senciilo igual te lo pindre aunque sea mas trabajo para mi :/ va no importa ^^ amm por cierto aqui te lo puse en html5 asi que solo pones required en los campos que sean obligatorios o desde php puedes poner que campos deben ser obligatoris da igual el sistema de usarios que te di yo evita que esten vacios o los campos incorrectos por si acaso burlan los primeros pasos de seguridad o del span de registros n.n

    veamos el login.php es muy importante vale alla arriba te lo voy a dejar:
    ok ahora falta lo mas importante lo que tu buscas el perfil no he esto es muy sencilo si lo otro lo has hecho bien entonces te debe que funcionar y ya estara tu pefil publico para los usuarios;

    <?php
    session_start();
    @include "aquilaconexionatubasededatos.php";
    if(isset($_SESSION['usuario']))
    {
         ?>
         aqui pones todo el perfil osea el html o que gustes n.n
          <?php
    } else {
           ?>
       aqui pones lo contrario ya sea un div decorado que diga debes que iniciar sesion para cer el perfil o el perfil pero mas transparente opao para darte una idea asi como facebook que cuando visitas un perfil sin iniciar sesion te aparece el perfil pero algo apaco y con menos cosas que ver y dice inicia sesion para contactarte con esta persona no>? algo asi aqui iria n.n
          <?php
    }
    ?>
    


    ok espero haberte ayudado n.n para cualquier duda comenta aqui vale estare atento de tus respuestas o de cualquiera que lo ocupe recuerda que todo se puede mejorar asi como yo lo hice ^^ saludos y buenas tardes. n.n
      Votos: 2 - Link respuesta
     
  • Fecha: 19-05-2015 15:38:17 Gracias amigo por haber respondido acabe de probar tu programa y lo actualice a MYSQLI pero no envía los datos a la DB y no se como haría lo del perfil bien para que vean el Perfil   Votos: 0 - Link respuesta
     
  • Fecha: 19-05-2015 16:11:19 Ok primero que nada necesito los archivos de tu perfil que tu pones, luego el login y el registro solo cambiale las cosas que no deberia ir si lo pones de ejemplos osea password a tu db o cosas asi eso si por cierto una pregunta sale un error al ejecutarlo? y ponlos aqui de ejemplos vale asi tal vez pueda allar tu fallo o fallos n.n tal vez tenga que ver que yo lo hice para mysql y no para mysqli sepa :/
    saludos n.n
      Votos: 1 - Link respuesta
     
  • Fecha: 19-05-2015 18:03:54 http://elcapa8.hol.es/registro.php lo puse con MYSQLI porq si no no sirve en mi servidor y es lo mismo   Votos: 0 - Link respuesta
     
  • Fecha: 25-05-2015 07:52:58 Hola Edinson, solo unos comentarios:
    1. Si estás empezando el desarrollo NO uses la extensión mysql, usa mysqli.
    2. Para cifrar contraseñas NO uses MD5. Si vas a usar SHA que sea al menos SHA512
    3. Recuerda validar y sanitizar TODAS las variables de entrada
    4. NUNCA, JAMÁS utilices el operador de supresión de errores (@)
    5. NUNCA, JAMÁS utilices el operador de supresión de errores (@)
    6. NUNCA, JAMÁS utilices el operador de supresión de errores (@)
    7. Reconoce las diferencias entre include, include_once, require y require_once
    8. Creo que Chrismart Anji no lo menciona pero el código que amablemente proporciona es de EJEMPLO, tiene muchísimas malas prácticas de programación y vulnerabilidades. Es sólo para que te des una idea, revísalo y adáptalo a tus necesidades pero por favor no hagas copy, paste.
    9. NUNCA, JAMÁS utilices el operador de supresión de errores (@)
      Votos: 3 - Link respuesta
     
  • Fecha: 25-05-2015 14:12:41 Gracias eso lo se ya lo pude solucionar de otra manera algo rara jajaja
    Y no me gusta copiar codigo pero quería ver todo el sistema de ejemplo que el me proporcionó y sacar la idea de ahí pero no me sirvió me daba errores muy graves y logre solucionar algunos pero no todos por alguna razón pero gracias a los dos por tratar de ayudarme y agradezco tus consejos y no me gusta utilizar la suspensión de errores con el @
      Votos: 0 - Link respuesta
     
  • Fecha: 28-05-2015 09:07:33 Hola Ernesto, por favor, puedes explicar el por qué de los comentarios que le pusiste a Edinson?, específicamente para los números:
    2-(siempre utilizo md5, p q no lo recomiendas?),
    4-
    8-por favor, comentanos un poco de las malas practicas,

    Gracias.
      Votos: 1 - Link respuesta
     
  • Fecha: 29-05-2015 09:53:05 MD5 no es un algoritmo seguro para cifrar contraseñas, ya tiene al menos un par de años que hay mecanismos para descifrar el algoritmo.
    El operador de supresión de errores es el demonio jajajaja. La razón de esto es que es un operador que suprime el reporte de error dando la apariencia de que tu aplicación/lógica funciona bien cuando realmente no lo hace desviando la atención hacia bloques de código que no necesariamente son la causa del problema. Su uso debería ser estrictamente reservado a ciertos casos muy concretos y solamente en ambiente de pruebas.
    Malas prácticas.
    Las malas prácticas son una serie de comportamientos repetitivos que generan problemas a corto/mediano y/o largo plazo con tu código. Pueden afectar la estabilidad, confiabilidad y seguridad de una aplicación. Generalmente son el reflejo de que algo no está bien como:
    -Falta de experiencia.
    -Una mala planeación.
    -Mediocridad.
    -Falta de interés en el proyecto
    -Poca ética profesional

    Entre las malas prácticas más comúnes en PHP están:
    1. No sanitizar variables.
    2. No validar variables.
    3. No mantenerse actualizado (La extensión mysql es obsoleta desde hace más de un año, si eres una persona que se actualiza constantemente no la usas).
    4. Todos los formularios son las primeras puertas de entrada para un programador malicioso, hay que implementar mecanismos para evitar ataques comunes como CSRF, SQL injection, Session hijacking, etc.
    5. Usar require_once o include_once es preferible
    6. Mal manejo de errores, por ejemplo usar die(), es mejor capturar el error y manejarlo acorde a lo que se espera. Usar die() causa sueños húmedos entre programadores maliciosos pues siempre revela información sensible que puede llevar a causar un ataque más sofisticado además de que estéticamente es visualmente malo dejar que la aplicación muera y mostrar un burdo error técnico al usuario final.

    Eso aplica para programación estructurada y orientada a objetos. Cuando estás con OOP hay miles más.

    Creo que las peores prácticas son NO LEER y NO ACTUALIZARSE. En el caso de PHP es una característica que le ha dado mala fama en el mundo de los lenguajes de programación, muchos programan en PHP pero la gran mayoría programa mal porque se mantienen en el mismo nivel que cuando aprendieron a programar y no les preocupa actualizarse, creando páginas y programas "CHINOS", es decir, bonitos pero de pésima calidad que eventualmente fallarán, no son compatibles o son un paraíso para los crackers.

    Sonará muy exagerado pero el código revela mucho de un programador, por ejemplo:
    -Experiencia
    -Educación
    -Capacidad de abstracción
    -Capacidad de resolución de problemas
    -Manejo de algoritmos
    -Dominio del lenguaje
    -Nivel de colaboración en un equipo

    En un equipo de trabajo es tu carta de presentación

    Conforme lees, te educas y te actualizas vas eliminando las malas prácticas y creando mejores productos siempre perfectibles abriéndote puertas que tienen oportunidades más jugosas y gratificantes.
      Votos: 1 - Link respuesta
     
  • Fecha: 08-06-2015 05:29:00 hehe calma ernesto :P primero que nada como tu dices solo lo puse de ejemplo xD, si hablas de proteccion a los usuarios y al sitio web, claro que md5 nunca se usa ya al menos no se deberia, es mas ni sha1, sha512 ese seria bueno pero tambien combinandolos con ya sean variables, array ect ect con un salt por ejemplo y ademas te falto aunque ya chateado ataques xss, yo por mi parte ya me preveni en todo eso mira la diferencia yo puse un ejemplo para ayudar a mi amigo que hizo esta pregunta a entender como se hace eso de perfiles ect dales beneficios a los usuarios jamas me pidio algo mejor o si?

    y no es por criticar pero antes de ayudar a mi amigo de la pregunta con su duda venistes a criticar eso, y dos @ al principio sirve para no mostrar errores a los demas como a ti y tu como dices conocedor del lenguaje una buen practica seria usarlo solo sabiendo que no hay ningun tipo de error en caso de que una vez suceda tu deberas que saber por que sucede el error, mostrar tus errores de tu programa o lo que sea es un punto vunerable para que puedan saber cosas, u.U da igual si lo usas al fin se supone que lo pusistes por que ne ese momento no tenia errores 77 pero en fin, algo que si me gusto es que es cierto lo que dices sobre las lecciones o eso que pusistes ^^ solo que hay algo que no me gusta que la mayoria de los programadores se basan a ya existente u.u y eso aguita :/ ya que hay que crear nuevas cosas si con errores pero te digo algo -> de los errores se aprende y a veces se crean inventos o nuevas cosas o no?

    otra cosa interesante que pusistes fue lo de die, ahora php orientada a objetos yo usaria POO n.n
    y bueno ya acabando de comentar disculpa elcapa8 por no contestarte antes no tenia internet u.u lo bueno es que lo resolvistes que bueno bro n.n
      Votos: 1 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com