Gracias Cluster por responder, ya creia que nadie me responderia...
Veras la cuestion es que tengo que trabajar con varias cosas a la vez.
A ver si me se explicar mejor:
Lo que yo tengo es un formulario en mi flash para registrar una serie de datos introducidos en campos de texto.
Aqui esta el php que uso para enviar estas variables a una DB MySQL (del mismo dominio que la web):
registrar.php
Código PHP:
<?php
include('conexion.php');
$link = Conectarse();
function quitar($mensaje)
{
$mensaje = str_replace("<","<",$mensaje);
$mensaje = str_replace(">",">",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',""",$mensaje);
$mensaje = str_replace("\\\\","\",$mensaje);
return $mensaje;
}
function comprobar_email($email){
$mail_correcto = 0;
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){
if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) {
if (substr_count($email,".")>= 1){
$term_dom = substr(strrchr ($email, '.'),1);
if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
$antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
$caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
if ($caracter_ult != "@" && $caracter_ult != "."){
$mail_correcto = 1;
}
}
}
}
}
if ($mail_correcto)
return 1;
else
return 0;
}
$comp_email = quitar($HTTP_POST_VARS["mailL"]);
$i = comprobar_email($comp_email);
if ($i != 0)
{
$sql = "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["usuL"])."'";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result))
{
echo "&estatus=ocupado&";
}
else
{
$sql = "INSERT INTO usuarios (acc, nick, pass, email, nombre, ciudad, edaddia, edadmes, edadano, votos, NIVbool, EKSbool, REPbool, VOTbool, MAILbool, NIVrang, BIMG_x, BIMG_y, INSL ) VALUES (";
$sql .= "'".quitar($HTTP_POST_VARS["accL"])."'";
/* aqui van todos los otros [...]*/
$sql .= ",'".quitar($HTTP_POST_VARS["INSL"])."";
$sql .= ")";
mysql_query($sql);
echo "&estatus=ok&";
}
mysql_free_result($result);
mysql_close();
}
else
{
echo "&estatus=nomail&";
}
?>
La gran mayoria del script lo hize cogiendo cosas de aqui y de alla, o sea que no estoy muy familiarizado con el php aun =(
Una vez se han registrado en la BD mi php para poder logear hace lo siguiente:
login.php
Código PHP:
<?php
include('conexion.php');
$link = Conectarse();
if(isset($_POST["acc"]) && isset($_POST["pass"]) && isset($_POST["char"])) {
$accN = $_POST["acc"];
$passN = $_POST["pass"];
$nickN = $_POST["char"];
echo "&estatus=$passN&";
$result_pass = mysql_query("SELECT pass FROM usuarios WHERE acc='$accN'");
if($row_pass = mysql_fetch_array($result_pass)) {
if($row_pass["pass"] == $passN) {
//las contraseñas coinciden...
$result_char = mysql_query("SELECT nick FROM usuarios WHERE acc='$accN'");
if($row_char = mysql_fetch_array($result_char)) {
if($row_char["nick"] == $nickN) {
echo "&estatus=ok&"; //el personaje esta registrado y la contraseña es correcta
/* aqui estoy intentando crear variables de sesion para que el usuario no tenga que loguearse cada vez que entre... */
$_SESSION['cuenta']=$accN;
$_SESSION['password']=$passN;
$_SESSION['personaje']=$nickN;
} else {
echo "&estatus=pj_mal&"; //nombre del personaje registrado incorrecto
}
} else {
echo "&estatus=nopj&"; //el personaje ingresado no existe en esta cuenta
}
mysql_free_result($result_char);
} else {
echo "&estatus=pass_mal&"; //contraseña incorrecta
}
} else {
echo "&estatus=noacc&"; //La cuenta ingresada no esta registrada
}
mysql_free_result($result_pass);
}
mysql_close();
?>
En otro tema de este mismo foro ya pregunte porque solo me considera el primer personaje que encuentra ya que si se da el caso que para una misma cuenta hay mas de un personaje, solo reconoce el de id mas baja. Creo que no estoy haciendo las cosas como deberia... necesito saber mas "comandos" para sql ya que con lo poco que se intento "ir tirando".
Luego lo que yo queria conseguir es un php (top.php) que mande todas las variables de la BD MySQL al flash de manera ordenada. Lo de que hay que conectar a otra DB MSSQL tiene su historia porque esta BD esta en un host dedicado (accedo a el mediante:
http://hd-t2472cn.privatedns.com) al juego este... asi que lo que hago es colocar el php en ese host y luego accedo a el directamente (ya que con un php colocado en el host de la web y que acceda a la BD MS SQL de este server privado creo que no es posible...
Por poner un ejemplo, ya tengo hecho un php que lo que hace es devolver el nivel del personaje que se consulta. Lo hice para hacer un login de la pagina flash que pide un nivel minimo para entrar...
check.php (alojado en el servidor dedicado)
Código PHP:
<?
error_reporting (0);
$dbhost = "la_ip_del_server";
$dbuser = "el_user";
$dbpasswd = "******";
$msconnect=mssql_connect($dbhost,$dbuser,$dbpasswd);
$selected=mssql_select_db('ws1', $msconnect);
$charname = $_POST["char"]; /*esta variable viene directa del flash, pero podria venir del php que quiero armar para hacer el top players... */
$consulta = sprintf("SELECT * FROM CHARACTER_T WHERE cCharName LIKE '%s%%'", $charname);
$result=mssql_query($consulta);
while($row=mssql_fetch_array($result))
echo "&estatus=$row[sLevel]&"; /*esto va para el flash, pero tendria que volver a top.php para manejar los datos. */
?>
Todo esto para mi, sin haber hecho nunca nada de php ni sql me parece un poco complicado pero se que con esfuerzo todo se aprende igual que aprendi ActionScript. La manera de interactuar entre php y flash la tengo bastante clara. Siempre uso:
Código:
check_lv = new LoadVars();
checked_lv = new LoadVars();
check_lv.char = character;
check_lv.sendAndLoad("http://hd-t2472cn.privatedns.com/verificar/check.php", checked_lv, "POST");
[...]
Y los resultados que obtengo son de la clase: &estatus=ok&, &estatus=pass_mal& y cosas asi...
Espero que me sepan ayudar ya que los que venimos de flash y AS no sabemos muchas veces como preguntar las cosas aqui...
Mil gracias amigos
ArgoN