Avatar billede mxs Nybegynder
25. april 2004 - 18:33 Der er 45 kommentarer og
2 løsninger

Hjælp til at skabe forbindelse til IRC, join en chan og sæt nick

Jeg har tænkt mig at prøve at connecte til en irc server, men jeg har lidt svært ved at gennemskue det. Jeg har lavet et stykke kode som er

<?php


$host = "se.quakenet.org";
$port = "6668";

$fp = fsockopen($host, $port, $errno, $errstr);
fputs($fp,"/nick mBot /j Thyborøn");





?>

Men den virker ikke. Jeg tror også selv at der skal mere i, men hvad? Vil i hjælpe mig?

Kunne være dejlig:)

På forhånd tak
Avatar billede jammerlab Nybegynder
25. april 2004 - 18:38 #1
uha mxs... har sidet og lavet en hel PHP bot til IRC (Som desværre er gået tabt under format c:\) og det var noget mere end det hehe :) Du skal bruge sockets og masser af dem :P
Avatar billede mxs Nybegynder
25. april 2004 - 18:40 #2
Ja det tænkte jeg jo nok:) Jeg har nogenlunde styr på at oprette sockets osv men jeg kan bare ikke lige gennemskue hvordan jeg får det lavet:)
Avatar billede jammerlab Nybegynder
25. april 2004 - 19:10 #3
Jeg kan huske jeg fandt en masse gode eksempler herinde:

http://sourceforge.net/search/

søg på "php irc" med hak i "Require All Words" :) Så finder du en masse eksempler.
Avatar billede mxs Nybegynder
25. april 2004 - 20:39 #4
Ja der er godt nok meget, men det jeg søger er bare lige hvordan man logger på en irc server. Alt det der er på sourceforge er for mig noget volapyk da det jeg søger ikke skal indholde hvordan man loader modules laver farver osv:) Men bare lige hvordan man connecter og så ikke mere.
Avatar billede xyborx Nybegynder
26. april 2004 - 09:47 #5
Så skal du jo have styr på IRC protokollen (hint: http://www.google.com/search?q=rfc+1459 )

Et længer hint :)
USER mBot * * :Hosted by ...
NICK mBot
JOIN #Thyborøn

De /-kommandoer du bruger fungerer ikke i IRC protokollen. Det er noget diverse IRC klienter har fundet på, for at kunne kende forskel på indtastede beskeder og kommandoer.
Avatar billede xyborx Nybegynder
26. april 2004 - 09:50 #6
Glemte lige at sige at scriptet (ifølge standarden) på et hvilket som helst tidspunkt skal være forberedt på en PING fra serveren og svare med en PONG:

Hvis serveren fx siger
PING :12345
Så skal dit script svare
PONG :12345

Ellers går der kun et par minutter, så timer den ud :)
Avatar billede mxs Nybegynder
07. maj 2004 - 12:22 #7
Jeg har fumlet, fundet og sat noget sammen, men er denne stump kode ikke den som connecter til qnet server og svarer med pong?

<?php

$server_addr = "de.quakenet.org";
$server_port = "6667";

$socket = fsockopen($serv_addr, $serv_port, $errno, $errstr);

if ($socket < 0) { echo "failed... $errno: $errstr"; return; }
else { echo "Connected."; }

socket_set_blocking($socket, false);



