elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Temas
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18
91  Programación / PHP / paginas incluidas no funcionan correctamente en: 28 Septiembre 2014, 05:20 am
Hola, estoy teniendo un molesto problema a la hora de incluir paginas en php. El problema que tengo es causado al poner el mismo include en dos paginas y una de las paginas es incluida en la otra.

Paso a explicarlo mejor:

Tengo un index.php (.htaccess redirecciona todo aqui)
Código
  1. include_once '/themes/default/views/layouts/main.php';
  2.  
  3. function showContent() {
  4. [...]
  5. }

/themes/default/views/layouts/main.php
Código
  1. include_once('/includes/functions.php'); //why this include doesn't work for login.php
  2.  
  3. // html and php code
  4.  
  5. showContent(); //will include login.php

y una de las paginas a incluir, pero ocurre con otras paginas con el mismo include y la misma funcion.
/views/site/login.php
Código
  1. <?php
  2. include_once('/includes/functions.php');
  3.  
  4. sec_session_start();
  5.  
  6. if (login_check($mysqli) == true) {
  7.    $logged = 'in';
  8. } else {
  9.    $logged = 'out';
  10. }
  11. ?>

Este es el error que da:
Citar
Notice: Undefined variable: mysqli in C:\xampp\htdocs\views\site\login.php on line 7

Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\includes\functions.php on line 151

La variable $mysqli esta creada en db_connect.php que esta incluido en functions.php y en un principio funciona perfectamente....

db_connect.php
Código
  1. include_once 'config.php';
  2. $mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);

Y el otro error tambien me lo ha dado muchas otras veces con varias funciones mysqli (como execute() o get_result()) y aun no lo he arreglado, simplemente han desaparecido y aparecido en disitintas paginas, al crear un prepared statement. Esto es lo que me ha podido decir un amigo respecto a este error:

Citar
You get the call to member function on non-object error, when you try to call a function in $this-> scope when the object hasn't been instantiated.

Entonces, ¿como hago eso de estanciar el objeto? if ($stmt = $mysqli->prepare("SQL"))

Lo curioso es que no da ningún error si quito el include de main.php, pero entonces tengo que comentar las funciones que llamo...

Si en lugar de include_once utilizo include en login.php me da el siguiente error:
Citar
Fatal error: Cannot redeclare sec_session_start() (previously declared in C:\xampp\htdocs\includes\functions.php:6) in C:\xampp\htdocs\includes\functions.php on line 26

Este es el codigo del error:
Código
  1. function sec_session_start() {   // Esta es la linea 6 de functions.php
  2.    $session_name = 'sec_session_id';   // Set a custom session name
  3.    $secure = SECURE;
  4.    // This stops javascript being able to access the session id.
  5.    $httponly = true;
  6.    // Forces sessions to only use cookies.
  7.    if (ini_set('session.use_only_cookies', 1) === FALSE) {
  8.        header("Location: /error?err=Could not initiate a safe session (ini_set)");
  9.        exit();
  10.    }
  11.    // Gets current cookies params.
  12.    $cookieParams = session_get_cookie_params();
  13.    session_set_cookie_params($cookieParams["lifetime"],
  14.        $cookieParams["path"],
  15.        $cookieParams["domain"],
  16.        $secure,
  17.        $httponly);
  18.    // Sets the session name to the one set above.
  19.    session_name($session_name);
  20.    session_start();            // Start the PHP session
  21.    session_regenerate_id();    // regenerated the session, delete the old one.
  22. }    // Esta es la linea 26 de functions.php

¿Alguna idea de como arreglar esto? ¡Llevo horas intentando arreglarlo pero no consigo nada!

Gracias!
92  Programación / Desarrollo Web / jscript function not defined but included en: 27 Septiembre 2014, 02:11 am
Hola, estoy teniendo problemas con unos botones javascript y al parecer se debe a las rutas y que los archivos no se ejecutan desde donde estan, si no desde otras paginas (son incluidas) y al parecer me esta dando problemas.

Citar
index.php <- main.php <- +showContent()+ %view%.php

Bien, es algo simple, tengo un index.php que incluye una pagina (main.php) que es la estructura de la web y esta a su vez incluye paginas "views" mediante una funcion (showContent()) creada en index.php y llamada en main.php, una de estas paginas "views" es login.php y es donde esta el form con el input.

Pero el problema es este, cuando le doy al boton login (o register que tampoco funciona) no pasa nada y en la consola del navegador me aparecen los siguientes errores:

Citar
ReferenceError: regformhash is not defined register:1
ReferenceError: formhash is not defined login:1

Esto quiere decir que los archivos .jscript no estan siendo incluidos... Y es extraño porque los css y php script si que funcionan, esos archivos si que son incluidos.

Las ruta estan todas bien, se incluyen desde la raiz (desde htdocs).

Pero lo más extraño de todo, es que cada link de navegacion que le doy, me sale otro error en la consola:

Citar
SyntaxError: invalid regular expression flag b forms.js:31

y esto es lo que hay en la linea 31:

Código
  1. // Check the username - regformhash()
  2.  
  3.    re = /^\w+$+/b; // esta es la linea 31

Ahora, ese error indica que si esta incluyendo los jscripts, pero que por alguna razón la funcion no se esta leyendo:

login.php
Código
  1. <form action="includes/process_login.php" method="post" name="login_form">
  2. Email: <input type="text" name="email" />
  3. Password: <input type="password"
  4. name="password"
  5. id="password"/>
  6. <input type="button"
  7.   value="Login"
  8.   onclick="formhash(this.form, this.form.password);" />
  9. </form>

Los scripts estan bien y no han sido modificados, porque antes de crear el sistema de includes dinamicos todo funcionaba perfectamente, se podian crear usuarios y loguearse.

Para que lo veais:

La primera función de forms.js (la otra es regfromhash)
Código
  1. function formhash(form, password) {
  2.    // Create a new element input, this will be our hashed password field.
  3.    var p = document.createElement("input");
  4.  
  5.    // Add the new element to our form.
  6.    form.appendChild(p);
  7.    p.name = "p";
  8.    p.type = "hidden";
  9.    p.value = hex_sha512(password.value);
  10.  
  11.    // Make sure the plaintext password doesn't get sent.
  12.    password.value = "";
  13.  
  14.    // Finally submit the form.
  15.    form.submit();
  16. }

El otro jscript es sha512.js que esta en la misma carpeta y se incluye con la misma ruta que form.js

Estoy teniendo otros problemas similares y al parecer los includes no se incluyen en los includes.... o algo asi, por ejemplo, en una pagina cualquiera quiero hacer una consulta a la db y funciona bien durante un tiempo, hasta que un dia necesito agregar un include o cambiarlo, entonces ya da error porque la conexion a la db no existe (que se hace en otro archivo). Entonces db_connect.php se incluye en functions.php y este se incluye en los demas archivos y con 1 solo include se incluyen varios archivos. index.php incluye functions.php incluye db_connect.php pero index.php no es capaz de incluir db_connect.php.... o lo incluye cuando le da la gana, es un lio  :huh:

¿Hay alguna manera de arreglar esto?

Gracias!

Edito: Solucionado, habia que quitar el ultimo + y b del jscript
93  Programación / PHP / crear enlaces seguros para las paginas php en: 24 Septiembre 2014, 13:16 pm
Hola, me gustaría saber cual es la manera mas segura de crear enlaces seguros para las paginas de mi sitio web.

Acaba de leer un pequeño tutorial donde aparece un codigo con el que se supone que no será facil hackear la web, pero es del año 2006 y tengo dudas por si ya no es tan seguro como lo era antes... Aqui esta el link: Safe Dynamic Includes

Tambien he visto otra manera: Safe Dynamic Includes, pero tampoco se si hay otras maneras mas seguras para crear los links de una pagina a otra.

Lo normal es las paginas suele ser

Código
  1. <a href="index.php?x=pagename">Link</a>

Pero al parecer cambiando la variable de sesion por otra, el link puede ser de otra manera:

Código
  1. $_GET['x']; -> $_SERVER['QUERY_STRING'];

Código
  1. <a href="index.php?pagename">Link</a>

¿Podriais confirmar que maneras son más seguras?

Gracias!
94  Programación / PHP / convertir o mostrar binary image de la base de datos en: 24 Septiembre 2014, 00:45 am
Hola, tengo que migrar una base de datos y al parecer las imagenes de perfil de los usuarios vienen dentro. No se que codificacion tienen, pero he mirado en el dump y todo apunta a que estan en hex:

http://pastebin.com/fauxgT3u

En el dump del sql aparece todo junto y en mayusculas. Todas las imagenes empiezan asi:

Código:
0x6C740000B61E0100424DB61E010000000000360000002800000080000000BF0000000100180000000000801E010000000000000000000000000000000000

Las imagenes fueron tomadas (con webcam) y guardadas en sqlite por una aplicacion de escritorio.

Código
  1. //test.php
  2.  
  3. //header('Content-Type: image/jpeg');
  4.  
  5. $hex = 'hex code';
  6.  
  7. $filename = 'image.jpg';
  8.  
  9. file_put_contents($filename, pack('H*', $hex));
  10.  

Estoy intentando mostrarlas en la nueva web o mas facil, sacarlas a archivo, pero no funciona nada de lo que intento, alomejor no es hexadecimal... ??

Gracias!
95  Programación / Programación General / leer sqlite, conectar a db y enviar consultas en: 22 Septiembre 2014, 16:18 pm
Hola, necesito de alguna manera conectar una aplicacion a una base de datos mysql pero que utiliza una base de datos sqli (file.mdb). La idea es que la aplicacion envie consultas a mysql.

¿Como podria hacer eso? ¿Que lenguaje de programación sería el más adecuado para esto?

Seguramente solo sea posible accediendo al archivo .mdb y sincronizando con mysql, en tal caso tambien seria necesario que la aplicacion haga lo contrario, sincronizar la db de mysql con el archivo sqlite.

¿Alguna idea para empezar?

Gracias!
96  Programación / Bases de Datos / cambiar conexion sqlite a mysql en: 22 Septiembre 2014, 13:23 pm
Hola, no se si este es el apartado correcto, pero alla va: Tengo una aplicacion que guarda datos en un archivo sqlite (file.mdb) y me gustaría saber si hay alguna manera de redireccionar para que guarde en una base de datos en un servidor mysql.

¿Es esto posible?

Gracias.
97  Programación / PHP / funcion no inserta datos en la db en: 22 Septiembre 2014, 00:53 am
Hola, estoy intentando añadir datos a un registro de usuarios, pero no funciona...

functions.php
Código
  1. //ip function
  2. function get_ip_address() {
  3. if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
  4. $ip = $_SERVER['HTTP_CLIENT_IP'];
  5. } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  6. $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  7. } else {
  8. $ip = $_SERVER['REMOTE_ADDR'];
  9. }
  10. }
  11.  
Código
  1. //time function
  2. function get_current_time() {
  3. $time = date('d/m/Y H:i:s', time());
  4. }
  5.  
