Wysyłanie formularza metodą POST - PROBLEM!!

0

Zgodnie z kompendium programisty na tej stronie mam taki kod:

var
  StreamIn, StreamOut : TStringStream;
  informacje: String;
begin
  informacje:'test';
// utworzenie strumieni
  HTTP.Host := 'strone.cba.pl';
  StreamIn := TStringStream.Create('');
  StreamOut := TStringStream.Create('');
  try
    StreamIn.WriteString(Format('text=%s&machine=%s', [memo.Text, informacje]));
    HTTP.Post('http://strona.cba.pl/update.php',StreamIn, StreamOut); // wysłanie zawartości do skryptu
  // wyświetlenie odpowiedzi, jaka została zwrócona przez skrypt
    MessageBox(Handle, PChar(StreamOut.DataString), 'Wiadomość wysłana :?)', MB_ICONINFORMATION);
  finally
   //zwolnienie zasobów
   StreamIn.Free;
    StreamOut.Free;
    
  end;

ma to mi wysyłać dane typu plain metodą POST za pomocą TIdHTTP

plik który ma to odbierać wygląda tak:

<?
//Configs

$decode='windows-1250';

//Connet SQL

$db_host='mysql.cba.pl';
$db_user='proqix';
$db_pass='haslo';
$db_name='nazwabazy';



mysql_connect($db_host, $db_user, $db_pass) or die('Błąd Połączenia ze SQL');
mysql_select_db($db_name) or die('Błąd wybierania bazy danych');

$text=$_POST['text'];
$machine=$_POST['machine'];

echo'
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
<head>
  <meta http-equiv="Content-type" content="text/html; charset=win-1250">
</head>
<body>
';
 $date=date("Y-m-d");
 
  $query = mysql_query("SELECT * FROM db_msg_user;");
  $ids = mysql_num_rows($query);
    // dodajemy rekord do bazy
$text = stripslashes($text);
$machine = stripslashes($machine);
    $ins = @mysql_query("INSERT INTO db_msg_user SET id='".$ids."', text='".$text."', data='".$date."', machine='".$machine."'"); 
    
  if($ins) echo 'Wiadomość wysłana poprawnie o ID: '.$ids.'<br />Danych: <br />'.$Text.'<br />Dacie: '.$date.'<br /> z maszyny o naazwie: '.$machine.'';
    else echo 'Błąd, nie udało się wysłać wiadomości o ID: '.$ids.'<br />Danych: <br />'.$Text.'<br />Dacie: '.$date.'<br /> z maszyny o naazwie: '.$machine.'';
    
 
echo'</body></html>';

?>

Nie wiem czemu to mi nie działa :-[ :-[ :-[

0

a nie brakło ci przypadkiem "?" między dokumentem, a parametrami? :)

0

Przed wysłaniem (Post) musisz ustawić nagłowek Content-Type czyli:

HTTP.Request.ContentType:= 'application/x-www-form-urlencoded';

Tak w Indy 10 a w 9 to nie pamiętam ale chyba bez Request do tego chyba dojdziesz sam.
No i w PHP (to tylko sugestia) jak pobierasz dane $_GET lub $_POSTto proponuję w taki sposób:

$text = isset($_POST['text']) ? $_POST['text'] : '';
$machine = isset($_POST['machine']) ? $_POST['machine'] : '';

(lub if-em) bo inaczej PHPw zależności od wersji może się rzucać jakoś tak: "Undefined variable nazwa_zmiennej".
Tak w ogóle tam gdzie nie trzeba po co HTML wyrzucać echem mozna przecież kończyć php i rozpoczynać na nowo czyli:

<?php
//tu kod php
?>
<!-- tu kod html -->
<?php
//tu znowu kod php
?>

1 użytkowników online, w tym zalogowanych: 0, gości: 1