Comunidad en Español

Mostrar Mensajes

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


Temas - VR46 | QEVII.COM

Páginas: [1] 2 3 4
1
Intercambios de CS:GO / CSGO Keys 1.85€
« en: Marzo 28, 2018, 01:37:25 am »
Actualmente tengo poco más de 300 keys de CSGO que me gustaria vender.
Via payapal o transfer bancaria.

Interesados dejar mensaje aquí o por privado del foro.

Inventario: https://steamcommunity.com/id/fran_vr46/inventory/
Rep Thread: http://steamcommunity.com/groups/CSGOREPorts/discussions/5/541906348057060907/?ctp=7

2
OFF-Topic / GP de Qatar de MotoGP 2018 - 1ª carrera del año!
« en: Marzo 18, 2018, 01:22:54 pm »


Hoy se disputará en Losail la primera carrera del mundial de MotoGP 2018.

Los horarios de las carreras serán los siguiene:

14:00: Carrera Moto3
15:20: Carrera Moto2
17:00: Carrera MotoGP


Y así será la parrilla de salida de MotoGP, con el Frances liderando:

1. Johann Zarco (1'53.680)
2. Marc Márquez
3. Danilo Petrucci
4. Cal Crutchlow
5. Andrea Dovizioso
6. Alex Rins
7. Dani Pedrosa
8. Valentino Rossi
9. Jorge Lorenzo
10. Jack Miller
11. Andrea Iannone
12. Maverick Viñales
13. Aleix Espargaró
14. Franco Morbidelli
15. Hafizh Syahrin
16. Tito Rabat
17. Scott Redding
18. Thomas Luthi
19. Karel Abraham
20. Bradley Smith
21. Álvaro Bautista
22. Pol Espargaró
23. Takaaki Nakagami
24. Xavier Simeon


¿Quien creéis que se alzará hoy con la victoria?

Aquí el servidor espera que sea el 46 ;D


3
Intercambios de CS:GO / Karambit ★ | Mano alzada (algo desgastado)
« en: Noviembre 23, 2017, 11:53:44 am »
Busco 150€ vía paypal, precio no negociable:

https://steamcommunity.com/market/listings/730/%E2%98%85%20Karambit%20%7C%20Freehand%20%28Field-Tested%29



Inspeccionar: steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198036737153A12765223047D5242860691892703387

5
Juegos / Integrar una web con Steam (PARTE 2) -> Pagina depositar
« en: Marzo 24, 2017, 10:09:37 am »
Parte 2: Página de depositar skins.

En esta segunda parte veremos como crear la pagina que cargara el inventario de CSGO del usuario.
-> Debido a la limitación de 20000 caracteres por post, he tenido que separarlo esta parte en 2 post.
-> La parte 1 (Registro/Login de usuarios) la tenéis aqui: http://comuesp.com/foro/index.php?topic=4386.0
-> Al final del post dejare un enlace a todo el código fuente.

Comenzaremos creando la pagina depositar.php, para ello copiaremos el index.php y lo dejaremos así:

Código: [Seleccionar]
<?php
include(
'conexion.db.php');
    require(
'steamauth/steamauth.php');
?>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Depositar</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css">
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    <style>
        .table {
            table-layout: fixed;
            word-wrap: break-word;
        }
    </style>
  </head>
  <body style="background-color: #EEE;">
    <div class="container" style="margin-top: 30px; margin-bottom: 30px; padding-bottom: 10px; background-color: #FFF;">
<h1>Depositar skins</h1>
<hr>
<?php
//Si no existe la variable de sesion "steamid" mostramos el boton de inicio de sesion
if(!isset($_SESSION['steamid'])) {
echo "<div style='margin: 30px auto; text-align: center;'>Inicia sesión<br>";
loginbutton();
echo "</div>";
}  else {
//Si ya existe la variable de sesion...
include ('steamauth/userInfo.php'); //
?>


<?php
}    
?>

<hr>
</div>
  </body>
</html>

Esta pagina podriamos considerarla una especie de pantilla de nuestra web. Si el usuario no ha iniciado sesion, se le mostrará el boton de inicio de sesión, y en el caso de haber iniciado ya sesion de momento tan solo verá algo como lo siguiente:



Todo el código de depositar deberá ir entre el else { }:

Código: [Seleccionar]
}  else {
//Si ya existe la variable de sesion...
include ('steamauth/userInfo.php'); //
?>

<?php
}    
?>

En primer lugar añadiremos la libreria de Jquery entre las etiquetas <head>..</head>

Código: [Seleccionar]
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>


Podeis incluirlo como yo he echo desde los recursos de Google o bien descargar el fichero y añadir la ruta como recurso local.

A continuación crearemos un directorio llamado /js y dentro crearemos un fichero que llamaremos por ejemplo depositar.js
Añadiremos este fichero entre las etiquetas head, al igual que hicimos con el de boostrap:

Código: [Seleccionar]
<script src="js/depositar.js"></script>


A continuación crearemos la carpeta js y dentro de esta el fichero depositar.js. A continuacion lo abrimos con nuestro editor de codigo, en mi caso el notepad++.

Comenzaremos añadiendo las siguientes lineas de codigo:

Código: [Seleccionar]
$(document).ready(function() {
cargarInventario();
});

function cargarInventario(){

}



$(document).ready(function() { .... }); ejecutara las funciones que haya dentro de esta una vez el contenido DOM de la pagina se haya cargado (.ready). En nuestro caso, llamar a la función de cargarInventario que desarrollaremos a continuación.

Antes de comenzar a desarrollar esta funcion, vamos a crear un <div> en la pagina de depositar.php donde iremos informando al usuario de cualquier error, alerta o mensaje de información.
Haremos uso del siguiente componente de boostrap: http://getbootstrap.com/components/#alerts



Asi que abriremos de nuevo la pagina depositar.php y añadimos la siguiente linea de código:

