---
title: "Sockets och irc"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/94537-sockets-och-irc"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Qimen"
published: "2004-01-11T14:58:15.000Z"
updated: "2004-01-11T15:48:19.000Z"
replies: 10
views: 318
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/94537-sockets-och-irc"
---

# Sockets och irc

## #1 — Qimen, 2004-01-11T14:58Z

Hej

Jag håller på med en irc bot som är skriven i php. Jag kommer in på olika nät som jag vill, ex quakenet. Där lyckas jag även hålla kvar boten samt jag kan få den att lämna nätet via ett kommandon.

Nu har jag dock ett par problem. Hur ska jag göra för att bara jag ska kunna styra boten? Jag vet att jag måste sätta så att endast min host är tillåten och att hosten måste vara i formatet :n!i@h. Ex. :Qimen!qimen@adress.nu

Scriptet jag har ser ut så här: 

```php
<?php
ini_set("output_buffering",0);
ini_set('max_execution_time', 0);

/* ====================== 
Variablar 
====================== */ 

$NICK = 'PixelWorld'; 
$IDENT = 'pw'; 
$CHANNEL = '#PixelWorld-dev'; 

/* ====================== 
Funktion 
====================== */ 

function pw($input) { 
global $fp; 
fputs($fp, $input."\r\n\r\n"); 
} 

function pong($id) { 

global $CHANNEL, $fp, $firstPING; 
fputs($fp, "PONG ".$id."\r\n\r\n"); 

if ($firstPING <= 1) { 
fputs($fp, "JOIN $CHANNEL\r\n\r\n"); 
} 

} 

/* ====================== 
Kontakt
====================== */ 

$fp = fsockopen ("irc.quakenet.org", 6667, $errno, $errstr, 30); 
if (!$fp) { 

die("$errstr ($errno)<br>\n"); 

} 

pw("USER $NICK $NICK $NICK :$NICK"); 
pw("NICK $NICK $IDENT"); 

/* ====================== 
Abooo... 
====================== */ 

$firstPING = 0; 
while (!feof($fp)&&!$eof) { 

$msg = str_replace("\n", "", str_replace("\r", "", fgets ($fp,2048))); 
if (strtoupper(substr($msg, 0, 4)) == 'PING') { 

$firstPING++; 
$pID = substr($msg, 6); 
pong($pID); 

} else if (substr($msg, -8) == '!pw quit') { 

pw("QUIT :"); 

} else if (substr($msg, -8) == '!pw join') {

pw("JOIN #PixelWorld"); 
 
}
echo $msg.'<br />'; 
} 

fclose($fp);
 
?>
```

 Nu kan alla styra den med kommandona !pw join och !pw quit. Vilket jag måste förhindra.  :l 
Några ideer? :)

Permalänk: https://www.webforum.nu/p/94537

## #2 — sebbz, 2004-01-11T15:00Z

Kolla i RFCn hur det ser ut när någon skriver något i en kanal, har bestämt för mig att hostmask och grejer "hänger med". I så fall är det ju bara att filtrera strängen efter rätt hostmask. Kolla RFCn som sagt, om du inte redan gjort det.

Permalänk: https://www.webforum.nu/p/1247368

## #3 — Qimen, 2004-01-11T15:03Z

Har skummat igenom ett dokument om RFC1459 som gäller för irc men hittar inget om det.

Bilagor:

- [rfc1459.txt](https://www.webforum.nu/a/2621.txt)

Permalänk: https://www.webforum.nu/p/1247369

## #4 — sebbz, 2004-01-11T15:09Z

Hur ser $msg ut?

Permalänk: https://www.webforum.nu/p/1247372

## #5 — Qimen, 2004-01-11T15:13Z

```php
$msg = str_replace("\n", "", str_replace("\r", "", fgets ($fp,2048)));
```

 ?
Vet inte riktigt exakt hur den ser ut när man tar imot den, fick en del hjälp med just den biten. :o

Permalänk: https://www.webforum.nu/p/1247378

## #6 — sebbz, 2004-01-11T15:15Z

Testa att skriva ut den precis när du tagit emot den, och se hur den ser ut :). echo $msg; eller liknande direkt efter den raden.

Permalänk: https://www.webforum.nu/p/1247379

## #7 — Qimen, 2004-01-11T15:19Z

Hmm tror inte jag kan göra det. Jag kör scriptet via webbläsaren och när boten kommit in på irc så avbryter man läsaren för att inte få fel.

Permalänk: https://www.webforum.nu/p/1247385

## #8 — sebbz, 2004-01-11T15:20Z

Hm.. Du kan inte skicka output till en fil? :)

Permalänk: https://www.webforum.nu/p/1247387

## #9 — Qimen, 2004-01-11T15:25Z

Nuså. 

```
:Qimen!qimen@villhasex.nu PRIVMSG #PixelWorld-dev :!pw quit)
```

 Så ser msg ut när jag skriver !pw quit, dvs kastar ut boten från irc.

Permalänk: https://www.webforum.nu/p/1247388

## #10 — sebbz, 2004-01-11T15:44Z

Precis.. Där har du din hostmask.. Bara att filtrera $msg så scriptet kollar efter din hostmask innan den utför någonting.

Permalänk: https://www.webforum.nu/p/1247396

## #11 — Qimen, 2004-01-11T15:48Z

Jopp, sitter och testar lite med det nu. Återkommer. :)

/r Weee funkar, bara jag som kan styra den nu. Då var ett problem löst och nu vet jag nog hur jag ska lösa mina andra problem med. Tackar!. :D  :bire

Permalänk: https://www.webforum.nu/p/1247397

---

Tråden på webben: https://www.webforum.nu/amne/php/94537-sockets-och-irc
