Página 1 de 1

Crear usuario y contraseña en MD5

NotaPublicado: 2015-12-28 22:14 @968
por memrobles
Buenas noches.

¿Alguien me podría apoyar, por favor? Estoy tratando de crear un usuario y contraseña (en MD5) en una tabla de MySQL.

Crear.pl:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use DBI;
  2.  
  3. my $nombre = "test8";
  4. my $passwd = "123456";
  5. $passwd = unix_md5_crypt $passwd;
  6.  
  7. my $dsn = "DBI:mysql:database=basetest;host=127.0.0.1";
  8. my $dbh = DBI->connect($dsn, "usertest", "123456");
  9. my $sql = $dbh->prepare('INSERT INTO  users VALUES (?,?)');
  10. my $res = $dbh->selectcol_arrayref($sql, undef, $nombre, $passwd);
  11.  
  12. $res->execute() or die $DBI::errstr;
  13. $yes->finish();
  14.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Si crea el usuario
Sintáxis: [ Descargar ] [ Ocultar ]
Using sql Syntax Highlighting
  1. SELECT * FROM users;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
| test7    | $1$5QoNYyCe$G9Io8rhSbZ8m0x/zJDKlW/"
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


pero me sale este error:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Uncaught exception from user code:
        Statement has no result columns to bind (perhaps you need to call execute first) at /usr/lib/perl5/DBD/mysql.pm line 809.
        DBD::mysql::st::__ANON__('DBI::st=HASH(0x1278af0)', 1, 'SCALAR(0x12787c0)') called at /usr/lib/perl5/DBI.pm line 1685
        DBD::_::db::selectcol_arrayref('DBI::db=HASH(0xff3960)', 'DBI::st=HASH(0x12789b8)', undef, 'test8', '$1$nYODOWtt$2JKWqDnZNWbkvU4L9wHFT0') called at ./pass.pl line 17
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Y cuando quiero comparar si existe me da 0.

Verificar.pl
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use DBI;
  2.  
  3. my $nombre = "test8";
  4. my $passwd = "123456";
  5. $passwd =  unix_md5_crypt $passwd;
  6.  
  7.  
  8. my $dsn = "DBI:mysql:database=basetest;host=127.0.0.1";
  9. my $dbh = DBI->connect($dsn, "usertest", "123456");
  10. my $sql = $dbh->prepare('select count(*) from users where username = ? and password = ?');
  11. my $res = $dbh->selectcol_arrayref($sql, undef, $nombre, $passwd);
  12.  
  13. if ($res->[0] == 1) {
  14.     print "Existe\n";                    
  15. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ya lo tengo con PHP
Sintáxis: [ Descargar ] [ Ocultar ]
Using php Syntax Highlighting
  1. $sql = "SELECT * FROM users
  2.        WHERE username = "$user"
  3.        AND password = '".md5( $password )."'";
Coloreado en 0.019 segundos, usando GeSHi 1.0.8.4


Pero la verdad me gusta más Perl :D

Gracias y saludos.

Re: Crear usuario y contraseña en MD5

NotaPublicado: 2015-12-29 03:23 @182
por explorer
Estás mezclando las formas de obtener la consulta: o usas el prepare + execute, o usas el selectcol_arrayref.

Como estás haciendo un INSERT, lo normal es usar un prepare(), execute():

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $dsn = "DBI:mysql:database=basetest;host=127.0.0.1";
  2. my $dbh = DBI->connect($dsn, "usertest", "123456");
  3. my $sth = $dbh->prepare('INSERT INTO  users VALUES (?,?)');
  4. $sth->execute($nombre, $passwd) or die $DBI::errstr;
  5. print "Filas insertadas: $DBI::rows\n";
  6. $sth->finish();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4