Código: [Seleccionar]
<div class="alert alert-success hidden" role="alert"></div>


Por defecto lo dejaremos con el atributo "hidden", y ya vereis a continuación como con la función que vamos a crear iremos interactuando con los estilos de este div. Asi que volvemos al fichero javascript y creamos la siguiente funcion:

Código: [Seleccionar]
function alertMensaje(tipo, mensaje) {
   //Eliminamos los posibles estilos que pueda tener el div
   $("div[role='alert']").removeClass("alert-success alert-danger alert-warning alert-warning hidden");
   //En funcion al tipo de alerta añadimos una u otra clase:
   switch(tipo) {
case "success":
$("div[role='alert']").addClass("alert-success").html(mensaje);
break;
case "danger":
$("div[role='alert']").addClass("alert-danger").html(mensaje);
break;
case "info":
$("div[role='alert']").addClass("alert-info").html(mensaje);
break;
case "warning":
$("div[role='alert']").addClass("alert-warning").html(mensaje);
break;
default:
break;
}
}



Explicare brevemente lo que hace la función:
Citar
Cuando llamemos a esta funcion, debemos de pasarla 2 parametros (alertMensaje(tipo, mensaje)):
- tipo: debe ser "success", "danger", "info" o "warning". En funcion de este tipo mostrara el cuadro de un color u otro
- mensaje: debe contener el mensaje que se mostrara en el cuadro, por ejemplo "Tu inventario se esta cargando... ten paciencia."

A continuacion, la siguiente linea lo que hace es eliminar (removeClass) cualquier estilo que pueda tener, entre ellos el de hidden (para que asi pueda verse) y los posibles estilos:
$("div[role='alert']").removeClass("alert-success alert-danger alert-warning alert-warning hidden");

Y por ultimo, mediante un switch cargaremos un estilo u otro + el mensaje a mostrar.