while($socket) {
    $out = fgets($socket, 4096);
    $out = rtrim($out);
    if (strlen($out) > 1) {
    if (preg_match("/PING (:.+)/", $out, $matches)) {
        fputs($socket, "PONG $matches[1]\r\n");
        //echo "ping-pong<br>";
}

?>
Avatar billede jammerlab Nybegynder
07. maj 2004 - 12:39 #8
jow
Avatar billede jammerlab Nybegynder
07. maj 2004 - 12:57 #9
du skal også huske at du ikke kan kører sådan noget her via IE du skal åbne et command vindue...

start > kør > cmd
så går du ind i dit php arkiv ligsom

c:\cd php
c:\php\php "c:\script.php"
Avatar billede mxs Nybegynder
07. maj 2004 - 16:30 #10
Ok når jeg så har gjort det så skal jeg til at sætte mit

NICK, PASS og JOIN efter det ikke?
Avatar billede mxs Nybegynder
07. maj 2004 - 16:47 #11
Altså jeg har tænkt at gøre sådan her. Jeg tjekker så ikke efter om brugernavnet osv er taget da jeg først logger på med min mIRC og tjekker (Jeg skal jo lige se om jeg kan lave det her først)

<?php

$server_addr = "de.quakenet.org";
$server_port = "6667";
$join = array("#Thyborøn");
$nick = "mBot";
$user = "guest LOL :Bill tha Gates";

$socket = fsockopen($serv_addr, $serv_port, $errno, $errstr);

if ($socket < 0) { echo "failed... $errno: $errstr"; return; }
else { echo "Connected."; }

socket_set_blocking($socket, false);



while($socket) {
    $out = fgets($socket, 4096);
    $out = rtrim($out);
    if (strlen($out) > 1) {
    if (preg_match("/PING (:.+)/", $out, $matches)) {
        fputs($socket, "PONG $matches[1]\r\n");
        //echo "ping-pong<br>";
}


fputs($socket, "$user");
fputs($socket, "$nick");
fputs($socket, "$join");

?>

Men er det forkert?
Avatar billede mxs Nybegynder
07. maj 2004 - 16:53 #12
fputs($socket, "$user");
fputs($socket, "$nick");
fputs($socket, "$join");

Skal jo self hedde
fputs($socket, "USER: $user");
fputs($socket, "NICK: $nick");
fputs($socket, "JOIN: $join");
Avatar billede mxs Nybegynder
07. maj 2004 - 17:35 #13
Talker du siger at jeg skal køre den via cmd, men hver gang jeg gør det så åbner den bare mit dokument i notepad. Hvordan skal jeg gøre det så? Jeg kan vel lidt selv regne ud at jeg jo skal køre den over php.exe eller apache, men hvordan fortæller jeg cmd at den skal køre scriptet over det?
Avatar billede jammerlab Nybegynder
07. maj 2004 - 18:28 #14
hehe som jeg har skrevet :P du starter cmd op ved at i kør skriver du "cmd" så åbner den et command vindue...
Går ud fra den starter i dit c:\
så skriver du
c:\php <enter> (Så hopper den ind i dit php arkiv altså der hvor PHP er installeret)
c:\php\php.exe "C:\STIEN-TIL-DIT-SCRIPT" (altså du indtaster php.exe "C:\STIEN-TIL-DIT-SCRIPT")
Avatar billede mxs Nybegynder
07. maj 2004 - 18:33 #15
Aha:D Ok. Det har jeg prøvet nu, men den siger at den ikke kan finde en .dll fil og at den muligvis kan findes ved at installere programmet igen. Så jeg skal lige installere phpdev igen:) Så prøver jeg igen.
Avatar billede jammerlab Nybegynder
07. maj 2004 - 18:34 #16
say what... har du ikke bare installeret php? fra www.php.net?
Avatar billede mxs Nybegynder
07. maj 2004 - 18:35 #17
Nej jeg har installeret en phpdev (En setup fil som indholder php, mysql, gdlib osv) Man trykker på setup filen og 2minutter efter har man det hele installeret.
Avatar billede jammerlab Nybegynder
07. maj 2004 - 18:38 #18
Okay... ehm... ja okay prøv at geninstallere virker det ikke vil jeg anbefale dig at gå ind på www.php.net og hente det nyeste fra dem :)
Avatar billede mxs Nybegynder
07. maj 2004 - 18:58 #19
Det duede ikke. Jamen så vil jeg da installere det hver for sig. Hvad for php skal jeg vælge? 4'eren eller 5'eren?
Avatar billede jammerlab Nybegynder
07. maj 2004 - 19:00 #20
Den nyeste da :)
PHP 5.0.0RC2 zip package [8,075Kb] - 25 Apr 2004
Avatar billede mxs Nybegynder
07. maj 2004 - 19:02 #21
Ok. Skal jeg så bare vælge den nyeste apache og MySQL også?
Avatar billede jammerlab Nybegynder
07. maj 2004 - 19:10 #22
Det syntes jeg du skal.
Avatar billede mxs Nybegynder
07. maj 2004 - 19:28 #23
Ok har lidt probs med at vælge en apache. Hvad skal jeg vælge her?
Avatar billede mxs Nybegynder
07. maj 2004 - 19:31 #24
Har fundet ud af det=)
Avatar billede mxs Nybegynder
07. maj 2004 - 20:02 #25
Jeg har installeret apache og mysql, men jeg mangler kun php. Jeg går ud fra webcafe.dk's artikel om hvordan man installere php4, men jeg har jo php5.
I artiklen står der at jeg skal ændre i httpd.conf filen under apache. Det jeg skal tillægge er:

LoadModule php4_module c:/php/sapi/php4apache.dll
AddType application/x-httpd-php .php

Her skal jeg self. lige skifte php4_module ud med php5_module, men jeg kan ikke finde c:/php/sapi/php4apache.dll den her sti (Jeg kan ikke finde mappen sapi under min c:\php sti) Er det fordi jeg skal installere php? Altså trykke på en .exe fil? Eller hva?
Avatar billede jammerlab Nybegynder
07. maj 2004 - 20:04 #26
niks det er ikke sådan det fungere ;)

i din httpd.conf smider du

  ScriptAlias /php/ "c:/php/"
  AddType application/x-httpd-php .php
  Action application/x-httpd-php "/php/php.exe"

altså hvis den ligger på c:\php :)
Avatar billede mxs Nybegynder
07. maj 2004 - 20:34 #27
Ok men det jeg har brugt virker fint!! Altså jeg kan tage min localhost og åbne .php filer (Jeg har bare lavet en almindelig print("Hej hej");) og den viser den perfekt. Nu er jeg egentlig parat til at prøv på at starte den fra cmd, men jeg er ved at installere phpmyadmin. Men når jeg har udpakket den kommer den med følgende fejl;

MySQL udvidelser kan ikke loades,
check PHP konfigurationen.
Dokumentation

Jeg ved ikke om du har erfaring med phpmyadmin, men nu nævner jeg det lige:)
Avatar billede jammerlab Nybegynder
07. maj 2004 - 20:38 #28
Har aldrig fået den fejl... jeg har bare installeret de 3 ting og så har de fungeret... troede ikke PHP og MySQL'en arbejdede sammen sådan lige.
Avatar billede mxs Nybegynder
07. maj 2004 - 20:40 #29
Altså det er et "program" som hjælper en med at finde rundt i sin database:)
Avatar billede jammerlab Nybegynder
07. maj 2004 - 20:42 #30
doh mig der stener... phpmyadmin yes :D du skal ind i din config.inc.php og opsætte diverse ting :)
Avatar billede mxs Nybegynder
07. maj 2004 - 20:46 #31
Har været inde på #php.dk og spørge og de siger at jeg ikke kan loade den med 5'eren. De siger at jeg skal downloade en 4.3.6. Skal jeg det eller kan du få det til at virke med 5'eren?
Avatar billede jammerlab Nybegynder
07. maj 2004 - 20:47 #32
Har ikke prøvet med 5'eren... så hvis de kloge hoveder derinde siger det så ville jeg lytte til dem... sorry jeg troede det ville fungere med det nye. My bad.
Avatar billede mxs Nybegynder
07. maj 2004 - 20:50 #33
Gør ikke noget talker:p Jeg henter bare den anden og gør det samme. Burde ikke være så svær igen:D
Avatar billede mxs Nybegynder
07. maj 2004 - 21:27 #34
Sådan nu virker det sgu det hele:)
Og jeg kan godt køre scriptet, men når jeg gør det kommer den med fejlen
fputs(): supplied argument is not a valid stream resource on line 31, 32 og 33 + at min socket_set_blocking heller ikke er optilmal. Fejlene med min fputs er disse 3 linjer:

fputs($socket, "USER: $user");
fputs($socket, "NICK: $nick");
fputs($socket, "JOIN: $join");

Hvad er der galt her?
Avatar billede jammerlab Nybegynder
07. maj 2004 - 21:30 #35
Den måde jeg gør det på:

$Header = 'NICK ' . $nick .;
$Header .= 'USER ' . $username . ' ' . $localhost . ' ' . $remotehost . ' :' . $realname .;
fputs($fp, $Header);

og jeg gør det lige efter min socket er åbnet... måske der din fejl er?
Avatar billede mxs Nybegynder
07. maj 2004 - 21:39 #36
NU har jeg sat den sådan her:
$server_addr = "de.quakenet.org";
$server_port = "6667";
$join = array("#Thyborøn");
$nick = "mBot";
$user = "guest LOL :Bill tha Gates";

$socket = fsockopen($serv_addr, $serv_port, $errno, $errstr);

$header = 'NICK'.$nick;
$header .= 'USER'.$user;
fputs($socket, $header);


Men den melder stadig fejl ved min fputs($socket, $header);
Avatar billede mxs Nybegynder
08. maj 2004 - 12:00 #37
Nu har jeg rodet rundt med det og her er hvad jeg er kommet frem til:

<?php
set_time_limit(240);

