Witam,
Mój problem nie dotyczy php, ale nie znalazłem lepszego forum.
Mam kilkunastoletnią stronkę, która działa na apache na linux'ie. Przenosze ją na windows server i przyznam, że troche jak dziecko we mgle się w tym wszystkim poruszam.
Stronka wykorzystuje skrypty cgi. Wszystko w sumie udało się pochytać, ale nie działa jak powinno.
Używam apache 2.2.11 z php 5.2.9 na windows 2003 SBS.
Zainstalowałem do tego ActivePerl 5.14.2 a w nim doinstalowałem pakiety m.in.: DBI, DBD-ODBC.
W windowsie mam skonfigurowane połaczenie ODBC z bazą Sybase.

Mam stornkę logowania, która do skryptu werifikacja.cgi przekazuje usera i password.
Parametry zapisuje do zmiennych i do tej pory jest ok. Potem łącze się z bazą i wyrzucam id firmy dla zadanego usera i weryfikuję jego hasło. I tu pojawia się problem.
Na bazie mam user'a: test123 z password: test123
Skrypt łączy się z bazą, wykonuje zapytanie, ale z jakiegoś powodu zwrócone hasło nie zgada się z przekazanym do zmiennej.
Wyświetliłem sobie zwracane przez select dane i okazało się, że po drodze obcieło mi je do dwóch pierwszych znaków.
Czyli zapytanie raczej wykonało się ok, ale zam iast zwrócić do porównania hasło "test123" dostaje "te"

  1.  
  2.  
  3. #!C:\perl\bin\perl.exe -w
  4. print "Content-type: text/html\n\n";
  5. use DBI;
  6.  
  7. my $server = "moj_serwer";
  8. my $login = "mojlogin";
  9. my $haslo = "mojehaslo";
  10.  
  11. my $Error = 0;
  12. my $ErrorDBI = "";
  13.  
  14. #eval { DBI->trace(4) };
  15.  
  16. #if ($@)
  17. # {
  18. # $ErrorDBI = $@;
  19. # $Error = 6;
  20. # }
  21.  
  22.  
  23.  
  24. use CGI;
  25. $cgi = new CGI;
  26. $user_name = $cgi->param("user_name");
  27. $password = $cgi->param("password");
  28. use CGI::Carp qw (fatalsToBrowser);
  29.  
  30.  
  31. print "<html>";
  32. print "<head>\n";
  33. print "<meta http-equiv='Content-Type' content='text/html; charset=windows-1250'>";
  34. print "<meta http-equiv='EXPIRES' content='0'>";
  35. print "</head>\n";
  36.  
  37.  
  38. my $conn=DBI->connect("dbi:ODBC:$server", $login, $haslo) or die "Error in connect $DBI::errstr ";
  39.  
  40.  
  41. $dbh = $conn->prepare("SELECT password, id_kom, id_ko FROM webklient where user_name='$user_name'") or die "Can't prepare statement: $DBI::errstr";
  42.  
  43. $dbh->execute or die "Can't execute statement: $DBI::errstr";
  44. $dbh->bind_columns(\($pass_d,$kntr_id_kom, $kntr_id_ko));
  45. if ($dbh->fetch)
  46. {
  47.  
  48. if ($pass_d ne $password)
  49. {
  50. $Error = 3;
  51. print "złe hasło\n";
  52.  
  53. print "$pass_d \n"; -- tu wypisuje obcięte "te" a w bazie jest "test123" questionmark.gifquestionmark.gif
  54. print "$password \n"; -- tu wypisuje poprawnie "test123"
  55. print "$user_name \n"; -- tu wypisuje poprawnie "test123"
  56.  
  57. }
  58. else
  59. ...
  60.  
  61.  


Co może powodować to obcinanie zwracamych przez zapytanie danych??
Spróbuje przeinstalować perl-a, ale to tylko strzał.

Proszę o pomoc.

Pozdrawiam
Andrzej