PDA

Ver la Versión Completa : Registro online


harpo
19-04-2007, 13:01:57
Buenas gente :)

Ando un poco perdido sobre cómo hacer un registro de software online.

A ver, me explico. Tengo una aplicación hecha en delphi que, hasta ahora, es distribuida con una clave de activación para pasar de la versión demo a la versión completamente funcional. Esta aplicación está constantemente siendo actualizada y distribuida a través de la web gratuitamente y sin prácticamente control alguno. Pues bien, a partir de ahora me piden que cobre por dichas actualizaciones y que, por tanto, proteja el modo de distribución de la misma y lleve un registro de dicha distribución.

La idea que tengo para proteger el software y mantener a su vez una base de datos con todos los clientes es la siguiente.

- En primer lugar, cambiar la clave de activación que se distribuye junto al software por un Número de Usuario (UID).

- Generar un Código de Registro a partir del UID y el número de serie del hardware que distribuyo con el programa.

- Y ahora viene el tema, rellenar un formulario bien desde la aplicación delphi (preferentemente) o bien desde una web (para aquellos que no tengan conexión inmediata), con el código de registro para recibir automáticamente el Código de Activación.

Bueno, aunque no me explico muy bien, la idea es hacer un registro online de los clientes.
Lo que no sé cómo hacer es la parte del envío del formulario y la recepción del código de Activación. No tengo idea de las posibilidades q tengo para hacerlo.

Tengo una base de datos MySQL en el servidor que es donde debo almacenar los datos de los clientes y un formulario php para hacerlo. Cómo puedo enviar los datos a esa base de datos desde delphi?? Y recibir el código de activación??

He estado leyendo por encima en el foro sobre el componente TWebBrowser. Con este componente, podría acceder directamente al formulario php desde delphi??

Bueno, cualquier ayuda es bienvenida. Muchas gracias ;)

dec
19-04-2007, 13:18:09
Hola,

Puedes usar un "TWebBrowser" o también puedes utilizar un componente como "TIdHttp", con el fin de hacer una llamada "HTTP GET" o acaso "HTTP POST" al Servidor desde Delphi, precisamente al Script PHP que te interesa. Mira estos trucos:

- HTTP GET Y HTTP POST utilizando WinInet (http://www.clubdelphi.com/trucos/index.php?id=374&scroll=0&scrollb=0)

- Realizar un "Post HTTP" con la clase "TIdHttp" de Indy (http://www.clubdelphi.com/trucos/index.php?id=346&scroll=0&scrollb=171)

harpo
19-04-2007, 13:22:39
Ok :) Muchas gracias. Probaré y ya te cuento.

harpo
20-04-2007, 18:32:01
Buenas :)

He probado con el segundo método y no en principio funcionó, pero misteriosamente ha dejado de hacerlo y no consigo ponerlo de nuevo en marcha.

Tengo este codigo php
<?PHP

if (isset($_POST['send']))
{
$dbhost="localhost";
$dbusuario="root";
$dbpassword="h0o";
$db="ultra";
$conexion = mysql_connect($dbhost, $dbusuario, $dbpassword);
mysql_select_db($db, $conexion);
$result=mysql_query('INSERT INTO `customers` (`UID`, `SERIALNUM`, `KEY`) VALUES (\'c\', \'c\', \''.$_POST['Key'].'\');',$conexion);
mysql_close($conexion);


echo "Done";
}


?>
Que funciona desde el navegador. Y este codigo delphi
procedure TForm1.Button1Click(Sender: TObject);
var
idHttp: TIdHTTP;
datosPost:TIdMultiPartFormDataStream;
params:TStrings;
begin
datosPost := TIdMultiPartFormDataStream.Create;
params:=TStringList.Create;
try
datosPost.AddFormField('Key',Edit3.Text);
params.Add('Key='+Edit3.Text);

idHttp := TIdHTTP.Create(Self);
try
Memo1.Text:=idHttp.post('http://localhost/registro/sendform.php',params);

finally
idHttp.Free;
end;
finally
datosPost.Free;
end;
end;

En Memo1.Text no sale nada :( y en la base de datos menos.

harpo
25-04-2007, 18:53:47
El silencio me da miedo ... :confused: