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ú

Mensajes - gAb1

#491
Gracias! Si que funciona, pero poniendolo fuera del while para que no haga un espacio entre filas.

Otra duda, para cambiar el tamaño del primer y ultimo <li> uso:

Código (css) [Seleccionar]
.menu li:first-child > a {width: 8%;}
.menu li:last-child > a {width: 16%;}


¿Pero para cambiar los otros? Necesito ajustar el ancho para el contenido que va a tener cada uno.

Gracias.

Edito: dejare de anidar en css y creare clases para cada <li> :)
#492
PHP / Re: funcion no inserta datos en la db
22 Septiembre 2014, 05:56 AM
Si hay algun error, yo no veo nada, en la pagina login.php me logueo pero no me da ningun error, ni aparece nada... Las sentencias siguen sin ejecutarse en la base de datos...

Desde otra pagina compruebo las variables:

Código (html5) [Seleccionar]
<p>The time is: <?php get_current_time() ?></p>
<p>My IP Address: <?php get_ip_address() ?></p>


Y funciona solo si pongo echo en las funciones:

Código (php) [Seleccionar]
function get_ip_address() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
echo $ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
echo $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
echo $ip = $_SERVER['REMOTE_ADDR'];
}
}

function get_current_time() {
echo $time = date('d/m/Y H:i:s', time());
}


Edito: al parecer el usuario se crea, pero no guarda en la db estas dos ultimas variables. Lo he probado dejando echo en las funciones y sin echo, solo se guarda el nombre email y contraseña, ni la hora ni la ip...

Edito2: Solucionado era problema de las funciones y del length de la columna.

Sobre las funciones, esta es la solucion:
Código (php) [Seleccionar]
function get_current_time() {
return date('d/m/Y H:i:s', time());
}
#493
PHP / Re: funcion no inserta datos en la db
22 Septiembre 2014, 05:21 AM
Si, despues de varios if, ¿pero donde se mostraria ese echo? ¿en que pagina?

