Avatar billede swaq Nybegynder
03. oktober 2003 - 22:47 Der er 11 kommentarer og
1 løsning

Gemme brugers input i array og/eller tilføje data til array

Hejsa

Sidder med et script som tillader portscanning på en given IP-adresse. Indtil videre indeholder scriptet to arrays:
$PortsToTest = array(21, 123, 3306, 80, 110);

$PortName = array(
    21=>"FTP",
    23=>"Telnet",
    25=>"SMTP",
    80=>"HTTP",
    110=>"POP3",
    119=>"News",
    123=>"NTP",
    3306=>"MySQL
);
Dette er hvad scriptet tester på som udgangspunkt.

Det gode spørgsmål er så, hvordan jeg tilføjer en form som tillader at brugeren selv kan angive dels et port nr. samt en betegnelse, hvorefter disse input smides ind i ovenstående array og er med i næste test.
Avatar billede swaq Nybegynder
03. oktober 2003 - 22:54 #1
Scriptet kan ses i aktion her: http://wasf.dk/developer/portScan/portScan.php

Den eller de porte som brugeren måtte tilføje skal indgå i næste test sammen med de oprindelige og vises i samme tabel (deraf min ide om at de nye porte skal ligge i samme array som de oprindelige)
Avatar billede iphase Nybegynder
03. oktober 2003 - 22:54 #2
Du ved vel hvordan man laver en form går jeg ud fra.

Er det et script der står og kører på en server i nogle tids intervaler?
Avatar billede swaq Nybegynder
03. oktober 2003 - 22:57 #3
nope, det kan aktiveres gennem: http://wasf.dk/?goPage=developer, tanken var blot at det skulle være en service hvis man vil teste sin egen sikkerhed. Jeg regner med at kunne udbygge scriptet således flere porte scannes automatisk.
Avatar billede swaq Nybegynder
03. oktober 2003 - 22:58 #4
jeg er med på at lave formen, men er dog rendt ind i et forståelseproblem når vi pludselig taler array's, derfor må du meget gerne inkludere formen hvis du giver et eksempel :-)
Avatar billede iphase Nybegynder
03. oktober 2003 - 23:04 #5
///form.htm

<form method="post" action="portscan.php">
    ip     <input type="text" name="ip"><br />
    port1     <input type="text" name="port[]"><br />
    port2     <input type="text" name="port[]"><br />
    port3     <input type="text" name="port[]"><br />
    port4     <input type="text" name="port[]"><br />
        <input type="submit" value="test">
</form>


///portscan.php



$PortsToTest = array(21, 123, 3306, 80, 110);

foreach($_POST['port'] as $value)
{
    $PortsToTest[] = $value;
}


Så burde dine porte blive tilføjet til din array.. har ikek testet det. men ideen er godnok ;)
Avatar billede swaq Nybegynder
03. oktober 2003 - 23:05 #6
ahh... ok, nu er jeg med, du kan bruge portnr. som id-felt i array'et... Klart nok - jeg er vist lidt for Java-minded... Hvordan vil du tilføje beskrivelsen?
Avatar billede iphase Nybegynder
03. oktober 2003 - 23:11 #7
Det der sker er at vi i din form laver en array der hedder "port" de to "[]" gør at det bliver til en array..


Så i dit script samler vi de nye porte med din eksisterende array.

Der er dog ikek check på om det er gyldige tal.. der må du lave noget smart med om værdierne er mellem 1 og 65535 eller hvad den højeste port nu hedder
Avatar billede swaq Nybegynder
03. oktober 2003 - 23:13 #8
check check, jeg har helt styr på array-delen, det var mere tilføjelsen af en beskrivelse til porten jeg tænkte på... hmm... gad vide om den beskrivelse overhovedet er relevant
Avatar billede iphase Nybegynder
03. oktober 2003 - 23:18 #9
Beskrivelserne.. tja.. alle porte har vel ikk een beskrivelse.

men så skal du hvis du er smart have gang i noget lignende det du allerede har

$PortName = array(
    21=>"FTP",
    23=>"Telnet",
    25=>"SMTP",
    80=>"HTTP",
    110=>"POP3",
    119=>"News",
    123=>"NTP",
    3306=>"MySQL"
);

så i den foreach samler du således her

foreach($_post['port'] as $key => $value)
{
$portname[$key][$value];
}



din form laver du så om så de kan lave en beskrivelse. som du så putter ind som key i arrayen.

MEn det virker lidt besværligt.

Måske skulle du bare lave en form med nogle faste vlag i . således at dine inputfelter allerede har navnet og porten eks:
    edonkey    <input type="check" name="port[edonkey][]" value='4661'><br />
    ftp        <input type="check" name="port[ftp][]" value='21'><br />
Avatar billede iphase Nybegynder
03. oktober 2003 - 23:21 #10
Det er nok meget forvirrende alt det jeg har skrevet. men det burde give dig en ide om hvor du skal hen.

Personlig syntes jeg bare du skal lave en stor form med alle de porte der må testes på. med en checkbox.

så bliver alle de afkrydsede porte så samlet af dit script med
$portname = array();
foreach($_post['port'] as $key => $value)
{
    $portname[$key][$value];
}

så laver du lige et check inden der tester at $_post[port] ikke er tom (dvs. brugeren ikke har valgt noget). således at du ikke tester forgæves.
Avatar billede swaq Nybegynder
03. oktober 2003 - 23:22 #11
Ok, kigger på det - super! Mange tak for hjælpen :-)
Avatar billede iphase Nybegynder
03. oktober 2003 - 23:26 #12
dvsl :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester