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


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

Proszę o pomoc.

Pozdrawiam
Andrzej
john_doe
Andrzej spróbuj sprowadzić Twój przykład do jak najbardziej prostego czyli
1. zapytanie
2. execute
3. print results

bez if`ów etc...

po prostu zapytaj i zwróć wynik na ekran.
dloogi
Zaraz spróbuje. Póki co próbowałem innych wersji perl i bez skutku.
Zmieniałem też zapytanie w skrypcie i wygląda na to, że obcina mi mniej więcej połowę stringa zwracanego z kolumny bazy.
np. w bazie mam dla użytkownika test123 hasło test to print wyświetli mi tylko "te" gdy mam cos11cos to "cos1"


Wyciąłem wszystko co wydawało mi się niepotrzebne i wygląda na to, że printuje mi połowę stringa jaki jest w bazie.
Gdy zmieniłem hasło na wa11aw na bazie, skrypt wyświetlił mi tylko wa1.
questionmark.gif
-dloogi-
Jakieś sugestie w temacie?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.