Strona 3 z 4 PierwszyPierwszy 1234 OstatniOstatni
Pokaż wyniki 21 do 30 z 32

Temat: [Perl] Kurs Perl - cz.2 - podstawy dobrego stylu, zmiene - c.d., petle...

  1. #21
    Avatar hedVB
    hedVB jest offline AI
    Zarejestrowany
    Nov 2007
    Postów
    874

    Domyślnie

    (w oczekiwaniu z nie cierpliwością na część III )
    www.lingubot.pl - projekt sztucznej inteligencji.

  2. #22
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    chcialem dac nieco czasu na wchloniecie sie wiedzy ale juz przygotowuje tekst
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  3. #23
    Avatar hedVB
    hedVB jest offline AI
    Zarejestrowany
    Nov 2007
    Postów
    874

    Domyślnie

    czytałem trochę o operacjach na plikach i w ramach prostych ćwiczeń napisałem sobie coś takiego :P
    Kod:
    print("\n[+]Generator skryptu PHP przechwytujacego adres IP");
    print("\n[+]Umiesc wygenerowane pliki na swoim hostingu www");
    print("\n[+]Ustaw chmod pliku ip.txt na 777");
    print("\n[+]Wejdz po adres www.twojastrona.htm/catchIP.php");
    print("\n[+]Sciagnij z serwera plik ip.txt i obejrzyj jego zawartosc :)\n\n");
    print("\n----------------------------------------------");
    print("\nby hedvb [Michal Slowik]"); 
     
    #plik ip.txt
    open (HACK, '>>ip.txt');
    close(HACK);
    #przygotowanie skryptu zapisujacego adres IP
    open (PLIK, '>>CatchIp.php');
    print PLIK "<?\n";
    print PLIK 'function zapisz ($plik, $dodaj) {'; 
    print PLIK "\n";
    print PLIK '$file = fopen($plik, r);';
    print PLIK "\n";
    print PLIK '$cont = fread($file, filesize($plik));';
    print PLIK "\n";
    print PLIK 'fclose($file);';
    print PLIK "\n";
    print PLIK '$cont. = "adres IP: ".$dodaj;';
    print PLIK "\n";
    print PLIK '$save = fopen($plik,w);';
    print PLIK "\n";
    print PLIK 'If (fwrite($save,$cont)) {return 1;}';
    print PLIK "\n";
    print PLIK "else {return 0; }\n";
    print PLIK "}\n";
    print PLIK '$adres=$_SERVER[';
    print PLIK pack("C*",39);
    print PLIK "REMOTE_ADDR";
    print PLIK pack("C*",39);
    print PLIK '];';
    print PLIK "\n";
    print PLIK 'zapisz("ip.txt", $adres);';
    print PLIK "\n"; 
    print PLIK "\n";
    #przekierowanie - maskowanie dzialania skryptu
    print PLIK "?>\n";
    print PLIK "<?php\n";
    print PLIK 'header("Location:http://www.google.pl/");';
    print PLIK "\n";
    print PLIK "?>";
    print PLIK "\n";
    
    close (PLIK);
    
    
    print("\n\nPHP script zostalpomyslnie wygenerowany :)\n\n");
    print("\n\nNie zapomnij zmienic nazwy dla pliku CatchIp.php ;P\n\n");
    print("Pozdr for all hedvb [Michal Slowik]\n\n");
    Wiem że to banalne, ale chodziło o same ćwiczenie print, np pisząc
    print PLIK "$save = fopen($plik,w);'" w pliku php wynik był taki = fopen(,w);, kiedy się zorientowałem że trzeba dać ' wyskoczył mi błąd przy print PLIK'$adres=$_SERVER['REMOTE_ADDR'];', więc sobie przypomniałem o pack i poszukałem ascii dla ' (39), jednym słowem takie ćwiczenia są bardzo pożyteczne ;p czekam cd
    Ostatnio edytowane przez hedVB : 04-22-2008 - 20:13
    www.lingubot.pl - projekt sztucznej inteligencji.

  4. #24
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Ok... wybiegles nieco z materialem (nie powiem ze to zje - wrecz przeciwnie) ale zanim wrzuce 3 czesc (mozliwe ze jeszcze dzisiaj) to pokaze jak inaczej, przejrzysciej mozna napisac ten sam program...

    Kod:
    print <<_naglowek__;
    [+]Generator skryptu PHP przechwytujacego adres IP
    [+]Umiesc wygenerowane pliki na swoim hostingu www
    [+]Ustaw chmod pliku ip.txt na 777
    [+]Wejdz po adres www.twojastrona.htm/catchIP.php
    [+]Sciagnij z serwera plik ip.txt i obejrzyj jego zawartosc :)\n\n
    ----------------------------------------------
    nby hedvb [Michal Slowik]
    _naglowek__
     
    #plik ip.txt - robimy odpowiednik unixowego touch
    open (IP, ">>ip.txt");
    close (IP);
    #przygotowanie skryptu zapisujacego adres IP
    open (PLIK, '>CatchIp.php');
    print PLIK <<_kod_php__;
    <?
    function zapisz (\$plik, \$dodaj) {
      \$file = fopen(\$plik, r);
      \$cont = fread(\$file, filesize(\$plik));
      fclose(\$file);
      \$cont. = "adres IP: ".\$dodaj;
      \$save = fopen(\$plik,w);
      if (fwrite(\$save,\$cont)) {return 1; } else {return 0; }
      \$adres=\$_SERVER['REMOTE_ADDR'];
    }
    zapisz("ip.txt", \$adres);
    #przekierowanie - maskowanie dzialania skryptu
    header("Location:http://www.google.pl/");
    ?>
    _kod_php__
    close (PLIK);
    
    print <<_stopka;
    
      
    PHP script zostalpomyslnie wygenerowany :)
    Nie zapomnij zmienic nazwy dla pliku CatchIp.php ;P
      
    Pozdr for all hedvb [Michal Slowik]
    	
    _stopka
    # za _stopka musi byc znak nowej linii
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  5. #25
    Avatar hedVB
    hedVB jest offline AI
    Zarejestrowany
    Nov 2007
    Postów
    874

    Domyślnie

    aargggh trzeba było tak od razu mam rozumieć że można sobie zapisywać / wyświetlać dowolnie sformatowany tekst między znacznikami:

    Kod:
    print <<_costam;
    
    _____,^==&#172;&#172;&#172;&#172;_/|___
    )_,.--'''[ &#181;"\_\****””””””””"
    
    _costam
    <enter>
    i wyświetli/zapisze się w taki sam sposób w jaki napisałem?
    Ostatnio edytowane przez hedVB : 04-23-2008 - 19:38
    www.lingubot.pl - projekt sztucznej inteligencji.

  6. #26
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Tak, tylko zmienne trzeba 'lamac'

    \@tablica, \$zmienna, \%procent

    W nastepnej czesci pokaze Wam jeszce lepsze zabawy - np formatowanie tabelek tekstowych
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  7. #27
    Avatar Nikow
    Nikow jest offline -=[ZRP]=-
    Zarejestrowany
    Sep 2007
    Skąd
    Różne zakątki sieci.
    Postów
    995

    Domyślnie

    Już nie mogę się doczekać!
    http://nikowek.blogspot.com/
    Zbrojne Ramię Pingwina!
    -----BEGIN GEEK CODE BLOCK-----
    Version: 3.12
    GCS d- s++:++ a--- C+++ UL+++ P L+++ E--- W++ N++ o K- w--
    O M- V- PS PE Y PGP++ t+ 5 X+ R tv- b++ DI- D-
    G+ e- h! r% y?
    ------END GEEK CODE BLOCK------

  8. #28
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Najprawdopodobniej nastepna czesc bedzie jutro wieczorem lub najpozniej w weekend - wlasnie dotarlem do domu z Infosecurity... to niby drugi koniec miasta ale meczaca droga do domu (a ile pub'ow po drodze, rotfl). Postaram sie tez wrzucic pozniej jakis opis co ciekawego bylo na Infosecurity.

    Pomijajac fajne hostessy i sporo darmowych bajerow bylo troche fajnych rzeczy ale to racze na osobny post W kazdym razie postaram sie cos napisac...
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  9. #29
    Zarejestrowany
    Dec 2007
    Postów
    136

    Cool

    chcialem sie pochwalic i jednoczesnie poprosic o sprawdzenie kodu niby uzylem stricta i nic mi nie wykrywa ale to czasem nic nieznaczy pewnie . to programik ktory napisalem po przeczytaniu pierwszej i drugiej czesci kursu, sluzacy do wyliczania podstawowych wartosci(delta, miejsca zerowe itd. itp.) dla funkcji kwadratowej. ponizej kod. jednoczesnie dziekuje bardzo TQM za kurs i cierpliwosc w odpowiadaniu na pytania. zabieram sie za tablice i hashe. a pozniej za czesc 3 .

    Kod:
    use strict;
    #powitanie
    
    print "Witaj, w programie do obliczania delty dla funkcji kwadratowej!\n";
    
    #podaj wybrane zmienne $a, $b, $c.
    #potegowanie zapisane jest znakiem x**y, gdzie x to podstawa, a y to wykladnik
    #jezeli widzisz znak -- to oznacza on +, jezeli wyjdzie --- to jest to - itd.
    #parzysta ilosc - to + nieparzysta to -.
    
    my $x = "x";
    my $y = "y";
    my $a = "-2";
    my $b = "5";
    my $c = "2";
    
    my $delta = $b**2 - 4 * $a * $c;
    
    
    print "-----\n";
    print "delta dla funkcji kwadratowej $y = $a * $x**$x + $b$x + $c wynosi:\n";
    print "$delta\n";
    print "-----\n";
    
    if ($delta < 0) {
    	print "ta funkcja kwadratowa niema miejsc zerowych!\nbo delta jest mniejsza od 0!\n";
    } elsif ($delta == 0) {
    	print "ta funkcja kwadratowa ma jedno miejsce zerowe!\nponiewaz delta rowna sie 0!\n";
    	&x0
    } else {
    	print "ta funkcja kwadratowa ma dwa miejsca zerowe!\nponiewaz delta jest wieksza od 0!\n";
    	&x1x2
    }
    
    
    sub x1x2 {
    	my $pierdelta = sqrt($delta);
    	my $x1 = -$b - $pierdelta / 2 * $a;
    	print "pierwsze miejsce zerowe tej funkcji to: ($x1,0)\n";
    	my $x2 = -$b + $pierdelta / 2 * $a;
    	print "drugie miejsce zerowe tej funkcji to: ($x2,0)\n";
    	print "-----\n";
    	print "postac iloczynowa tej funkcji to f($x)=$a($x-$x1)($x-$x2)\n";
    }
    
    
    sub x0 {
    	my $pierdelta = sqrt($delta);
    	my $x0 = -$b / 2 * $a;
    	print "to miejsce zerowe to X0:($x0,0)\n";
    	print "-----\n";
    	print "postac iloczynowa tej funkcji to f($x)=$a($x-$x0)**2\n";
    }
    
    print "-----\n";
    
    my $p = -$b / 2 * $a;
    my $q = -$delta / 4 * $a;
    
    print "wierzcholek tej funkcji znajduje sie w punkcie W: ($p,$q)\n";
    print "-----\n";
    print "!DZIEKUJE ZA WYBRANIE WYLICZACZA FUNKCJI BY MTBS!";

  10. #30
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Sorry za tak pozna odpowiedz - bylem off-line pare dni
    Co do kodu jest jak najbardziej poprawny - zapis ok, zmienne zadeklarowane jak trzeba i gdzie trzeba i sie nie nakladaja (inaczej strict by bardzo krzyczal).

    Co bym zmienil? Moze dodal 'use warnings;', przydaje sie przy debugowaniu problemow (odpalasz i widzisz ze np probujesz dolaczyc do tekstu zmienna ktora ma pusta wartosc itd.
    Na pewno w sekcjach if() w zapisie kodu do wykonania po kazdej linii dalbym srednik... masz 2 linie w sekcji i tylko pierwsza konczysz srednikiem, druga nie ma nic, po niej nastepuje zamkniecie klamry (koniec sekcji) - ok - zapis jest poprawny, ale jesli bedziesz pozniej chcial zmieniac kod to nie raz zlapiesz sie na tym, ze ponizej dopisujesz linie kodu i nagle program nie dziala, bo zapomniales dac srednik gdzies wczesniej. Moze to moje osobiste zboczenie ale 'taniej' jest wyrobic sobie nawyk stawiania srednika po kazdej linii (chyba ze jest tylko jedna) niz ciagle wracac do kodu i szukac co jest nie tak... w koncu czas to pieniadz!
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

Podobne wątki

  1. [Perl] Kurs Perl - cz.1 - wprowadzenie i podstawy
    By TQM in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 22
    Autor: 10-27-2014, 01:50
  2. Perl-echo.pl-smthg wrong?
    By Efraim in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 12
    Autor: 11-14-2007, 18:03
  3. bot irc PERL
    By jaszu in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 1
    Autor: 08-01-2007, 09:40
  4. Tworzenie katalogow.perl.foreach.
    By riczard_nikson in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 1
    Autor: 01-19-2007, 22:54
  5. Problem z Petla Perl
    By szpuni in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 11
    Autor: 07-03-2006, 16:23

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj