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"
#!C:\perl\bin\perl.exe -w use DBI; my $server = "moj_serwer"; my $login = "mojlogin"; my $haslo = "mojehaslo"; my $Error = 0; my $ErrorDBI = ""; #eval { DBI->trace(4) }; #if ($@) # { # $ErrorDBI = $@; # $Error = 6; # } use CGI; $cgi = new CGI; $user_name = $cgi->param("user_name"); $password = $cgi->param("password"); use CGI::Carp qw (fatalsToBrowser); $dbh = $conn->prepare("SELECT password, id_kom, id_ko FROM webklient where user_name='$user_name'") or die "Can't prepare statement: $DBI::errstr"; $dbh->bind_columns(\($pass_d,$kntr_id_kom, $kntr_id_ko)); if ($dbh->fetch) { if ($pass_d ne $password) { $Error = 3; } else ...
Co może powodować to obcinanie zwracamych przez zapytanie danych??
Spróbuje przeinstalować perl-a, ale to tylko strzał.
Proszę o pomoc.
Pozdrawiam
Andrzej