私は、ユーザー登録クラスを定義しようとしていると、これは今このクエリで何が問題になっていますか?
<?php
///// SE SUPONE QUE AQUI EL USUARIO YA HA INTRODUCIDO SUS DATOS DE REGISTRO
/* Conectando la Base de Datos */
include("includes/basedatos.php");
require_once("includes/funciones.php");
class registro_usuarios
{
var $pass;
var $email;
var $nombre;
public function tratandovariables()
{
/* Eliminando Caracteres Especiales */
$password = htmlspecialchars($_POST['pass']);
$mail = htmlspecialchars(strip_tags($_POST['mail']));
$nombre = htmlspecialchars(strip_tags($_POST['nombre']));
if (preg_match("/^[a-zA-Z0-9\-_]{3,20}$/", $nombre))
{
/* Asignando Valor */
$this->pass = md5($password);
$this->email = $mail;
$this->nombre = $nombre;
}
else
{
echo "El nombre de usuario no es válido<br>";
exit;
}
}
public function register()
{
$this->tratandovariables();
/* Comprobando si existe el usuario */
$check = "SELECT * FROM usuarios WHERE alias = '$this->nombre'";
$qry = mysql_query($check);
/* La compracion */
if (mysql_num_rows($qry))
{
echo "Lo sentimos, el nombre de usuario ya esta registrado.<br />";
mysql_free_result($qry);
return false;
} else
{
$insert = "INSERT INTO usuarios (alias, pass, email, fid, fechar, ultima, img_src, reputacion) VALUES ('".$this->nombre."','".$this->pass."','".$this->email."','-1', 'NOW()', 'NOW()',' ', '0')";
$qry = mysql_query($insert);
if(mysql_affected_rows())
{
echo "El Usuario $this->nombre se Registro Correctamente";
return true;
}
else
{
echo "Error Ingresando datos";
return false;
}
return false;
}
}
}
?>
そして、それは私はオールウェイズなしでフォームを使用して簡単なVARCHARに入る(このエラーを与えてることだ問題のために私が持っている機能です変な文字):
警告:は、mysql_fetch_array():指定された引数は、ライン52 エルUsuarioトニSE Registroに/home/piscolab/public_html/keepyourlinks.com/Recetas/registro.phpに有効なMySQLの結果リソースではありません補正部
- $ this-> nombreにはnull値がありません(チェックされています)
- データベースは空ですので、結果は決してありません。
- スクリプトが実行され、そのユーザーが登録されているように見せかけても、名前が表示されてしまうという問題があります。データベース上の更新はありません。
私はちょうど問題を見ることができません..できますか?
ありがとうございました!
registro.phpから52行目を転記できますか?ここにmysql_fetch_arrayはありません。実際には、51行目に、クエリを実行します。正確なクエリを表示します。また、mysql_query()関数の後ろに "die(mysql_error())"を追加するだけで、クエリにフォールト(悪いテーブル名など)があるかどうかを調べることもできます。 – Tjirp
うわー、あなたは[SQL Injection](http://en.wikipedia.org/wiki/SQL_injection)の攻撃に広く関わっていることに気づくべきでしょうか? (mysql_real_escape_stringを介して)入力をエスケープするか、パラメータ化されたクエリを使用してください(より良い選択肢)... – ircmaxell
MySQLは英語のみを話します。 cheap_humor> – mattbasta