Gå til innhold

PHP "irc" klient


Anbefalte innlegg

Hei!

 

Jeg sitter på skolen og har veldig restrikt internett aksess.

Proxy benyttes og fåtall av port er åpnet (80, 443 er vel de eneste tenker jeg).

 

Java er ikke støttet, heller ikke CGI:IRC fungerer.

 

Hva om jeg lager en side med dialogbokser og tilkobling til en MySQL server.

All tekst(tid?), nickliste etc blir lagt inn i databasen. Da må jo selvfølgelig siden

oppdateres ofte for at teksten skal komme fram i en rimelig grei tid. Kanskje

vært sekund?

 

Vet ikke om dette er en idè men ..

Har ikke veldig mange flere muligheter når jeg sitter på skolen.

Kan vel se ut som en "shoutbox" også.

Mye mulig noe som dette finnes allerede, noen som vet om noe?

 

takk for alle tilbakemeldinger!

Endret av melsom
Lenke til kommentar
Videoannonse
Annonse

Det er fullt mulig å kommunisere med en IRC-server fra PHP. Dette kalles socket-programmering, og fungerer enkelt forklart ved at man bruker IRC-protokollens egne meldinger og format for å sende og motta meldinger.

 

Hvis du virkelig er oppsatt på å få tilgang til IRC via PHP (selv om det nok ikke er den mest optimale løsningen), så skal dette gå an.

 

Har ikke undersøkt dette så nøye, men det finnes et script her som kan i alle fall få deg litt i gang.

 

Hvis du vil ha full oversikt over IRC-protokollen finnes det en såkalt RFC for det, som viser deg alt du trenger å vite.

 

Du finner den bl.a. her:

 

RCF 1459

Lenke til kommentar

Må man ha php 5.0 for at funksjonen fopensock skal virke?? Jeg har laget en irc server lokalt (Join me.exe) og prøver å koble til den via det skriptet du sendte meg. Men jeg får det ikke til...

 

EDIT: Feilen var at jeg hadde tatt port 6666 i skriptet og 6667 på serveren.

Nå koblet jeg meg på, men hvordan kan jeg "chatte" i php?

Endret av robgar
Lenke til kommentar
haavis, jeg regner med at det vil lage en direkte tilkobling til irc-server,

noe som ikke er mulig fra den skolen. Derfor jeg vurderte mysql etc.

 

Finnes det andre metoder?

Hvis du kjører PHP-skriptet lokalt på egen maskin vil det nok opprettes en tilkobling på en port som er stengt. Men her tenkte jeg at du kunne kjøre slike skript på en annen server som du kommuniserer med vha HTTP.

 

Men som sagt tidligere her - dette vil være en dårlig løsning siden siden må oppdateres hele tiden.

Endret av haavis
Lenke til kommentar

Finnes det andre metoder?

Du kan bruke flatfil istedefor mysql, men det går for det samme.. Oppdatering døgnet rundt (man blir gal av klikkelyden til Windows ).

 

Her er et skript jeg lagde for å "chatte" med php via flatfil.

 

Det er fire filer: login.php, chat.php, lese.php og lagre.php

 

login.php

 

<?

session_start();

$n = $_POST['nick'];

$k = $_POST['kanal'];

 

if(!empty($n) && !empty($k)) {

$_SESSION['nick'] = $n;

$_SESSION['kanal'] = $k;

header("Location: chat.php");

}

?>

<form name="form1" method="post" action="">

  <table width="30%" height="135" border="0">

    <tr>

      <td height="45">Kanal :</td>

      <td> <select name="kanal" size="1">

          <option value="Hoved.txt" selected>Hoved</option>

          <option value="en_annen.txt">En_annen</option>

        </select> </td>

    </tr>

    <tr>

      <td height="41">Nick:</td>

      <td><input name="nick" type="text" id="nick"></td>

    </tr>

    <tr>

      <td height="41"> </td>

      <td height="41"> <p>

          <input type="submit" value="Chat">

        </p></td>

    </tr>

  </table>

</form>

 

 

chat.php

<?

session_start();

if(empty($_SESSION['nick']) || empty($_SESSION['kanal'])) {

header("Location: login.php");

}

 

$fil = $_SESSION['kanal'];

$s_fil = str_replace(".txt", "", $fil);

 

print "Du er nå i kanalen : " . $s_fil . " ";

?>

 

 

<IFRAME border=0 name=content src="lese.php" frameBorder=0 height="70%" width=100% scrolling=yes></IFRAME>

 

 

<form name="form1" method="post" action="lagre.php">

  <p> </p><table width="100%" border="0">

    <tr>

      <td>

   <center>

   <input name="setning" type="text" id="setning3" size="50"> <input type="submit" name="Submit" value="Snakk i vei">

   </center>

      </td>

    </tr>

  </table>

</form>

 

lese.php

<META HTTP-EQUIV="Refresh" CONTENT="2;lese.php#anker">

 

<?

session_start();

if(empty($_SESSION['nick']) || empty($_SESSION['kanal'])) {

header("Location: login.php");

}

 

function hente($fil)

{

  if (!empty($fil) && file_exists($fil)) {

print "<table width=\"100%\"><tr><td>";   

$ii = "0";

$i = "0";

$new = "7";

$ff = file($fil);

   

   foreach ($ff as $linje_nr => $linje) {

   $i++;

   }

   

   if ($i > "9") {

   $start = ($i-$new);

   }

   else {

   $start = "0";

   }

  

   foreach ($ff as $linje_nr => $linje) { 

   

  if ($ii >= $start) {                     

   list($tekst, $skrevet) = split("[']", $linje);

   print htmlspecialchars($tekst)."</td></tr><tr><td>";           

  }

   $ii++;

   }

   fclose($fil);

   print "</td></tr></table>";

  

  }

}

 

$fila = $_SESSION['kanal'];

hente($fila);

?>

<div id="anker"> anker </div>

 

lagre.php

<?

session_start();

if(empty($_SESSION['nick']) || empty($_SESSION['kanal'])) {

header("Location: login.php");

}

$fil = $_SESSION['kanal'];

$setning = $_POST['setning'];

$nick = $_SESSION['nick'];

 

function skriv($fil, $setning, $nick)

  {

    $fila = fopen($fil, 'a+');

    $dato = date("d/m-Y H:i:s");

    $setning = $nick. " skriver:  " . $setning. "'" . $dato . "

";

    fwrite($fila, $setning);

    fclose($fil);

  }

skriv($fil, $setning, $nick);

header("Location: chat.php");

?>

 

 

Håper det var noe sant du var ute etter. (beklager for litt langt svar)

Endret av robgar
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...