Código
  1. //record attempt or failed login
  2. $now = time();
  3. $login_time = get_current_time();
  4. $access_address = get_ip_address();
  5.  
  6. $mysqli->query("INSERT INTO login_attempts(user_id, used_password, time, login_time, access_address)
  7. VALUES ('$user_id', '$used_password', '$now', '$login_time', '$access_address')");
  8.  

Si antes de que se encripte la contraseña creo una variable que contenga $password tal y como viene en texto plano, podre usar esa variable despues para guardarla en la db y seguira conteniendo $password sin cifrar?

Eso es lo que quiero hacer para guardar cada login fallido, pero no funciona si incluyo el $login_time y el $access_address, si los quito si que inserta.

register.inc.php
Código
  1. // Insert the new user into the database
  2. $reg_time = get_current_time();
  3. $reg_ip = get_ip_address();
  4. if ($insert_stmt = $mysqli->prepare("INSERT INTO members (username, email, password, salt, reg_time, reg_ip) VALUES (?, ?, ?, ?, ?, ?)")) {
  5. $insert_stmt->bind_param('ssssss', $username, $email, $password, $random_salt, $reg_time, $reg_ip);
  6. // Execute the prepared query.
  7. if (! $insert_stmt->execute()) {
  8. header('Location: ../error.php?err=Registration failure: Contacte al administrador.');
  9. }
  10. }
  11.  

Eso tampoco funciona y es lo que quiero que se guarde en la db al crear el usuario. Y pasa lo mismo que antes, si quito $reg_time y $reg_ip si que funciona... ¿hay algo mal con esas dos variables o funciones?

He comprobado todo lo que se, la base de datos esta bien, todas las columnas existen, pero no inserta nada en la db... ni aparece ningun error. Cuando creo una cuenta me redirecciona a la pagina "Cuenta creada" como si todo hubiera salido bien, pero en la tabla members no hay nada creado...

Es posible que este mal la llamada a esas dos funciones y por eso no inserta nada, pero antes de crear esas dos funciones lo probe poniendo directamente el codigo y tampoco funcionaba. Es algo extraño la verdad.

Gracias.
98  Programación / Desarrollo Web / css class no funciona con float left en: 21 Septiembre 2014, 20:55 pm
Hola, tengo una clase en css que muestra un fondo para mostrar el contenido dentro, se adapta el contenido que haya.

Código
  1. .boxy {
  2.    background: none repeat scroll 0 0 #F7F7F9;
  3.    border: 2px solid #FFFFFF;
  4.    border-radius: 7px 7px 7px 7px;
  5.    box-shadow: 0 0 0 1px rgba(0, 0, 2, 0.1), 0 1px 0 rgba(0, 0, 2, 0.15), 0 1px 1px rgba(0, 0, 2, 0.1);
  6.    padding: 13px;
  7.    text-shadow: 0 1px 0 #FDFDFF;
  8.    margin: 10px;
  9. }

Pero no funciona cuando pongo float left para un div que hay dentro:

Código
  1. <div class="menu">
  2. <div class="secondmenu">
  3. <ul>
  4. <li><a>'.$row['id'].'</a></li>
  5. <li><a href="amigo.php?id='.$row['id'].'">'.$row['nombre'].'</a></li>
  6. <li><a>'.$row['status'].'</a></li>
  7. <li><a>'.$row['bonus'].'</a></li>
  8. </ul>
  9. </div>
  10. </div>
  11. ';
  12.  

Eso es una lista, y cada casilla debe ir de izquierda a derecha, por eso la clase secondmenu tiene float: left;

El div con la clase boxy envuelve todo el codigo php, pero no creo que eso sea un problema, ya que si quito el float left el fondo se alarga y cubre todas las filas de la lista, que estan todas de arriba a abajo.

¿Sabeis alguna manera de arreglar esto?

Gracias.
99  Programación / PHP / obtener id login de session en: 20 Septiembre 2014, 18:50 pm
Hola, necesito obtener el user_id del login actual para usarlo en una pagina.

Esta es la función que utilizo para el login:

Código
  1. function login($email, $password, $mysqli) {
  2.    // Using prepared statements means that SQL injection is not possible.
  3.    if ($stmt = $mysqli->prepare("SELECT id, username, password, salt
  4.        FROM members
  5.       WHERE email = ?
  6.        LIMIT 1")) {
  7.        $stmt->bind_param('s', $email);  // Bind "$email" to parameter.
  8.        $stmt->execute();    // Execute the prepared query.
  9.        $stmt->store_result();
  10.  
  11.        // get variables from result.
  12.        $stmt->bind_result($user_id, $username, $db_password, $salt);
  13.        $stmt->fetch();
  14.  
  15.        // hash the password with the unique salt.
  16.        $password = hash('sha512', $password . $salt);
  17.        if ($stmt->num_rows == 1) {
  18.            // If the user exists we check if the account is locked
  19.            // from too many login attempts
  20.  
  21.            if (checkbrute($user_id, $mysqli) == true) {
  22.                // Account is locked
  23.                // Send an email to user saying their account is locked
  24.                return false;
  25.            } else {
  26.                // Check if the password in the database matches
  27.                // the password the user submitted.
  28.                if ($db_password == $password) {
  29.                    // Password is correct!
  30.                    // Get the user-agent string of the user.
  31.                    $user_browser = $_SERVER['HTTP_USER_AGENT'];
  32.                    // XSS protection as we might print this value
  33.                    $user_id = preg_replace("/[^0-9]+/", "", $user_id);
  34.                    $_SESSION['user_id'] = $user_id;
  35.                    // XSS protection as we might print this value
  36.                    $username = preg_replace("/[^a-zA-Z0-9_\-]+/",
  37.                                                                "",
  38.                                                                $username);
  39.                    $_SESSION['username'] = $username;
  40.                    $_SESSION['login_string'] = hash('sha512',
  41.                              $password . $user_browser);
  42.                    // Login successful.
  43.                    return true;
  44.                } else {
  45.                    // Password is not correct
  46.                    // We record this attempt in the database
  47.                    $now = time();
  48.                    $mysqli->query("INSERT INTO login_attempts(user_id, time)
  49.                                    VALUES ('$user_id', '$now')");
  50.                    return false;
  51.                }
  52.            }
  53.        } else {
  54.            // No user exists.
  55.            return false;
  56.        }
  57.    }
  58. }

¿Como podria usar el id en otra pagina?

Gracias!
100  Programación / PHP / enviar una id de mysql al hacer click en: 19 Septiembre 2014, 22:32 pm
Hola, tengo una lista con usuarios de una base de datos, pero me gustaría que al hacer click encima del nombre se guardara la id de ese usuario para usarla en otra pagina donde se muestra el perfil completo.

Esta es la lista:
Código
  1. $query = sprintf("SELECT rc_usuario.*, rc_referidos.*
  2. FROM rc_referidos
  3. INNER JOIN rc_usuario ON rc_usuario.idUsuario = rc_referidos.idReferido
  4. WHERE rc_referidos.idRedComercio2 = '$connectedUserID'",
  5. mysql_real_escape_string($idRedComercio),
  6. mysql_real_escape_string($idReferido));
  7.  
  8. $data = mysql_query($query);
  9.  
  10. while ($op = mysql_fetch_assoc($data)) {
  11. $op['id'];
  12. $op['nombre'];
  13. $op['apellidos'];
  14. $op['status'];
  15.  
  16. echo'
  17. <div class="menu">
  18. <div class="secondmenu">
  19. <ul>
  20. <li><a>'.$op['id'].'</a></li>
  21. <li><a href="index.php?r=usuario/amigo">'.$op['nombre'].'</a></li>
  22. <li><a>'.$op['apellidos'].'</a></li>
  23. <li><a>'.$op['status'].'</a></li>
  24. </ul>&nbsp;
  25. </div>
  26. </div>
  27. ';
  28. echo'&nbsp;';
  29. }
  30.  

Es algo complicado, ya que se muestran muchos usuarios y realmente esto ya es nuevo para mi.

Pero supongo que en el nuevo archivo se tendrá que guardar la id en una variable para usarla...

Gracias!
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines