Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Nietypowy problem, dane wprowadzone przez formularz różnią się od wyciągniętych z tekstu
smileer
post 21.12.2012, 19:27:58
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 16.05.2012

Ostrzeżenie: (0%)
-----


Miałe nie pisać tego pytania bo miał być koniec świata ale poczekałem do północy, nic się nie wydarzyło więc piszę smile.gif

Wprowadzam dane do bazy za pośrednictwem formularza oraz z pliku txt. Później podając dane z klawiatury próbuję je porównać z tym ciągiem wyciagniętym z pliku txt.
Wygląd skrawka bazy: http://imgur.com/VEUw7
Od lewej id, kolumna zawierajaca slowa z klawiatury(nieistotna), kolumna ktora zawiera ciągi wyciagniete z pliku txt (pierwsze dwa od dołu nie były edytowane), następnie wprowadzam poprzez formularz zmienna i np szukam w bazie po tej zmiennej, niestety skrypt nie dopasowuje, nie dziala to.

Zauważyłem ponadto że zaczyna działać gdy w phpmyadmin ręcznie zeedytuje komórkę, tzn. nawet nie zmienię jej, (wszystkie ść itd zostaną) tylko poprostu nadpiszę.
Gdy już nadpiszę daną komórkę to tak jak była pisana jakby od dołu to zaczyna być pisana normalnie od góry.( tak jak na obrazku wszystkie komorki oprocz wierszy 26, 29, 31 kolumny trzeciej).

Zmienna która takie probelmy sprawia to $wylosowany.


Jeśli piszę nieskładnie może kod rozjaśni sprawę:
Plik zakoduj:
  1. echo "<form method='POST'>
  2. <center>
  3. <textarea style='position:relative; width:420px; height:170px; top:20px;' name='tekst'>Tu wprowadź tekst</textarea>
  4. <button style='position:relative; width:300px; top:35px;'>Zakoduj</button><br>";
  5. $tekst = $_POST['tekst'];
  6. $tekst2 = $tekst;
  7. if ($tekst != "Tu wprowadź tekst" && $tekst != "" )
  8. {
  9.  
  10. $znaki = fopen('tadeusz.txt', 'r');
  11. $tekst = fread($znaki,488911);
  12. $losowa = rand(0,488911);
  13. while ( substr($tekst, $losowa, 1) != "."){
  14. $losowa++;
  15. }
  16. $losowa++;
  17. $losowa2 = $losowa +30;
  18. while ( substr($tekst, $losowa2, 1) != " "){
  19. $losowa2++;
  20. $zmienna++;
  21. }
  22. $zmienna = $zmienna +30;
  23. $wylosowany_ciag = substr($tekst, $losowa, $zmienna);
  24. $wylosowany = $wylosowany_ciag;
  25.  
  26. mysql_connect('', '', '')or die('<br />Błąd polaczenia');
  27. mysql_select_db('bluetest2_y0_pl')or die('<br />Błąd wyboru bazy');
  28. mysql_query("SET CHARSET utf8");
  29. mysql_query("Set NAMES `utf8` COLLATE `utf8_polish_ci`");
  30.  
  31.  
  32. $zapytanie = "INSERT INTO `baza` (`id`, `tresc`,`haslo`) VALUES (' ','$tekst2','$wylosowany')";
  33. $dodaj = mysql_query($zapytanie)or die('<br />Błąd zapytania');
  34. mysql_close($sql_conn);
  35.  
  36. echo "<input style='position:relative; width:300px; top:50px;' type='text' name='nazwa' value='$wylosowany_ciag'>";
  37. }
  38.  
  39. echo "</center>
  40. </form>";
  41. ?>


Odkoduj:
  1. <?php
  2. echo "<form method='POST'><center><input style='position:relative; width:300px; top:15px;' type='text' name='hasloqwe' value='Tu wprowadź hasło'>
  3. <button style='position:relative; width:300px; top:25px;'>Odkoduj</button><br>";
  4. $haslo = $_POST['hasloqwe'];
  5. mysql_connect('', '', '')or die('<br />Błąd polaczenia');
  6. mysql_select_db('bluetest2_y0_pl')or die('<br />Błąd wyboru bazy');
  7. mysql_query("SET CHARSET utf8");
  8. mysql_query("Set NAMES `utf8` COLLATE `utf8_polish_ci`");
  9. $zapytanie = "SELECT `tresc` FROM `baza` WHERE `haslo`='$haslo'";
  10. $haslo_gotowe = mysql_query($zapytanie)or die('<br />Błąd zapytania');
  11. mysql_close($sql_conn);
  12. while ($haslo_jeszcze_bardziej_gotowe = mysql_fetch_row($haslo_gotowe)){
  13. echo "<textarea style='position:relative; width:420px; height:160px; top:40px;' name='tekst'>$haslo_jeszcze_bardziej_gotowe[0]</textarea></center></form>";
  14. }
  15. ?>


Wiem, że skrypt nie posiada żadnych zabezpieczeń, po prostu uczę się, jak ten mój problem zostanie rozwiązany wezmę się za jakieś zabezpieczenia, zacznę od filtrowania wprowadzanych danych.

Nie znalazłem podobnego problemu, a może poprostu nie umiem nazwać tego problemu i dlatego nie znalazłem.

Brakło sformatowania ciagu funkcją trim. Chodź dalej nie rozumiem dlaczego wyciągnięty ciąg z pliku txt zawierał białe znaki które tak mi marudziły.

Temat więc do zamknięcia.

Ten post edytował smileer 21.12.2012, 00:25:13
Go to the top of the page
+Quote Post
mortus
post 21.12.2012, 19:42:38
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Jeśli dane w pliku są zapisywane linia po linii, to skrypt odczytywał również znak końca linii. trim() z automatu usuwa znak końca linii.
Go to the top of the page
+Quote Post
daniel1302
post 21.12.2012, 19:50:35
Post #3





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


1) Jeśli masz kolumnę ID ustawioną na auto_increment to nie musisz wogóle uwzględniać jej w zapytaniu INSERT bo zostanie sama przypisana wartość dla niej.

Z tego co widzę na twojej stronie: http://bluetest2.y0.pl/ wszystko działa poprawnie..., zakodowałem tekst, skopiowałem go do odkodowania i normalnie wszystko działa. I jest to bardzo nie efektywny algorytm. Bo lepiej jest napisać algorytm operujący na systemie binarnym o odwracalnym algorytmie zakodowania(do prywatnych zastosowań wystarczy, bo nikt nie będzie chciał łamać algorytmu tracąc tygodnie czasu aby zarobić kilka set złotych, chyba że będziesz kodował informacje wojskowe tongue.gif). Bo w twoim przypadku jest wielka szansa, że zdanie wylosowane z bazy się powrótrzy.

Uwierz mi, trzymanie długich tekstów w bazie danych może skończyć się jej śmiercią. Czyściłem kiedyś stronkę typu pastebin.pl i dodawałem zabezpieczenia bo baza miała 10 min Uptime max i wywalał się deamon. Strona nie miała zabezpieczeń i boty dodały 290GB tekstu(same linki).

Dodaj jakąś nawet najprostrzą captche tylko w obrazku, poczytaj jak się taką captche robi.

Ten post edytował daniel1302 21.12.2012, 19:54:20
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 12:00