Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - J0RG325

#1
Desarrollo Web / Friend System ayuda error
10 Agosto 2013, 20:12 PM
Hola amigos de elhacker.net en esta ocasión les pido ayuda con un sistema de usuarios que tiene un sistema de amigos la verdad muy básico pero muy bueno, el sistema funciona bien si lo haces manualmente osea del phpmyadmin ya que normal el modulo no funciona

DB

CREATE TABLE IF NOT EXISTS `users` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `username` varchar(255) CHARACTER SET latin1 NOT NULL,
 `password` varchar(255) CHARACTER SET latin1 NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;

CREATE TABLE IF NOT EXISTS `frnd_req` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `from` int(11) NOT NULL,
 `to` int(11) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

CREATE TABLE IF NOT EXISTS `frnds` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `user_one` int(11) NOT NULL,
 `user_two` int(11) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;  


perfil.php

<html>
<head>
<title>Profile - Friend System</title>
<link rel='stylesheet' href='style.css' />
</head>
<body>
<? include 'connect.php'; ?>

<? include 'functions.php'; ?>

<? include 'header.php'; ?>

<div class='container'>
<?php 
if(isset($_GET['user']) && !empty($_GET['user'])){ 
    
$user $_GET['user']; 
} else { 
    
$user $_SESSION['user_id']; 

    
$my_id $_SESSION['user_id']; 
    
$username getuser($user'username'); 
    
?>

<h3><?php echo $username?></h3>
<?php 
if($user != $my_id){ 
    
$check_frnd_query mysql_query("SELECT id FROM frnds WHERE (user_one='$my_id' AND user_two='$user') OR (user_one='$user' AND user_two='$my_id')"); 
    if(
mysql_num_rows($check_frnd_query) == 1){ 
        echo 
"<a href='#' class='box'>Already Frnds</a> | <a href='actions.php?action=unfrnd&user=$user' class='box'>Unfriend $username</a>"
    } else { 
        
$from_query mysql_query("SELECT `id` FROM `frnd_req` WHERE `from`='$user' AND `to`='$my_id'"); 
        
$to_query mysql_query("SELECT `id` FROM `frnd_req` WHERE `from`='$my_id' AND `to`='$user'"); 
        if(
mysql_num_rows($from_query) == 1){ 
            echo 
"<a href='#' class='box'>Ignore</a> | <a href='actions.php?action=accept&user=$user' class='box'>Accept</a>"
        } else if (
mysql_num_rows($to_query) == 1){ 
            echo 
"<a href='actions.php?action=cancel&user=$user' class='box'>Cancel Request</a>"
        } else { 
            echo 
"<a href='actions.php?action=send&user=$user' class='box'>Send Friend Request</a>"
        } 
    } 

?>

</div>

</body>
</html>


si aprietas el boton que dice "Send Friend Request" debería mandar la solicitud recargar la pagina solo y cambiar el boton por "Cancel Request" pero no lo hace siempre se queda igual sin embargo si entras al phpmyadmin y miras la consulta notaras que si la hace pero la hace mal. En "id" va el "id" de la solicitud ahí todo bien, y en "from" siempre queda en 0 pero ahí esta mal ya que debería ser el "id" de quien manda la solicitud y en "to" si lo hace bien y pone el "id" de a quien se manda la solicitud.
Cuando te llega la solicitud tampoco puedes aceptarla por que se queda igual
También si tu mandas una solicitud y quieres cancelarlo tampoco lo hace.


-Este es el archivo actions.php que hace las consultas
actions.php

<?

include 'connect.php';

include 'functions.php';

$action = $_GET['action'];

$user = $_GET['user'];

$my_id = $_SESSION['usuer_id'];

if($action == 'send'){
   
   mysql_query("INSERT INTO frnd_req VALUES('', '$my_id', '$user')");
   
}

if($action == 'cancel'){
   
   mysql_query("DELETE FROM `frnd_req` WHERE `from`='$my_id' AND `to`='$user'");
   
}

if($action == 'accept'){
   
   mysql_query("DELETE FROM frnd_req WHERE from='$user' AND to='$my_id'");
   
   mysql_query("INSERT INTO frnds VALUES('', '$user', '$my_id')");

}

if($action == 'unfrnd'){
   
   mysql_query("DELETE FROM frnds WHERE (user_one='$my_id' AND user_two='$user') OR (user_one='$user' AND user_two='$my_id')");
   
}

header('location: profile.php?user='.$user);

?>


-El archivo functions.php que sirve para el login
functions.php

<?php 

session_start
(); 

function 
loggedin(){ 
    if(isset(
$_SESSION['user_id']) && !empty($_SESSION['user_id'])){ 
        return 
true
    } else { 
        return 
false
    } 


function 
getuser($id$field){ 
    
$query mysql_query("SELECT $field FROM users WHERE id='$id'"); 
    
$run mysql_fetch_array($query); 
    return 
$run[$field]; 


?>



y por ultimo esta el archivo req.php que es donde te deben aparecer las solicitudes de amistad pero nunca aparecen, no se cual sea el problema...

<html>
<head>
<title>Requests - Friend System</title>
<link rel='stylesheet' href='style.css' />
</head>
<body>
<? include 'connect.php'; ?>

<? include 'functions.php'; ?>

<? include 'header.php'; ?>

<div class='container'>
   <hr>Requests : </h3>
   <?php 
        $my_id 
$_SESSION['user_id']; 
        
$req_query mysql_query("SELECT `from` FROM `frnd_req` WHERE `to`='my_id'"); 
        while(
$run_req mysql_fetch_array($req_query)){ 
            
$from $run_req['from']; 
            
$from_username getuser($from'username'); 
            echo 
"<a href='profile.php?user=$from' class='box' style='display:block'>$from_username</a>"
        } 
    
?>

</div>

</body>
</html>


por favor ayúdenme a arreglarlo ya que me gustaría usar este sistema, también si quieres les comparto todo el sistema completo para el que lo quiera usar :D
#2
PHP / AYUDA Script Me Gusta Adaptado
31 Marzo 2013, 07:21 AM
Hola nuevamente gente de foro elhacker, he estado trabajando en el Script de me gusta de Marcofbb: http://www.marcofbb.com.ar/script-me-gusta-hecho-e... pero el lo tiene para un sistema de noticias donde esta es su DB

Código (php) [Seleccionar]

CREATE TABLE `post` (
  `id` int(11) NOT NULL auto_increment,
  `nombre` varchar(255) collate utf8_unicode_ci NOT NULL,
  `megusta` int(11) default '0',
  `ips` text collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;


agregue la fila de "megusta" y la de "ips" a mi DB quedando de la siguiente forma

Código (php) [Seleccionar]

CREATE TABLE `usuarios` (
  `usuario_id` int(4) NOT NULL AUTO_INCREMENT,
  `usuario_matricula` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `usuario_clave` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `usuario_nombre` varchar(60) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `usuario_email` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `sexo` tinyint(6) NOT NULL DEFAULT '0',
  `usuario_avatar` varchar(250) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `EstadoKEY` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
  `CodigoKEY` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
  `megusta` int(11) NOT NULL DEFAULT '0',
  `ips` text COLLATE utf8_unicode_ci NOT NULL,
  `usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`usuario_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=13 ;



ahora les dejo los archivos php que he modificado para que funcionen con mi db

voto.php

Código (php) [Seleccionar]

<?php 
$dbhost 
"127.0.0.1"// Servidor 
$dbuser "root"// Nombre de usuario 
$dbpass "123456"// Contraseña 
$dbname "usuariosdb"// Nombre de la base de datos 

# Creamos conexion a la base de datos 
$link mysql_connect($dbhost,$dbuser,$dbpass); 
        
mysql_select_db($dbname,$link); 

# Imprimimos una prueba para dar como ejemplo 
$sql "SELECT * FROM usuarios ORDER BY megusta DESC"
$query mysql_query($sql,$link); 
?>

<table width="800" border="0" align="center">
  <tr>
    <td width="5%" align="center">ID</td>
    <td width="63%" align="center">USUARIO</td>
    <td width="32%" align="center">ME GUSTA</td>
  </tr>
<?php 
while($row mysql_fetch_assoc($query)) 
{
?>

  <tr>
    <td width="5%" align="center"><?=$row['usuario_id']?></td>
    <td width="63%" align="center"><?=$row['usuario_matricula']?></td>
    <td width="32%" align="center">[<a href="index.php?page_id=megusta&voto=positivo&id=<?=$row['usuario_id']?>">Me gusta</a>] <?=$row['megusta']?> [<a href="index.php?page_id=megusta&voto=negativo&id=<?=$row['usuario_id']?>">No me gusta</a>]</td>
  </tr>
<?php     
}     
?>

</table>


y aca el script que hace todo

megusta.php

Código (php) [Seleccionar]

<?php 
$dbhost 
"127.0.0.1"// Servidor 
$dbuser "root"// Nombre de usuario 
$dbpass "123456"// Contraseña 
$dbname "usuariosdb"// Nombre de la base de datos 

# Creamos conexion a la base de datos 
$link mysql_connect($dbhost,$dbuser,$dbpass); 
        
mysql_select_db($dbname,$link); 
# Saber si el voto es negativo o positivo 
$voto htmlentities($_GET['voto']); 

# Tomamos el id de nuestro post y vemos todas las ip que pusieron megusta 
$usuario_id = (int) $_GET['usuario_id']; 
$query mysql_query("SELECT usuario_id,ips FROM usuarios WHERE usuario_id='".$usuario_id."'",$link); 
$row mysql_fetch_assoc($query); 
$ip $row['ips']; 

# Obtenemos la ip de nuestro visitante         
if ($HTTP_X_FORWARDED_FOR == "") { 
$ipp getenv(REMOTE_ADDR); 

else { 
$ipp getenv(HTTP_X_FORWARDED_FOR); 


# Me gusta o No me gusta 
switch($voto

case 
"positivo"
    if(
$query
    { 
        
$var explode(","$ip); 
        
$arr in_array($ipp$var); 
        if(!
$arr
        { 
            
mysql_query("UPDATE usuarios SET megusta=megusta+1, ips=CONCAT(usuarios.ips,'".$ipp.",') WHERE usuario_id='".$usuario_id."'",$link); 
        } 
    } 
break;     
case 
"negativo"
    if(
$query
    { 
        
$var explode(","$ip); 
        
$arr in_array($ipp$var); 
        if(!
$arr
        { 
            
mysql_query("UPDATE usuarios SET megusta=megusta-1, ips=CONCAT(usuarios.ips,'".$ipp.",') WHERE usuario_id='".$usuario_id."'",$link); 
        } 
    } 
break; 

header('location:index.php?page_id=voto'); 
?>



el archivo voto.php muestra un ranking donde muestra a todos los usuarios registrados y a un costado te aparecen 2 links para darle megusta o no me gusta y enmedio de esos 2 sale la cantidad de votos que ha recibido pero al precionar sobre alguno de esos 2 links no da ni quita nada y siempre queda en 0 la unica forma de darle votos es manualmente mediante el phpmyadmin y el ranking voto.php si los muestra

no estoy seguro si tenga algo mal mi DB o mi modulo de registro que tenga que ver con la IP o el link que me genera el voto.php no funcione ese es mi unico problema que al precionar no da los votos y ya no se que más hacer ya he movido casi todo y nada espero me puedan ayudar con este problema que tengo

por las dudas aca les dejo el sistema modular que tengo en el index.php

Código (php) [Seleccionar]

<?php 
if(empty($_GET['page_id'])) {  
    include(
"modulos/news.php");  
} else { 
    switch (
$_GET['dir']) { 
    default: 
        
$dir "modulos/".$_GET['page_id'].".php"
        
$file "modulos/".basename($_GET['page_id']).".php"
        break; 
    } 
    if(
file_exists($dir)) {  
        include(
$file);  
    } else {  
        echo 
'<table border=0 cellpadding=0 cellspacing=0>  
        <tr>  
        <td width=85%>'
.text_site_module.'</td>  
        </tr>  
        </table>'
;  
    }  
}  
?>

#3
Hola gente del foro, tengo un sistema de registro de usuariso pero tengo 2 problemas con el sistema el primero seria para el formulario, quiero añadirle que solo admita correos @gmail.com por ejemplo pero yo pondre otro dominio, aca les dejo el codigo

registro.php

Código (php) [Seleccionar]

<?php
    
include('config.php'); // incluimos el archivo de conexión a la Base de Datos
    
if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos desde el formulario
        // creamos una función que nos parmita validar el email
        
function valida_email($correo) {
        if (
preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/'$correo)) return true;
        else return 
false;
        } 
        
// Procedemos a comprobar que los campos del formulario no estén vacíos
        
$sin_espacios count_chars($_POST['usuario_matricula'], 1);
        if(!empty(
$sin_espacios[32])) { // comprobamos que el campo usuario_nombre no tenga espacios en blanco
            
echo "El campo <em>usuario_matricula</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a>";
        }elseif(empty(
$_POST['usuario_matricula'])) { // comprobamos que el campo usuario_nombre no esté vacío
            
echo "".text_register_error_username."";
        }elseif(empty(
$_POST['usuario_clave'])) { // comprobamos que el campo usuario_clave no esté vacío
            
echo "".text_register_error_password."";
        }elseif(
$_POST['usuario_clave'] != $_POST['usuario_clave_conf']) { // comprobamos que las contraseñas ingresadas coincidan
            
echo "".text_register_password_match."";
        }elseif(empty(
$_POST['usuario_nombre'])) { // validamos que el email ingresado sea correcto
            
echo "pon tu nombre";
        }elseif(!
valida_email($_POST['usuario_email'])) { // validamos que el email sea correcto
            
echo "".text_register_email_used."";
        }elseif(empty(
$_POST['sexo'])) { // validamos que el email ingresado sea correcto
            
echo "Seleccione su Sexo";
        }else { 
            
// "limpiamos" los campos del formulario de posibles códigos maliciosos
            
$usuario_matricula mysql_real_escape_string($_POST['usuario_matricula']);
            
$usuario_clave mysql_real_escape_string($_POST['usuario_clave']);
            
$usuario_nombre mysql_real_escape_string($_POST['usuario_nombre']);
            
$usuario_email mysql_real_escape_string($_POST['usuario_email']);
            
$sexo mysql_real_escape_string($_POST['sexo']);
            
// comprobamos que el usuario ingresado no haya sido registrado antes
            
$sql mysql_query("SELECT usuario_matricula FROM usuarios WHERE usuario_matricula = '$usuario_matricula'"
            or die (
mysql_error());
            if(
mysql_num_rows($sql) > 0) {
                echo 
"esta matricula ya esta en uso";
            }else {
                
$CodigoKEY SHA1(rand(0,100000000));
                
$usuario_clave md5($usuario_clave); // ciframos la contraseña ingresada con md5
                // ingresamos los datos a la BD
                
$reg mysql_query("INSERT INTO usuarios (usuario_matricula, usuario_clave, usuario_nombre, usuario_email, sexo, usuario_avatar, EstadoKEY, CodigoKEY, megusta, ips, usuario_freg) VALUES ('".$usuario_matricula."', '".$usuario_clave."', '".$usuario_nombre."', '".$usuario_email."', '".$sexo."', '1', '".$CodigoKEY."', '5', '".$_SERVER['REMOTE_ADDR']."', NOW())");
                    
$registros mysql_query("SELECT usuario_email,CodigoKEY FROM usuarios WHERE usuario_nombre = '$_POST[usuario_nombre]'");
    while(
$reg2 mysql_fetch_array($registros)){
    
mail("$_POST[usuario_email]","Activa tu cuenta.","Hola $_POST[usuario_nombre], Bienvenido tu te as registrado en web matriculas aco y para activar tu cuenta necesitas meterte en esta url. http://localhost/aco/index.php?page_id=validacion&email=$reg2[usuario_email]&key=$reg2[CodigoKEY]");
    }
                if(
$reg) {
                    echo 
"".text_register_successfully." <META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=index.php?page_id=login\">";
                }else {
                    echo 
"".text_register_error."";
                }
            }
        }
    }else {
?>

    <form action="index.php?page_id=registro" method="post">
        <label>nombre completo</label><br />
        <input type="text" name="usuario_nombre" maxlength="60" /><br />
        <label>matricula</label><br />
        <input type="text" name="usuario_matricula" maxlength="5" /><br />
        <label>contraseña</label><br />
        <input type="password" name="usuario_clave" maxlength="15" /><br />
        <label>repite contraseña</label><br />
        <input type="password" name="usuario_clave_conf" maxlength="15" /><br />
        <label>correo electronico</label><br />
        <input type="text" name="usuario_email" maxlength="50" /><br />
        <label>Sexo</label><br />
         <select name="sexo" id="sexo">
        <option value="0">Seleccione su Sexo</option>
        <option value="1">Hombre</option>
        <option value="2">Mujer</option>
        <option value="3">Indefinido</option>
      </select><br />
        <input type="submit" name="enviar" value="<?php echo text_button_account_create?>" />
        <input type="reset" value="<?php echo text_button_register_cleaner?>" />
    </form>
<?php
    
}
?>




El otro problema es con el archivo de validacion, como veran el registro es mediante una activación y al registrarte te envia un link para que la actives, el registro hace su funcion pero el que lo valida no, ya que cuando me dirijo a el link que me manda me sale el siguiente mensaje: Tu cuenta ha sido activada Inicia Sesion. Pero enrealidad no hace el cambio ya que sigue quedando desactivada la cuenta

para poner un poco más claro esta es la DB

Código (php) [Seleccionar]

CREATE TABLE `usuarios` (
 `usuario_id` int(4) NOT NULL AUTO_INCREMENT,
 `usuario_matricula` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
 `usuario_clave` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
 `usuario_nombre` varchar(60) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
 `usuario_email` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
 `sexo` tinyint(6) NOT NULL DEFAULT '0',
 `usuario_avatar` varchar(250) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
 `EstadoKEY` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
 `CodigoKEY` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
 `megusta` int(11) NOT NULL DEFAULT '0',
 `ips` text COLLATE utf8_unicode_ci NOT NULL,
 `usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
 PRIMARY KEY (`usuario_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=13 ;


Donde 0 es Activado y 1 es Desactivado

validacion.php

Código (php) [Seleccionar]

<?php
    session_start
();
    include(
'config.php');
    
$verificacion mysql_query("SELECT * FROM usuarios WHERE usuario_matricula = '$_GET[usuario_matricula]' AND CodigoKey = '$_GET[key]'");
if (
$veri mysql_fetch_array($verificacion))
    
mysql_query("UPDATE usuarios SET EstadoKEY = '0' WHERE usuario_matricula = '$_GET[usuario_matricula]'");
    echo 
"Tu cuenta ha sido activada Inicia Sesion.";
    echo 
"<meta http-equiv='refresh' content='2; url=index.php'>";


?>



tambien estuve buscando y encontre otro archivo para validación lo adapte pero sale un error y tampoco activa la cuenta

confirm.php

Código (php) [Seleccionar]

<?php
require_once('config.php');
include(
'functions.php');

    if(
$_GET['usuario_email']!='' && numeric($_GET['usuario_email'])==TRUE && strlen($_GET['key'])==32 && alpha_numeric($_GET['key'])==TRUE)
    {

        
$query mysql_query("SELECT usuario_email, CodigoKEY, EstadoKEY FROM usuarios WHERE usuario_email = '".mysql_real_escape_string($_GET['usuario_email'])."'");

        if(
mysql_num_rows($query)==0)
        {
            
$row mysql_fetch_assoc($query);
            if(
$row['EstadoKEY']==0)
            {
                echo 
"&error=".$error 'This member is already active !';
            }
            elseif(
$row['CodigoKEY']!=$_GET['key'])
            {
                echo 
"&error=".$error 'The confirmation key that was generated for this member does not match with the one entered !';
            }
            else
            {
                
$update mysql_query("UPDATE usuarios SET EstadoKEY=0 WHERE usuario_email='".mysql_real_escape_string($row['usuario_email'])."'") or die(mysql_error());
                
$msg 'Congratulations !  You just confirmed your membership !';
            }
        }
        else {

            echo 
"&error=".$error 'User not found !';

        }

    }
    else {

        
$error 'Invalid data provided !';

    }

    if(isset(
$error))
    {
        echo 
"&error=".$error;
    }
    else {
        echo 
"&msg=".$msg;
    }
?>