$server_addr = "de.quakenet.org";
$server_port = "6668";

$username = "hoho@varmpost.dk";
$remotehost = "de.quakenet.org";
$localhost = "127.0.0.1";
$realname = "hohohohohoho";
$nick = "mBot";
$join = "#Thyborøn";


$socket = fsockopen($server_addr, $server_port, $errno, $errstr);

$Header = 'NICK '. $nick;
$Header .= 'USER ' . $username . ' ' . $localhost . ' ' . $remotehost . ' :' . $realname;

fputs($socket, $Header);
fputs($socket, "JOIN $join");

if ($socket < 0) { echo "failed... $errno: $errstr"; return; }
else { echo "Connected."; }

socket_set_blocking($socket, false);

while($socket) {
    $out = fgets($socket, 1024);
    $out = rtrim($out);
    print "$out";
    if (strlen($out) > 1) {
        if (preg_match("/PING (:.+)/", $out, $matches)) {
            fputs($socket, "PONG $matches[1]\r\n");
            print "ping-pong\r\n";
        }
    }
}

Jeg får det til at skrive Connected. Det vil jo betyde at min fsockopen er rigtig. Derefter udskriver jeg $out og den giver:

NOTICHE AUTH :*** Looking up your hostame NOTICE AUTH :*** Checking Ident NOTICE AUTH :*** Found your hsotname

Men så sker der ikke mere. Efter det har stået i 2 eller 3 minutter bliver jeg smidt af pga ping timeout. Den når altså ikke videre.
Jeg forstår det ikke!!
Avatar billede jammerlab Nybegynder
08. maj 2004 - 12:37 #38
Underligt... min gør det samme men den hopper på kort efter... og printer alle reglerne for quakenet :)
Avatar billede mxs Nybegynder
08. maj 2004 - 12:39 #39
Nu skriver den ping-pong, men det er det hele. Jeg bliver smidt af efter et kort stykke tid me en ping timeout:(
Avatar billede mxs Nybegynder
08. maj 2004 - 12:40 #40
Min kode er:

<?php
set_time_limit(0);

$server_addr = "de.quakenet.org";
$server_port = "6668";

$username = "hoho@varmpost.dk";
$remotehost = "de.quakenet.org";
$localhost = "127.0.0.1";
$realname = "hohohohohoho";
$nick = "mBot";
$join = "#Thyborøn";


$socket = fsockopen($server_addr, $server_port, $errno, $errstr);

$Header = 'NICK '. $nick;
$Header .= 'USER ' . $username . ' ' . $localhost . ' ' . $remotehost .
'
:' . $realname;

fputs($socket, $Header);
fputs($socket, "JOIN $join");

if ($socket < 0) { echo "failed... $errno: $errstr"; return; }
else { echo "Connected."; }

socket_set_blocking($socket, false);

while($socket) {
    $out = fgets($socket, 1024);
    $out = rtrim($out);
    print "$out";
    if (strlen($out) > 1) {
        if (preg_match("/PING (:.+)/", $out, $matches)) {
            fputs($socket, "PONG $matches[1]\r\n");
            print "ping-pong\r\n";
        }
    }

    usleep(2500);
}

?>
Avatar billede mxs Nybegynder
08. maj 2004 - 13:18 #41
Hey skal jeg ikke også tjekke efter ident? Hvordan gør jeg det?
Avatar billede jammerlab Nybegynder
08. maj 2004 - 14:00 #42
Nej det skulle jeg ikke mene du skulle...
Hvorfor har du en usleep i bunden??
Avatar billede mxs Nybegynder
08. maj 2004 - 14:44 #43
Det har jeg fået at vide at jeg skulle inde på #php. Det kan da vel ikke være det kan det?
Avatar billede jammerlab Nybegynder
08. maj 2004 - 19:03 #44
Lad os bare lukke her og hjælpe videre på IRC hvis der er noget tilbage at hjælpe med :)
Avatar billede mxs Nybegynder
09. maj 2004 - 14:51 #45
Jeg vil bare sig tak for hjælpen talker:) Du kan altid finde mig på #mxs^ (Hvis jeg da er på)
Avatar billede mxs Nybegynder
09. maj 2004 - 14:52 #46
Hey talker du skulle vel ikke vide hvordan jeg skriver et ascii smiley i dos?
Avatar billede jammerlab Nybegynder
09. maj 2004 - 16:42 #47
http://www.asciitable.com/

. chr(58) . chr(41) .

vel :)
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