switch(tipo) {
      case "success":
....
....
....

Así que ahora en la función cargarInventario colocaremos la siguiente linea:

Código: [Seleccionar]
//Informamos al usuario de que se estan cargando las skins
alertMensaje("info","Cargando tu inventario...");

Como veis, lo que hacemos es llamar a la funcion que acabamos de crear, indicándola que muestre una alerta de tipo "info" y con el correspondiente mensaje.

Así es como deberíamos tener actualmente nuestro depositar.js



En este preciso momento si probáis la pagina debería saliros lo siguiente:



Ahora continuaremos implementando la función de cargar el inventario. Para ello vamos a realizar una llamada AJAX a un archivo .PHP que debemos de crear, el cual se encargará de devolver el inventario del usuario.

Quizas para los que tenéis menos practica programando a partir de aquí se os haga un poco mas complicado por lo que tratare de ir paso por paso... aunque tampoco linea por linea ya que sino se haria eterno el tutorial.

Comenzaremos añadiendo las siguientes lineas a nuestra función:

Código: [Seleccionar]
//Generamos el div donde se cargaran las skins
var div = "<div class='skin' data-name='{0}' data-imagen='{1}' data-pos='{2}'><div class='imagen'>{3}</div><div class='name'>{4}</div><div class='precio'>{5}</div></div>";
//Llamada ajax que devolvera las skins
$.ajax({
"url": "dispacher.php?pagina=depositar",
success: function(data) {
try {
                data = JSON.parse(data);
console.log(data);
if(data.success==true) {
alertMensaje("success", data.mensaje);
} else {
alertMensaje("warning", data.mensaje);
}
} catch(err) {
alertMensaje("danger", "Se ha producido un error inesperado!");
}
},
error: function() {
            alertMensaje("danger", "Error al obtener tu inventario");
        }
});



Como veis, comenzamos creando una variable div
Código: [Seleccionar]
var div = "<div class='skin' data-name='{0}' data-imagen='{1}' data-pos='{2}'><div class='imagen'>{3}</div><div class='name'>{4}</div><div class='precio'>{5}</div></div>";Esta será la que añadiremos después a nuestra pagina "depostiar.php" tantas veces como skins tenga el usuario. No entrare mas en detalle por el momento ya que es posible que la modifiquemos mas adelante... de momento lo dejo así para simplificar.

A continuación ejecutamos una llamada AJAX a la dirección: "url": "dispacher.php?pagina=depositar".
Evidentemente deberemos de crear la pagina "dispacher.php" aunque eso lo haremos un poco mas adelante.

Continuamos estableciendo que pasara si la llamada sale bien o falla, para ello colocamos las lineas
Código: [Seleccionar]
success: function(data) {
...........
},
error: function() {
            alertMensaje("danger", "Error al obtener tu inventario");
        }

De momento explicare hasta aqui.

Al no haber creado aun el fichero "dispacher.php", nuestra llamada AJAX entrara por lo establedico en la funcion error, por lo que deberia mostrar el mensaje de alertMensaje("danger", "Error al obtener tu inventario");
Lo probamos y asi es:



Adicionalmente, si abrís la consola vereis el error 404 de que la pagina dispacher.php... no existe.

Si continuamos analizando el codigo, vemos que en el caso de que la pagina existiera, entonces entraría por la función success:

Código: [Seleccionar]
success: function(data) {
try {
                data = JSON.parse(data);
console.log(data);
if(data.success==true) {
alertMensaje("success", data.mensaje);
} else {
alertMensaje("warning", data.mensaje);
}
} catch(err) {
alertMensaje("danger", "Se ha producido un error inesperado!");
}
},

Lo que hacemos en primer lugar es un try {} catch {}. Esto quiere decir en resumen que "intenta esto" (try) y si hay algún erro muestra esto (catch).

Dentro del try hacemos lo sigueinte:

1º: mostramos en consola la respuesta recibida (data). Esto lo dejamos de momento asi porque nos viene bien para ir desarrollando... mas adelante deberiamos quitarlo.

2º: a continuacion, tratamos la respuesta recibida (data) como una respuesta JSON.

3º: en el fichero dispacher.php que crearemos luego, siempre devolveremos un success = true/false y un mensjae, asi que comprobaremos si el success es true y mostraremos un mensaje de tipo success alertMensaje("success", data.mensaje); y si es erroneo mostramos un mensaje de tipo warning alertMensaje("warning", data.mensaje);

De momento lo dejamos asi y vamos a proceder a crear el fichero dispacher.php:

Yo lo creare en el directorio raiz de nuestro proyecto, aunque podéis hacerlo en cualquier ruta (resources) o donde queráis...



Pegamos el siguiente codigo en el dispacher.php:

Código: [Seleccionar]
<?php
session_start
();
include(
'conexion.db.php');
error_reporting(0);
if(isset(
$_SESSION['steamid'])) {
exit(json_encode(array('success'=>true'mensaje'=>'De momento vamos bien.')));
} else {
exit(json_encode(array('success'=>false'mensaje'=>'Es necesario iniciar sesión')));
}
?>



En las 3 primeras lineas:

1º: iniciamos el session_start() para poder acceder a las sesiones.

2º: incluimos la conexion a la base de datos para poder hacer llamadas SQL a nuestra BD

3º: establecemos el reporte de errores a 0, ya que como queremos que esta paginda devuelva llamadas JSON, si el reporte de errores esta a 1, la pagina podría mostrar algún warning por lo que ya no devolvería respuesta json.

a continuación, comprobamos si se ha iniciado sesion y en ese caso devolvemos la respuesta siguiente:
Código: [Seleccionar]
exit(json_encode(array('success'=>true, 'mensaje'=>'De momento vamos bien.')));y si no se ha iniciado sesion devolvemos:
Código: [Seleccionar]
exit(json_encode(array('success'=>false, 'mensaje'=>'Es necesario iniciar sesión')));
Si probamos ahora nuestra pagina deberíamos ver algo como lo siguiente:
(al tener un console.log(data) veréis también la llamada en consola del navegador.)



Si tenéis curiosidad, podéis probar a abrir la url de dispacher.php en el navegador, veríais algo como lo siguiente:



Y si no tenéis sesión iniciada:



Vamos a continuar editando el fichero dispacher.php

Cambiaremos esto:

Código: [Seleccionar]
if(isset($_SESSION['steamid'])) {
exit(json_encode(array('success'=>true, 'mensaje'=>'De momento vamos bien.')));
}

por esto otro:

Código: [Seleccionar]
if(isset($_SESSION['steamid'])) {
//Si existe la variable de sesion, obtengo los datos del usuario:
$query_user = mysqli_query($link,"SELECT * FROM usuarios WHERE steamid=".$_SESSION['steamid']);
if(mysqli_num_rows($query_user)==1) {
$user = mysqli_fetch_assoc($query_user);
} else {
exit(json_encode(array('success'=>false, 'mensaje'=>'Error conectando a la Base de datos.')));
}
if($user["baneado"]==0) {

//Comprobamos que existe la variable pagina
if(isset($_GET["pagina"])) {
switch($_GET["pagina"]) {
case "depositar":
$items[] = array(
'img' => 'http://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpovbSsLQJf2PLacDBA5ciJlY60g_7zNqnumXlQ5sJ0teXI8oThxlew_hJlN26ndYfDcwNsZFvW-gS2w-u9gsK0vpvIy3Nj6XUl5HjbmxapwUYbPsZKINM/110fx50f',
'nombre' => '★ Karambit | Tiger Tooth (Factory New)',
'precio' => '300',
);
$array = array(
'items' => $items,
'success' => true,
'mensaje' => "Items cargados correctamente"
);
exit(json_encode($array));
break;
default:
exit(json_encode(array('success'=>false, 'mensaje'=>'URL no valida')));
break;
}
} else {
exit(json_encode(array('success'=>false, 'mensaje'=>'Faltan parametros en la URL')));
}
} else {
exit(json_encode(array('success'=>false, 'mensaje'=>'Error! esta baneado')));
}
}

Explico a continuación lo que acabamos de añadir:

1º: Hago una llamada SQL ("SELECT * FROM usuarios WHERE steamid=".$_SESSION['steamid']) para obtener los datos que tengo el BD del usuario. Después almaceno la respuesta en la variable $user

Fíjense que si la llamada SQL da un error, se devolvería la siguiente respuesta: exit(json_encode(array('success'=>false, 'mensaje'=>'Error conectando a la Base de datos.')));

2º: Comprobamos si el usuario esta baneado...

3º: Mediante un switch comprobamos el valor de "$_GET['pagina']". Esto lo dejamos asi ya que este mismo fichero dispacher.php lo reutilizaremos también para la pagina de retirar skins.

4º: Por ultimo, si la pagina es la de "depositar" creamos estos 2 arrays y los devolvemos;

Código: [Seleccionar]
$items[] = array(
'img' => 'http://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpovbSsLQJf2PLacDBA5ciJlY60g_7zNqnumXlQ5sJ0teXI8oThxlew_hJlN26ndYfDcwNsZFvW-gS2w-u9gsK0vpvIy3Nj6XUl5HjbmxapwUYbPsZKINM/110fx50f',
'nombre' => '★ Karambit | Tiger Tooth (Factory New)',
'precio' => '300',
);
$array = array(
'items' => $items,
'success' => true,
'mensaje' => "Items cargados correctamente"
);
exit(json_encode($array));

Como veis, de momento devolvere un solo item... en ese caso un karambit tiger toot.
Más adelante modificaremos esto... recorriendo el inventario del usuario y cargando todas las skins. De momento lo dejo asi para no complicar la linea de aprendizaje.

Si probáis nuevamente la pagina deberíais ver esto:



Inspeccionando la consola del navegador veréis que tenemos ahi el array de "items", de momento solo con el karambit.

Lo que haremos ahora es en el fichero depositar.js, ir recorriendo el array de items y generando los bloques de div para posteriormente mostrarlos en el depositar.php
Iremos haciendolo poco a poco:

En primer lugar, cambiamos esto:

Código: [Seleccionar]
if(data.success==true) {
alertMensaje("success", data.mensaje);
}

por esto otro:

Código: [Seleccionar]
if(data.success==true) {
alertMensaje("success", data.mensaje);
//obtengo el total de items
var totalItems = data.items.length;
var itemsFormateados = [];
//recorro tantos items como haya
for(var num=0; num<totalItems; num++) {
//creo una variable item con el item correspondiente a la posicion en la que estoy
                        var item = data.items[num];
var nombre = item.nombre;
                        var imagen = item.img;
var precio = item.precio;
       
                        var itemFormateado = div.format(nombre,imagen,num,imagen,nombre,precio);
                        itemsFormateados.push(itemFormateado);
                    }
console.log(itemsFormateados);
}



Añadimos tambien al final del documento la siguiente funcion:

Código: [Seleccionar]
if (!String.prototype.format) {
    String.prototype.format = function() {
        var args = arguments;
        return this.replace(/{(\d+)}/g, function(match, number) {
            return typeof args[number] != 'undefined' ?
                args[number] :
                match;
        });
    };
}



Lo que acabamos de hacer es recorrer mediante un bucle "for" el array de items e ir "formateando" un elemento <div> que posteriormente incluiremos en la pagina de depositar.

Si ahora actualizáis la pagina podréis verlo en consola:



Ahora solo nos queda mostrarlo realmetne en la pagina... no en consola. Para ello nos vamos a depositar.php y añadimos esta div que sera donde se cargaran las skins:

Código: [Seleccionar]
<div id="listadoDeSkins">
</div>



y en la pagina de depositar.js añadimos esta linea:

Código: [Seleccionar]
document.getElementById("listadoDeSkins").innerHTML = itemsFormateados.join('');


Lo que estamos haciendo basicamente es con "getElementById" obteniendo de la pagina el contenido del id "listadoDeSkins" que acabamos de crear... y añadiendo el contenido HTML (innerHTML) de la variable itemsFormateados que habiamos creado.

De esta forma, si actualizamos la pagina veremos:


6
APPLE ESTÁ SIENDO AMENAZADA POR UN GRUPO DE HACKERS QUE ASEGURA TENER MÁS DE 300 MILLONES DE CUENTAS DE ICLOUD

UN GRUPO DE HACKERS AUTODENOMINADO "TURKISH CRIME FAMILY" (http://turkishcrimefamily.org) ESTÁ EXTORSIONANDO A APPLE A CAMBIO DE NO PUBLICAR INFORMACIÓN RELACIONADA CON MÁS DE 300 MILLONES DE CUENTAS DE ICLOUD. LOS HACKERS ESTÁN PIDIENDO A APPLE 75.000 DÓLARES EN BITCOIN O ETHEREUM, OTRA CRIPTOMONEDA, O 100.000 DÓLARES EN TARJETAS DE REGALO PARA ITUNES.

SEGÚN MOTHERBOARD, ESTE GRUPO DE HACKERS SE HA PUESTO EN CONTACTO CON ELLOS PARA DAR A CONOCER EL SUPUESTO FALLO DE SEGURIDAD Y "LAS NEGOCIACIONES" QUE ESTÁN LLEVANDO A CABO CON LA GENTE DE APPLE, DONDE UNA DE LAS AMENAZAS ES QUE SI NO ENTREGAN EL DINERO BORRARÁN DE FORMA REMOTA ALGUNOS IPHONE.

UN RESCATE CON VALOR DE 75.000 DÓLARES EN BITCOINS

SEGÚN EXPLICAN LOS HACKERS, HAN LOGRADO ACCEDER A UNA GRAN CACHE DE CREDENCIALES DE ICLOUD Y OTRAS CUENTAS DE CORREO ELECTRÓNICO DE APPLE. CON ESTAS CREDENCIALES SON CAPACES DE ENTRAR A LAS CUENTAS DE VARIOS USUARIOS VÍA WEB A TRAVÉS DE ICLOUD, LO QUE NO SÓLO LES DA ACCESO A FOTOS, CORREOS, Y ARCHIVOS PERSONALES, SINO TAMBIÉN LES DA EL PODER DE BORRAR DE FORMA REMOTA LOS DISPOSITIVOS ACTIVADOS EN ESA CUENTA.

LOS HACKERS HABRÍAN ENVIADO CAPTURAS DE PANTALLA DONDE SE VEN ALGUNOS CORREOS ELECTRÓNICOS QUE HAN TENIDO CON EL EQUIPO DE SEGURIDAD DE APPLE. SEGÚN EXPLICA MOTHERBOARD, EN UNO DE LOS CORREOS SE PUEDE LEER QUE GRABARON UN VÍDEO DE YOUTUBE DONDE SE VE CÓMO TIENEN ACCESO A LA CUENTA DE UNA ANCIANA, ACCEDEN A SUS FOTOS Y A LA OPCIÓN DE BORRADO REMOTO.

EN ESTAS MISMAS CAPTURAS SE PODRÍA VER LA RESPUESTA POR PARTE DEL EQUIPO DE SEGURIDAD DE APPLE, QUIENES LE PIDEN QUE ELIMINEN ESE VÍDEO Y LES INFORMAN QUE ELLOS NO NEGOCIAN CON CIBERDELINCUENTES, ADEMÁS DE QUE ESA CONVERSACIÓN SERÁ ARCHIVADA Y ENVIADA A LAS AUTORIDADES.

'TURKISH CRIME FAMILY' ESTÁ EXIGIENDO A APPLE EL PAGO HASTA ANTES DEL 7 DE ABRIL, YA QUE EN CASO DE NO RECIBIRLO COMENZARÁN A BORRAR DISPOSITIVOS DE FORMA REMOTA Y POSTERIORMENTE HARÁN PÚBLICA LA INFORMACIÓN DE ESTOS USUARIOS.

HASTA EL MOMENTO APPLE NO HA SALIDO A DAR DECLARACIONES AL RESPECTO, PERO LA REALIDAD ES QUE HAY MUCHAS INCONGRUENCIAS EN LAS EXIGENCIAS DE ESTE SUPUESTO GRUPO DE HACKERS. POR EJEMPLO, UNOS DE LOS CORREOS ELECTRÓNICOS ASEGURA TENER 300 MILLONES DE CUENTAS @ME Y @ICLOUD, MIENTRAS QUE LOS HACKERS QUE HAN CONTACTADO CON MOTHERBOARD DICEN TENER 559 MILLONES DE CUENTAS. POR OTRO LADO, ESTOS HACKERS SE HAN PUESTO EN CONTACTO CON VARIOS MEDIOS DE COMUNICACIÓN ESTADOUNIDENSES CON EL OBJETIVO DE EJERCER PRESIÓN SOBRE APPLE.

​AQUÍ HAY QUE DESTACAR QUE HASTA EL MOMENTO LAS PRUEBAS QUE HAN MOSTRADO LOS HACKERS NO SON DETERMINANTES, YA QUE TODO GIRA EN TORNO A CAPTURAS DE SUPUESTOS CORREOS ELECTRÓNICOS, VAMOS, NO SE HA TENIDO ACCESO A DICHOS CORREOS DE PRIMERA MANO. ASIMISMO, SE LES HA PEDIDO A LOS HACKERS QUE PRESENTEN DATOS DE ALGUNA O ALGUNAS CUENTAS DE ICLOUD SUPUESTAMENTE ROBADAS, ESTO CON LA FINALIDAD DE DE VERIFICAR SU VERACIDAD, PERO HASTA EL MOMENTO NO HA HABIDO RESPUESTA.

7
Introducción:

En este tema (PARTE 1) y los que vendrán a continuación, veremos una forma de integrar nuestra web con Steam (registro de usuarios e inicio de sesion). Implementaremos también un sistema de "coins" para que los usuarios puedan depositar y retirar skins de CSGO.

Dividiré el tutorial en varias partes pues podemos tratar cada una de ellas independientemente. Por ejemplo, si ya tienes una web con un registro de usuarios y sistema de coins, puede que tan solo te interese la parte 2 de "cargar el inventario del usuario" o la parte 3 de "depositar al bot"....etc

- Registro/Login de usuarios a través de Steam (PARTE 1): Crearemos la base de datos y una tabla "usuarios". Aprenderemos a como iniciar sesión en nuestra web con Steam, como registrar/actualizar la información de los usuarios en nuestra base de datos y hacer uso de la información del usuario.

- Pagina "depositar", cargaremos el inventario del usuario y los precios de las skins (PARTE 2): En esta segunda parte crearemos la pagina de depositar.php, cargaremos en ella el inventario de CSGO del usuario y mostraremos los precios. -> http://comuesp.com/foro/index.php?topic=4423

- Configuración del bot y envió de ofertas de la pagina "depositar" (PARTE 3): En esta tercera parte haremos que el usuario pueda seleccionar las skins a depositar de la pagina que creamos (depositar.php) y el bot le envie la oferta de intercambio automáticamente y sume los coins al balance.

- Retirada por parte del usuario de artículos de nuestra página con los coins disponibles (PARTE 4): Cargaremos en la web los items de nuestros bots. Los usuarios podrán retirar dichas skins con los coins que tengan. Configuraremos el bot para que envie la oferta comercial al usuario y le reste los coins del balance.

Aunque intentare explicar cada punto lo mejor y mas detalladamente que pueda, necesitarás tener unos conocimientos mínimos de programación web (PHP, HTML, JavaScript...) para poder seguir el tutorial, no voy a explicar por ejemplo conceptos básicos de como crear un servidor local (localhost), como instalar phpmyadmin, apache...etc, cosas así ya deberías tener aprendidas!

Parte 1: Registro/Login de usuarios a través de Steam.

En primer lugar vamos a crear la base de datos que emplearemos como ejemplo para este tutorial, en mi caso la llamaré "tutorial_tradebot" y con cotejamiento "utf8_general_ci":



Creamos a continuación una tabla que llamaremos "usuarios". Os dejo a continuacion la query para que os sea más comodo:

Código: [Seleccionar]
CREATE TABLE IF NOT EXISTS `usuarios` (
  `steamid` bigint(20) NOT NULL,
  `realname` varchar(50) NOT NULL,
  `avatar` varchar(250) NOT NULL,
  `avatarmedium` varchar(250) NOT NULL,
  `fecha_registro` date NOT NULL,
  `trade_url` varchar(80) NOT NULL DEFAULT '0',
  `ip_registro` varchar(50) NOT NULL,
  `ip_ultima` varchar(50) NOT NULL,
  `acepta_tos` int(11) NOT NULL DEFAULT '0',
  `balance` int(11) NOT NULL DEFAULT '0',
  `retirada_disponible` int(11) NOT NULL DEFAULT '0',
  `total_depositado` int(11) NOT NULL DEFAULT '0',
  `total_retirado` bigint(20) NOT NULL DEFAULT '0',
  `baneado` int(11) NOT NULL DEFAULT '0',
  `baneo_motivo` text,
  `hash` varchar(250) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;



Comentare brevemente cada campo:

steamid -> el ID de usuario de Steam, por ejemplo: 76561198036737153
realname -> el nick del usuario, por ejemplo: VR46 | Comuesp.com
avatar -> la url al avatar de Steam del usuario tamaño 32x32 pixeles
avatarmedium -> la url al avatar de Steam del usuario tamaño 64x64 pixeles
fecha_registro -> fecha de registro
trade_url -> Url de intercambio del usuario
ip_registro -> IP con la que se registro
ip_ultima -> Ultima IP conocida
acepta_tos -> Contendra 1 o 0, por si queremos que el usaurio acepte alguna política
balance -> coins del usuario
retirada_disponible -> total de coins que puede retirar
total_depositado -> total de coins que ha depositado
total_retirado -> total de coins que ha retirado
baneado -> Contendra 1 (verdadero) o 0 (falso)
baneo_motivo -> Un motivo del baneo
hash -> Por decirlo de alguna forma la password del usuario que viajara en las peticiones

Citar
NOTA*
Si necesitáis más datos del perfil de Steam del usuario, como el avatar_full (184x184 pixeles), visibilidad del perfil, etc... podéis crear ya los campos que necesitéis en la base de datos. Tened en cuenta que los datos a los que tendremos acceso son los siguientes: https://developer.valvesoftware.com/wiki/Steam_Web_API#Public_Data
El metodo que emplearemos será:
GetPlayerSummaries (v0002)
Example URL: http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=XXXXXXXXXXXXXXXXXXXXXXX&steamids=XXXXXXXXXXX

Una vez creada la base de datos y la tabla de usuario, descargamos el siguiente repositorio: https://github.com/fran46/tutorial_tradebot/tree/master/parte1

Lo descomprimimos en el directorio publico de nuestro servidor. En mi caso, me he creado una carpeta llamada "tutorial_tradebot" (http://localhost/tutorial_tradebot/)

Lo primero que debemos hacer es editar los siguientes ficheros:

steamauth/configuracion.php



La API Key de Steam la encontraréis aqui: http://steamcommunity.com/dev/apikey (generad una si aun no la teneis).
En dominio dejar "localhost" o si estáis en algún servidor web la IP o el dominio.
En $has_privado cambiarlo por una palabra sin espacios. Por ejemplo asd123asd4124

conexion.db.php

Modificarlo con los datos de conexion a vuestra BD. (servidor, usuario, contraseña y nombre de la BD)



Una vez modificados los datos los ficheros, si accedemos al index.php desde nuestro navegador deberíamos encontrarnos lo siguiente:



El codigo de la pagina es muy sencillo; fíjense que he cargado los estilos de boostrap para que la pagina sea algo mas atractiva visualmente y no hacer este tutorial en texto plano.
Quizas lo mas importante a resaltar sean las siguientes lineas:

Código: [Seleccionar]
<?php
//Si no existe la variable de sesion "steamid" mostramos el boton de inicio de sesion
if(!isset($_SESSION['steamid'])) {
echo "<div style='margin: 30px auto; text-align: center;'>Inicia sesión<br>";
loginbutton();
echo "</div>";
}  else {
//Si ya existe la variable de sesion...
include ('steamauth/userInfo.php');

En esas lineas es donde comprobamos si ya existe la variable de sesion "staemid", cargamos el fichero userInfo que nos dara los datos del usaurio... y en caso contrario mostramos el loginbutton()

Para continuar con la prueba, hacemos clic en iniciar sesion:



Tras iniciar sesión sucederá lo siguiente:

1. El fichero steamauth.php validara el proceso de inicio de sesion, y si todo es correcto generará la variable de sesion $_SESSION['steamid']
2. Se redireccionara al usuario a la pagina establecida tras el login, en este caso el index.php
3. En el index.php al detectar que existe la variable $_SESSION['steamid'] cargara el fichero userInfo.php
4. El fichero userInfo.php se encargará de obtener los detalles del usuario, para ello llamara al API de steam GetPlayerSummaries v2 (http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=XXXXXXXXXX&steamids=XXXXXXXXXX) el cual nos dara la siguiente información (en mi caso):



Código: [Seleccionar]
{
"response": {
"players": [
{
"steamid": "76561198036737153",
"communityvisibilitystate": 3,
"profilestate": 1,
"personaname": "VR46 | comuesp.com",
"lastlogoff": 1490083770,
"commentpermission": 1,
"profileurl": "http://steamcommunity.com/id/fran_vr46/",
"avatar": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/c7/c7c3177b114bc5ec77afcfb5bb44e2742c74db2d.jpg",
"avatarmedium": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/c7/c7c3177b114bc5ec77afcfb5bb44e2742c74db2d_medium.jpg",
"avatarfull": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/c7/c7c3177b114bc5ec77afcfb5bb44e2742c74db2d_full.jpg",
"personastate": 1,
"primaryclanid": "103582791439274710",
"timecreated": 1294879191,
"personastateflags": 0,
"loccountrycode": "ES"
}
]
}
}

El fichero se encargara de procesar esta información y crear al usuario en base de datos, o en el caso de que el usuario ya exista actualizara su información.

Asi que tras el inicio de sesión, en la tabla usuarios que creamos anteriormente ya deberiais de tener al usuario registrado:





Como vereis por defecto se registrará con el "trade url" = 0, asi como el balance, coins retirados...etc.

NOTA*
Si por algun casual la llamada al API falla o no logra cargar la informacion del usuario, sucedera lo que veis al final del codigo de userInfo.php

Código: [Seleccionar]
else {
session_destroy();
header("location:index.php");
}

Basicamente lo que hacemos es destruir la sesion (para que no se quede colgando la variable "steamid") y redirigir al usuario al index.
Esto podeis modificarlo si quereis y redirigirlo a una pantalla de error... o pasar una variable $_GET para mostrar un error.... eso lo dejo a vuestra eleccion.

Si todo ha ido bien, el index deberia mostrarnos una pagina como la siguiente:



Como podréis ver, a partir de aquí ya podremos crear otras paginas "privadas" en nuestra pagina web contemplando únicamente la variable if(!isset($_SESSION['steamid'])) { ... } else { ... }

Tenéis a vuestra disposición las variables de sesión que se han generado... asi como acceso a tiempo real en todo momento mediante sql a otra información del usuario como puede ser el balance, coins retirados, etc, que no convine almacenarlo en sesiones ya que su valor puede variar mas frecuentemente.

Adicionalmente, podremos acceder a otras funciones incluidas en el fichero steamauth.php como son el "logout" o el "update"

Código: [Seleccionar]
if (isset($_GET['logout'])){
require 'configuracion.php';
session_unset();
session_destroy();
header('Location: '.$steamauth['logoutpage']);
exit;
}
if (isset($_GET['update'])){
unset($_SESSION['steam_uptodate']);
require 'userInfo.php';
header('Location: '.$_SERVER['PHP_SELF']);
exit;
}

basta simplemente con que enviemos al usuario a una pagina que contenga en la url la variable GET logout o update



?logout -> destruira la sesion del usuario
?update -> actualizara la informacion del perfil de usuario (seria como volver a llamar a userInfo.php)

En el siguiente post veremos:
- Como cargar en la web nuestro inventario de CSGO mostrando los precios medios (usaremos un API).
- Configuraremos un BOT en Steam para que nos envie la oferta de intercambio.
- Una vez aceptada la oferta de intercambio añadiremos los coins al balance del usuario.

Un saludo!

8
Intercambios de CS:GO / CSGO Keys 2.05€/paypal
« en: Marzo 17, 2017, 01:37:15 pm »
Poco mas que decir! interesados podeis contactar por aqui o steam!

Tengo 35 keys en estos momentos:


9
Hola a todos!

Decido crear este tema a raiz de una pregunta de nuestro compañero Commander Shopard que podéis encontrar aquí

Sé que muchos de vosotros utilizáis la web SteamTradeMatcher para intercambiar los cromos repetidos. Y, aunque imagino que alguno ya conozcáis de la existencia de este script, seguro que muchos otros (como era mi caso), aun añadís "manualmente" los cromos en la ventana de intercambio.

¿Que es Steam Trade Matcher?
Para quien no sepa que es esta web, básicamente se trata de un buscador de cromos.

Su función es buscar las cartas repetidas y buscar usuarios, activos de la web, que tengan las cartas que a ti te faltan. Es decir, te sugerirá un intercambio.

Por ejemplo: En la imagen, a continuación, nos muestra el cromo True Believers Bar y el cromo de otro usuario Wilson Chase Bank que a mí me falta.



Justo encima de las cartas (en la imagen no se ve bien) disponemos de un botón para ofrecer el intercambio al otro usuario.... El único problema de esto es que tendremos que buscan en nuestro inventario y en el del otro usuario las cartas... pero gracias al script se añadiran automaticamente!

La web tiene otras opciones y  herramientas... pero no voy a entrar en detalle ya que la que en estos momentos nos incumbe es la comentada
[close]


Hay que reconocer que esto es un trabajo tedioso... pero con el siguiente script ya no tendremos que volverlo a hacer, ya que añadirá automáticamente nuestros cromos y los del otro usuario al  intercambio!

A continuación explicaré como instalar el script:

En primer lugar, añadimos la siguiente extensión Tampermonkey a nuestro navegador Chrome (o Greasemonkey para los que useis Firefox): https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=es

Una vez instalado podréis encontrarlo en la esquina superior derecha del navegador:



A continuación, accedemos a la web de Steam Trade Matcher, iniciamos sesión, visitamos el siguiente link: http://www.steamtradematcher.com/userscript y hacemos clic sobre "Install the Steam Trade Matcher UserScript"



Se nos abrirá una ventana como la siguiente (hacemos clic en "Instalar"):



Una vez instalado, si actualizamos la pagina http://www.steamtradematcher.com/userscript nos deberia de aparecer un mensaje de que ya esta correctamente intalado, asi como otras opciones de configuración como el mensaje a añadir en el intercambio, la accion a realizar despues del trade, etc... que pueden personalizarse. De momento, lo dejaremos tan y como vienen por defecto.

A partir de este momento, cuando hagamos un Scan (http://www.steamtradematcher.com/compare) y hagamos clic sobre el boton de realizar intercambio, se nos añadiran de forma automatica los cromos al intercambio:





Si es un intercambio de muchos cromos puede que nos tarde un minuto o asi en cargar... pero terminan cargando:







NOTA*
La primera vez os aparecera una alerta del TamperMonkey como la siguiente:



Darle a "permitir siempre" y listo ;)

10
Counter Strike / Mi script para csgoempire
« en: Marzo 15, 2017, 01:12:09 pm »
Hola!

El funcionamiento del script es exactamente igual al de CSGOPolygon.
Para saber como utilizar el script y como funciona, visitar el siguiente tema: http://comuesp.com/foro/index.php?topic=4314.0

Aqui teneis el codigo del Script para CSGOEmpire: https://raw.githubusercontent.com/fran46/script_csgoempire/master/script_csgoempire.js
(Hay que usar ese codigo, no vale el de csgopolygon ya que cambian un par de lineas de codigo, concretamente las de enviar apuesta y detectar el roll)


11
Counter Strike / Mi script para csgopolygon (Version 2)
« en: Marzo 15, 2017, 01:02:10 pm »
Hola!

He creado una nueva versión del script para CSGOPolygon que comparto a continuación:

Esta nueva versión, cambia bastantes cosas respecto a la versión anterior: http://comuesp.com/foro/index.php?topic=1978.0 entre otras:

- Nueva interfaz.
- Nuevos métodos de apuesta.
- Posibilidad de detener automáticamente el script tras ganar X coins, o si la apuesta a realizar sera superior a X coins.
- Menos cuelgues.
- Algoritmo mas limpio; consume menos memoria y ya no interactua con los elementos de la web (inputs, botones, etc...), si no que interactua directamente con los sockets y funciones de la web. Esto permite entre otras cosas realizar apuestas manualmente de forma paralela a las del script.

Código del script: https://raw.githubusercontent.com/fran46/CsgoPolygonScript/master/version2.js

Modo de ejecución:

- Abrimos la consola del navegador (Ctrl + Mayús + J)
- Pegamos el código.
- Ejecutamos pulsando INTRO

A continuación se abrirá una ventana como la siguiente:



Elegimos el "Modo de juego" y establecemos los parámetros que consideremos.. y hacemos clic en "Iniciar":



El script comenzará apostando lo establecido en el campo "Apuesta base". Si pierde, ira doblando lo apostado (martingala) y si gana volverá a apostar la apuesta base.

El script se detendrá si alcanza lo establecido en campo "Detener si la ganancia es igual o superior a" o si la apuesta a realzar supera lo establecido en el campo "Detener si la apuesta va a ser igual o superior a".

La lógica de apuestas varia en función del "Modo de juego" que establezcamos:

Mismo color + Porcentaje

Apostará al ultimo color que ha salido (a excepción del verde) y salvo si un color tan solo ha aparecido 2 veces o menos en las ultimas 10 rondas, en este caso apostará a dicho color.

Color opuesto + Porcentaje

Apostará al color opuesto del ultimo en aparecer (a excepción del verde) y salvo si un color tan solo ha aparecido 2 veces o menos en las ultimas 10 rondas, en este caso apostará a dicho color.

Mismo color

Apostará siempre al ultimo color en salir (a excepción del verde).

Color opuesto

Apostará siempre al color opuesto al que ha salido (a excepción del verde).

Modo espera

El script analizará los 10 últimos colores que han salido. Si el rojo o negro no están, apostará a dicho color.
*Este modo es recomendable para apuestas elevadas, ya que es una casuistica rara de darse.

Aleatorio

Apostará de forma aleatoria al rojo o negro.

Porcentaje

El script analizará los 10 últimos colores que han salido y apostará al que en menos % ha salido.
Si ambos colores han aparecido el mismo numero de veces, apostará de forma aleatoria.

**NOTA:
Si alguien tiene alguna sugerencia o idea... o quiere implementar otra logica, que lo detalle en los comentarios y yo podria hacerlo, no obstante, cualquiera que entienda un poco de programación comprenderá bien el script, pues lo he tratado de hacerlo lo mas comprensible posible (estructuracion, nombre variables, funciones...etc).

El script nos ira dando información continua de su ejecución en la ventana engra con letras verdes:




**NOTA 2:
Hay un bug que aun no logro detectar porque se produce en csgopolygon, y es que en ocasiones se queda en "Rolling 0.0"... y es como si la pagina perdiera la conexión con nosotros.
Es un problema que creo que nada tiene que ver con el script, sino más bien con la pagina... ya que solo pasa en polygon.
Este mismo script por ejemplo en CSGOEmpire nunca se me ha quedado colgado.

El codigo para CSGOEmpire lo teneis aqui: http://comuesp.com/foro/index.php?topic=4315.0


**NOTA 3:
Este script podríamos considerarlo aun en fase "BETA". Termine de programarlo el lunes 13 y lo publico hoy dia 15.
Yo llevo estos días probandolo y no he detectado ningún problema... no obstante, pueden darse! Si es asi agradecería que lo reporteis para tratar de solucionarlo.


**NOTA 4:
Aclarar que en mi opinion,este tipo de scripts estan bien para dejarlos corriendo mientras estas en el PC haciendo otras cosas... y no tienes tiempo para dedicarlo a apostar. Sirve para asi sacarte unos centimos o dolares, depende de la apuesta base que establezcas.
Yo recomiendo no arriesgar mucho, cuanto más alta sea la apuesta base, mas riesgos corres y mas balance necesitas para hacer frente a una mala racha de derrotas. Si quieres apostar fuerte, mejor hacerlo manual o emplear el "modo espera".
Una opcion es tener distintas cuentas abiertas con el script corriendo... puedes usar la ventana de incognito, otro navegador, crear varios perfiles en Chrome o usar algun plugin como Multifox para firefox...

Spoiler
Si quieren un referido el mio es: VR46CSGO
[close]

12
Intercambios de CS:GO / 40 CSGO Keys
« en: Febrero 21, 2017, 11:36:12 am »
Me gustaría vender 40 keys de csgo
Precio: 2.10€ 2.05€
Via Paypal o transferencia bancaria.

No hay compra minima...desde 1 key en adelanta.

13
Intercambios de CS:GO / Algunos cuchillos
« en: Diciembre 28, 2016, 05:36:56 pm »
Actualmente tengo algunos cuchillos que quisiera vender, concretamente los siguientes:







Precio a convenir!
Solo PayPal o transferencia bancaria!

Un saludo!

14
Hardware / Software / Black Friday [OFERTAS HARDWARE] -> Colabora <-
« en: Noviembre 24, 2016, 04:03:13 pm »
Podéis ir publicando aquí ofertas interesantes encontreis!

Mañana a partir de las 10:00h Xtremmedia lanza sus ofertas: http://xtremmedia.com/?q=st/public/BFyCM16# en la parte inferior vereis un botón que os enlazara a estas.

Yo espero pillarme un SSD y otro HDD, a ver que sale!

15
Hardware / Software / Guía en Steam sobre montaje de PC a piezas
« en: Octubre 03, 2016, 11:21:57 am »
Buenas!!

Aprovechando que tenemos esta nueva sección en el foro, comparto esta guía que cree hace ya mas de un año en Steam: http://steamcommunity.com/sharedfiles/filedetails/?id=424336915

Seguramente este ya algo "deprecated" pues el hardware y la tecnológica evolucionan y mejoran cada año que pasa. No obstante, a parte de versiones y modelos... hay algunos conceptos y fundamentos básicos que creo estaría bien que todos conozcamos.

Espero vuestro feedback, especialmente criticas constructivas, ya sean aquí o en los comentarios de la guia en Steam. En cuanto tenga un rato la actualizare y la pasare al formato para poder publicarla en el foro.

Salu2

Páginas: [1] 2 3 4
Políticas de privacidad | Cookies