Esta es la función entera:
Código (php) [Seleccionar]
function login($email, $password, $mysqli) {
// Store password for the attempt record
$used_password = $password;

   // Using prepared statements means that SQL injection is not possible.
   if ($stmt = $mysqli->prepare("SELECT id, username, password, salt
       FROM members
WHERE email = ?
       LIMIT 1")) {
       $stmt->bind_param('s', $email);  // Bind "$email" to parameter.
       $stmt->execute();    // Execute the prepared query.
       $stmt->store_result();

       // get variables from result.
       $stmt->bind_result($user_id, $username, $db_password, $salt);
       $stmt->fetch();

       // hash the password with the unique salt.
       $password = hash('sha512', $password . $salt);
       if ($stmt->num_rows == 1) {
           // If the user exists we check if the account is locked
           // from too many login attempts

           if (checkbrute($user_id, $mysqli) == true) {
               // Account is locked
               // Send an email to user saying their account is locked
               return false;
           } else {
               // Check if the password in the database matches
               // the password the user submitted.
               if ($db_password == $password) {
                   // Password is correct!
                   // Get the user-agent string of the user.
                   $user_browser = $_SERVER['HTTP_USER_AGENT'];
                   // XSS protection as we might print this value
                   $user_id = preg_replace("/[^0-9]+/", "", $user_id);
                   $_SESSION['user_id'] = $user_id;
                   // XSS protection as we might print this value
                   $username = preg_replace("/[^a-zA-Z0-9_\-]+/",
                                                               "",
                                                               $username);
                   $_SESSION['username'] = $username;
                   $_SESSION['login_string'] = hash('sha512',
                             $password . $user_browser);
                   // Login successful.
$ip = get_ip_address();
if ($mysqli->query("INSERT INTO members(last_ip)
                                   VALUES ('$ip')"));
                   return true;
               } else {
                   // Password is not correct
                   // We record this attempt in the database
$now = time();
$time = get_current_time();
$ip = get_ip_address();
                   if ($mysqli->query("INSERT INTO login_attempts(user_id, password_used, time, login_time, access_address)
                                   VALUES ('$user_id', '$used_password', '$now', '$time', '$ip')"));
                   return false;
               }
           }
       } else {
           // No user exists.
           return false;
       }
    echo $mysqli->error;
   }
}
#494
PHP / Re: funcion no inserta datos en la db
22 Septiembre 2014, 04:50 AM
Si, es mysqli, pero no muestra ningun error. Y el log de mysql no muestra nada desde hace 2 dias que se encendio el servidor...

No será problema de:

Código (php) [Seleccionar]
$login_time = get_current_time();
$access_address = get_ip_address();


¿esas variables obtienen el valor de las variables que hay en esas funciones?
#495
PHP / Re: funcion no inserta datos en la db
22 Septiembre 2014, 04:09 AM
mysql o mysqli?? no me da ningun error cuando se ejecutan las sentencias...
#496
PHP / funcion no inserta datos en la db
22 Septiembre 2014, 00:53 AM
Hola, estoy intentando añadir datos a un registro de usuarios, pero no funciona...

functions.php
Código (php) [Seleccionar]
//ip function
function get_ip_address() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
}

Código (php) [Seleccionar]
//time function
function get_current_time() {
$time = date('d/m/Y H:i:s', time());
}

Código (php) [Seleccionar]
//record attempt or failed login
$now = time();
$login_time = get_current_time();
$access_address = get_ip_address();

$mysqli->query("INSERT INTO login_attempts(user_id, used_password, time, login_time, access_address)
VALUES ('$user_id', '$used_password', '$now', '$login_time', '$access_address')");


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 (php) [Seleccionar]
// Insert the new user into the database
$reg_time = get_current_time();
$reg_ip = get_ip_address();
if ($insert_stmt = $mysqli->prepare("INSERT INTO members (username, email, password, salt, reg_time, reg_ip) VALUES (?, ?, ?, ?, ?, ?)")) {
$insert_stmt->bind_param('ssssss', $username, $email, $password, $random_salt, $reg_time, $reg_ip);
// Execute the prepared query.
if (! $insert_stmt->execute()) {
header('Location: ../error.php?err=Registration failure: Contacte al administrador.');
}
}


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.
#497
Desarrollo Web / css class no funciona con float left
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 (css) [Seleccionar]
.boxy {
    background: none repeat scroll 0 0 #F7F7F9;
    border: 2px solid #FFFFFF;
    border-radius: 7px 7px 7px 7px;
    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);
    padding: 13px;
    text-shadow: 0 1px 0 #FDFDFF;
    margin: 10px;
}


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

Código (html5) [Seleccionar]
<div class="menu">
<div class="secondmenu">
<ul>
<li><a>'.$row['id'].'</a></li>
<li><a href="amigo.php?id='.$row['id'].'">'.$row['nombre'].'</a></li>
<li><a>'.$row['status'].'</a></li>
<li><a>'.$row['bonus'].'</a></li>
</ul>
</div>
</div>
';


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.
#498
PHP / Re: obtener id login de session
20 Septiembre 2014, 23:54 PM
Muchas gracias ahora funciona todo perfectamente.
#499
PHP / Re: obtener id login de session
20 Septiembre 2014, 21:03 PM
CitarFatal error: Cannot use object of type mysqli_stmt as array in C:\xampp\htdocs\referral.php on line 45

Por usar:

Código (php) [Seleccionar]
$stmt['idUsuario'];

¿Cual es la forma correcta? ¿Y para imprimirlos entre etiquetas html?

Código (php) [Seleccionar]
echo'<li><a>'.$stmt['idUsuario'].'</a></li>';

Gracias.
#500
PHP / Re: obtener id login de session
20 Septiembre 2014, 20:10 PM
Arreglado, gracias. sec_session_start es una funcion de functions.php

Ahora me da un error que antes no me daba...

CitarFatal error: Call to a member function execute() on a non-object in C:\xampp\htdocs\referral.php on line 22

la linea 22 es precisamente:

Código (php) [Seleccionar]
$stmt->execute();