Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]formularz
Forum PHP.pl > Forum > Przedszkole
bemol
Jak zrobić taki formularz, który będzie podmieniał wpisane znaki na inne i wyświetlał w tym samym formularzu?
przykład: rot13
Kicok
Do <textarea></textarea> wstawiasz kod, który sprawdza, czy wysłany został formularz. Jeśli tak, to wstawia w tym miejscu wysłane dane potraktowane funkcją str_rot13" title="Zobacz w manualu PHP" target="_manual oraz htmlspecialchars" title="Zobacz w manualu PHP" target="_manual
bemol
Jest ok. http://bemol.xt.pl/xxx/index.php

index.php
  1. <?php
  2. echo '<form action=index.php method=post>';
  3. echo '<textarea name=text cols=110 rows=15>';
  4. echo '</textarea><br />';
  5. echo '<input type="submit" value="Szyfruj">';
  6. echo '</form>';
  7. $text = $_POST['text'];
  8.  
  9. echo '<textarea READONLY name=text cols=110 rows=15>';
  10. echo str_rot13("$text");
  11. echo '</textarea><br />';
  12. ?>


A jak zrobić, żeby samemu ustalić podmiane?
Np.
a, to x
b, to t
itd...
Cienki1980
Musisz napisać samemu funkcję przesuwającą gdzie sam ustalisz, która litera będzie której odpowiadała. Jeżeli się nie mylę to chyba szyfr Cezara działa na takiej zasadzie.
Ustalasz przesunięcie i na podstawie tego szyfrujesz tekst.
bemol
będzie ciężko ale spróbuje smile.gif

a może chociaż jakiś wzór?
Cienki1980
Cytat(bemol @ 30.04.2007, 21:39:32 ) *
będzie ciężko ale spróbuje smile.gif

a może chociaż jakiś wzór?

wystarczy zajrzeć do manuala i sprawdzić co można zdziałać za pomocą funkcji str_replace()
bemol
Praktycznie wszystko już jest ok.
Jest tylko jedno "ale".
Wpisuje "Kamil" i zamienia na Qxwtż. A co zrobić, żeby po wpisaniu Qxwtż wyświetliło Kamil? Czyli na zasadzie tam i z powrotem, a nie tylko tam smile.gif

index.php
  1. <?php
  2. echo '<form action=index.php method=post>';
  3. echo '<textarea name=text cols=110 rows=15>';
  4. echo '</textarea><br />';
  5. echo '<input type="submit" value="Szyfruj">';
  6. echo '</form>';
  7. $text = $_POST['text'];
  8.  
  9. echo '<textarea READONLY name=text cols=110 rows=15>';
  10. $znaki = array("q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m","ę","ó","ą","ś","ł","ż","ź","ć","ń","1","2","3","4","5","6","7","8","9","0","~","`","-","!","@","#","$","%","^","&","*","?","Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X","C","V","B","N","M","Ę","Ó","Ą","Ś","Ł","Ż","Ź","Ć","Ń");
  11. $podmiana = array("a","ą","B","c","ć","d","e","ę","f","g","h","i","j","/","l","ł","m","n","ń","O","ó","p","q","r","s","ś","t","u","v","w","x","y","z","ź","ż","!","@","#","$","%","^","&","*","~","`","-","_","=","+","|","k","?","<",">","3","2","1","Z","X","C","V","b","N","M","D","S","A","F","G","H","L","K","J","J","Q","W","E","R","T","Y","U","I","Ó","o","P","Ź","Ż","Ń","Ą","Ś","Ł","Ę");
  12. $text_podmiana = str_replace($znaki, $podmiana, $text);
  13. echo "$text_podmiana";
  14. echo '</textarea><br />';
  15.  
  16. $text_podmiana = $text;
  17.  
  18. ?>
kresh
Skoro udało cię się jakiś tekst zakodować to teraz wystarczy wykonać operację odwrotną, czyli teraz tablica $znaki powinna zawierać elementy z tablicy $podmiana a tablica $podmiana elementy z tablicy $znaki.
rojmarek
Cytat(Cienki1980 @ 30.04.2007, 19:34:53 ) *
Musisz napisać samemu funkcję przesuwającą gdzie sam ustalisz, która litera będzie której odpowiadała. Jeżeli się nie mylę to chyba szyfr Cezara działa na takiej zasadzie.

bron Boze ;]
cezar zapisuje teskt w prostokącie (często moze to być kwadrat) i zczytuje literki po kolumnach a nie po wierszach...
rot13 z tego co widze, to bardzo słaby sposób szyfrowania,
a->n,
b->o,
c->p
...
n->a,
o->b,
itd..
bemol
rojmarek, czyli jak mogłaby wyglądać taka funkcja?
A poza tym dziękuje wszystkim za pomoc smile.gif
Kicok
Cytat
Wpisuje "Kamil" i zamienia na Qxwtż. A co zrobić, żeby po wpisaniu Qxwtż wyświetliło Kamil? Czyli na zasadzie tam i z powrotem, a nie tylko tam


W takim razie upewnij się, że jeżeli "q" zamieniane jest na "a", to "a" zamieniane będzie na "q". Dla innych liter analogicznie.
rojmarek
Cytat(bemol @ 1.05.2007, 08:26:58 ) *
rojmarek, czyli jak mogłaby wyglądać taka funkcja?
A poza tym dziękuje wszystkim za pomoc smile.gif

cóż... rot13 ma w nazwie napisane jak on to robi...
  1. <?php
  2. foreach($tekst as &$char){
  3. if($char<'n'){
  4. $char += 13;
  5. }
  6. elseif ($char<'z'){
  7. $char -= 13;
  8. }
  9. }
  10. ?>

nie pamietam czy po stringu da sie foreachem leciec, jak nie to for .. strlen(string)
to zwróci coś mniej-więcej jak rot13 przesuwa sie o 13 po prostu...
jak chcesz sie bawic w kodowanie tekstów to poszukaj w internecie, jest tego maaaasa...
bemol
rojmarek to za ciężkie dla mnie smile.gif
mam problem, bo nie szyfruje, nie wiem dlaczego tak nagle, bo właściwie w pliku nic nie zmieniłem. http://bemol.xt.pl/xxx/index.php

index.php
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  5. <title>Seriws szyfrujący znaki</title>
  6.  <!-- <LINK rel="stylesheet" href="style.css" type="text/css" title="style"> -->
  7. </head>
  8. <body>
  9. <?php
  10. echo '<table align=center>';
  11. echo '<tr>';
  12. echo '<td align=center>';
  13. echo "Nowy serwis, który szyfruje wpisane przez Ciebie znaki.";
  14. echo '</td>';
  15. echo '</tr>';
  16. echo '<tr>';
  17. echo '<td align=center>';
  18. echo '<form action=index.php method=post>';
  19. echo '<textarea name=text cols=65 rows=15>';
  20. echo '</textarea><br />';
  21. echo '</td>';
  22. echo '</tr>';
  23. echo '<tr align=center>';
  24. echo '<td>';
  25. echo '<input id=button type="submit" value="Szyfruj">';
  26. echo '</form>';
  27. echo '</td align=center>';
  28. echo '</tr>';
  29. echo '<tr>';
  30. echo '<td align=center>';
  31. echo '<textarea READONLY name=text cols=65 rows=10>';
  32. $znaki = array("a","ą","b","c","ć","d","e","ę","f","g","h","i","j","k","l","ł","m","n","ń","o","ó","p","q","r","s","ś","t","u","v","w","x","y","z","ż","ź","A","Ą","B","C","Ć","D","E","Ę","F","G","H","I","J","K","L","Ł","M","N","Ń","O","Ó","P","Q","R","S","Ś","T","U","V","W","X","Y","Z","Ż","Ź");
  33. $znaki = array("ź","ż","z","y","x","w","v","u","t","ś","s","r","q","p","ó","o","ń","n","m","ł","l","k","j","i","h","g","f","ę","e","d","ć","c","b","ą","a","A","Ą","B","C","Ć","D","E","Ę","F","G","H","I","J","K","L","Ł","M","N","Ń","O","Ó","P","Q","R","S","Ś","T","U","V","W","X","Y","Z","Ż","Ź");
  34. $text_podmiana = str_replace($znaki, $podmiana, $text);
  35. echo "$text_podmiana";
  36. echo '</textarea><br />';
  37. echo '</td>';
  38. echo '</tr>';
  39. echo '</table>';
  40.  
  41. $text_podmiana = $text;
  42. $text = $_POST['text'];
  43. ?>
  44. </body>
  45. </html>
kresh
Nie szyfruje bo
  1. <?php
  2. $znaki = array("a","ą","b","c","ć","d","e","ę","f","g","h","i","j","k","l","ł","m","n","ń","o","ó","p","q","r","s","ś","t","u","v","w","x","y","z","ż","ź","A","Ą","B","C","Ć","D","E","Ę","F","G","H","I","J","K","L","Ł","M","N","Ń","O","Ó","P","Q","R","S","Ś","T","U","V","W","X","Y","Z","Ż","Ź");
  3. $znaki = array("ź","ż","z","y","x","w","v","u","t","ś","s","r","q","p","ó","o","ń","n","m","ł","l","k","j","i","h","g","f","ę","e","d","ć","c","b","ą","a","A","Ą","B","C","Ć","D","E","Ę","F","G","H","I","J","K","L","Ł","M","N","Ń","O","Ó","P","Q","R","S","Ś","T","U","V","W","X","Y","Z","Ż","Ź");
  4. $text_podmiana = str_replace($znaki, $podmiana, $text);
  5. //a gdzie $podmiana?
  6. ?>
bemol
kurcze działa, ale nie podmienia tak jak powinien :/
ehhh...

czy ktoś wie jak zrobić, żeby wyświetlało się w tym samym formularzu?
www0_0
Zrobić to w JS bo PHP działa po stronie serwera, a formularz znajduje się u klienta. Lub przeładowywać stronę, i w opcji value podać tekst po zaszyfrowaniu.
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.