Gå til innhold

Hjelp til å definere admin per IP i chat (anyone?


Anbefalte innlegg

Hei - jeg har en enkel chat som jeg har satt opp basert på dette scriptet:

http://www.linuxuser.at/index.php?title=Mo..._Ajax_Chat_Ever

 

Har imidlertid behov for å skille ut meldinger som kommer fra admin, slik at de f.eks er i bold eller rød skrift, står "admin" eller lignende.

 

Tenkte det kanskje kunne gjøres ved å legge til en

if ($REMOTE_ADDR == "admin ip adresse") {

 

Men jeg får det ikke til..

 

Noen som vet hva jeg kan gjøre? Tror det er rimelig simpelt... trenger som sagt bare en ekstra : eller admin etter navnet...

 

Her er koden som skriver til tekstfilen:

 

<?php
function makeSmiley($msg){
$file = file("smiley.txt");
for($i=0;$i<count($file);$i++){
$exp = explode('|', $file[$i]);
$msg = str_replace($exp[0], $exp[1], $msg);
}
return $msg;
}
function filter($msg){
$f = file("badwords.txt");
for($i=0;$i<count($f);$i++){
$bad_words = explode(',', $f[$i]);
}
foreach ($bad_words as $naughty){
 $msg = eregi_replace($naughty, "*****", $msg);
}
return $msg."\n";
}


if(isset($_GET['msg']) && isset($_GET['name'])){
$text = $_GET['msg'];
$name = $_GET['name'];
$text = stripslashes($text);
$text = filter($text);
$text = makeSmiley($text);
$f = fopen('msgs.txt', 'a');
fwrite($f, $name.": ".$text."");
fclose($f);
} else {
exit();
}
?>

Lenke til kommentar
Videoannonse
Annonse

if(isset($_GET['msg']) && isset($_GET['name'])){

$text = $_GET['msg'];

$name = $_GET['name'];

 

gjør om til:

 

$ipadresser = array('10.0.0.1', '10.0.0.2');

 

if(isset($_GET['msg']) && isset($_GET['name'])){

$text = $_GET['msg'];

foreach($ipadresse as $ipadresse) {

if ($_SERVER['REMOTE_ADDR'] == $ipadresse)

$admin = 1;

}

if ($admin == 1)

$name = '<strong style="font-weight:bold;">Adminz0r: ' . $_GET['name'] ' </strong>';

else $name = $_GET['name'];

 

da kommer det rød skrift og Adminzor foran navnet.

:)

Lenke til kommentar

Hei,

først: TUSEN TUSEN TUSEN TAKK!

 

Det ser ut som du har tenkt riktig..

 

Lurer imidlertid på om det fortsatt kan være en bug, da det nå ikke blir postet/dukker opp nye innlegg. Kommer ikke noen feilmelding, men det virker som om de ikke skrives til txt filen...

 

Har prøvd både med admin-ip og uten.

 

Clue?

Lenke til kommentar

Tror jeg fikk det til nå alikevel:

 

<?php
function makeSmiley($msg){
$file = file("smiley.txt");
for($i=0;$i<count($file);$i++){
$exp = explode('|', $file[$i]);
$msg = str_replace($exp[0], $exp[1], $msg);
}
return $msg;
}
function filter($msg){
$f = file("badwords.txt");
for($i=0;$i<count($f);$i++){
$bad_words = explode(',', $f[$i]);
}
foreach ($bad_words as $naughty){
 $msg = eregi_replace($naughty, "*****", $msg);
}
return $msg."\n";
}

if(isset($_GET['msg']) && isset($_GET['name'])){
$text = $_GET['msg'];
if ($REMOTE_ADDR == "90.333.68.8") 
$name = "<font color=yellow>Admin</font>";
else $name = $_GET['name'];
$text = stripslashes($text);
$text = filter($text);
$text = makeSmiley($text);
$f = fopen('msgs.txt', 'a');
fwrite($f, $name.": ".$text."");
fclose($f);
} else {
exit();
}
?>

 

Det jeg imidlertid ser nå, er at folk kan gi seg ut for å være admin ved å bruke HTML koder. Hvordan disabler jeg HTML koder i postingen?

Endret av tbaeck
Lenke til kommentar

Jeg endret koden litt slik at <, > osv. blir erstattet med < o.l.

 

(if-en jeg endra på)

if ($REMOTE_ADDR == "90.333.68.8")  {
$name = "<font color=yellow>Admin</font>";
} else {
$name = $_GET['name'];
$name = htmlentities($name);
}

 

(hele koden)

 

<?php
function makeSmiley($msg){
$file = file("smiley.txt");
for($i=0;$i<count($file);$i++){
$exp = explode('|', $file[$i]);
$msg = str_replace($exp[0], $exp[1], $msg);
}
return $msg;
}
function filter($msg){
$f = file("badwords.txt");
for($i=0;$i<count($f);$i++){
$bad_words = explode(',', $f[$i]);
}
foreach ($bad_words as $naughty){
$msg = eregi_replace($naughty, "*****", $msg);
}
return $msg."\n";
}

if(isset($_GET['msg']) && isset($_GET['name'])){
$text = $_GET['msg'];

if ($REMOTE_ADDR == "90.333.68.8")  {
$name = "<font color=yellow>Admin</font>";
} else {
$name = $_GET['name'];
$name = htmlentities($name);
}

$text = stripslashes($text);
$text = filter($text);
$text = makeSmiley($text);
$f = fopen('msgs.txt', 'a');
fwrite($f, $name.": ".$text."");
fclose($f);
} else {
exit();
}
?>

 

Har ikke fått testa det ut, men regner med at det virker. :ph34r:

 

Einar :)

Lenke til kommentar
Hei,

først: TUSEN TUSEN TUSEN TAKK!

 

Det ser ut som du har tenkt riktig..

 

Lurer imidlertid på om det fortsatt kan være en bug, da det nå ikke blir postet/dukker opp nye innlegg. Kommer ikke noen feilmelding, men det virker som om de ikke skrives til txt filen...

 

Har prøvd både med admin-ip og uten.

 

Clue?

7942593[/snapback]

 

ops ja.. glemte en bokstav i den ene variablelen :no:

dette scriptet gjør at du kan ha flere admin iper, men hvis ike du trenger det er det like smart å bruke et av de andre scriptene.

 

$ip = $_SERVER['REMOTE_ADDR'];
$ipadresser = array('10.0.0.1', '10.0.0.2');

if(isset($_GET['msg']) && isset($_GET['name'])){
$text = $_GET['msg'];
if (in_array($ip, $ipadresser))
$name = '<strong style="color:#f00;">Adminz0r: ' . $_GET['name'] ' </strong>';
else $name = $_GET['name'];

 

for å bruke scriptet uten å sende via URL'en kan du bruke POST.

 

edit; <strong style="font-weight:bold;"> OMG! :wallbash::wallbash:

Endret av Ståle
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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...