Avatar billede proff Nybegynder
30. juli 2004 - 17:00 Der er 9 kommentarer

Hvordan laver jeg en funktion der analysere min kode?

Hej, er der nogen der kan forklare mig hvordan jeg "analysere" min kode.

Jeg har en chat, og hvis man skriver /kick brugernavn.
Så skal den tage "brugernavn" og lægge det i en variabel ved navn... userkick?

Er der nogen der forstår og kan hjælpe mig.


Altså noget i stil med:

if($message == "/kick brugernavn")
blabla, find ud af hvad brugernavn er og læg det i en variabel.
Avatar billede proff Nybegynder
30. juli 2004 - 17:01 #1
Håber der er nogen der kan hjælpe ;o)
Avatar billede Slettet bruger
30. juli 2004 - 21:19 #2
Noget i denne stil burde kunne hjælpe dig igang:

if(preg_match('/^\/(\w*)\s?(.*)$/',$message,$parsed){
  $command=$parsed[1];
  $parameter=$parsed[2];
} else {
  $command='normalchat';
  $parameter=$message;
}

switch ($command){
  case 'kick':
    // kode til at kicke en bruger.
    break;
  case 'normalchat':
    // kode til at skrive teksten som normalt.
    break;
  default:
    // Der er anvendt en ukendt kommando. Enten skriv en fejlbesked eller udskriv som normalchat.
}
Avatar billede proff Nybegynder
30. juli 2004 - 22:34 #3
Ja, det forstod jeg så ikke meget af.
Min nuværende kode er:

if($action=="send") {
if($mes) {
$select_info = mysql_query("SELECT rum,status,vaerelse FROM users WHERE(username='$username')");
$row_info = mysql_fetch_array($select_info);

$message = strtolower($mes);

if($message == "/ping") {
print "<script>document.getElementById('infoboks').style.visibility='visible';</script>";       
print "<script>parent.document.all['info'].innerHTML = 'Ping requested! $ping';</script>";

}
elseif($message == "/kick USERNAME") {

blabla. Her skal den finde ud af hvad username er for et ord.

} else {

mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('$message','$username','$til','".time()."','$row_info[rum]','$row_info[vaerelse]')");

print "<script>
parent.document.beskedform.mes.value='';
parent.say('$username','$mes');
</script>";
}
}
}
Avatar billede Slettet bruger
31. juli 2004 - 00:24 #4
Nu bliver jeg nysgerrig: Hvorfor må folk kun skrive med små bogstaver?

Men tilbage til det egentlige spørgsmål. Du er altså ikke ude efter en generel løsning til at analysere kommandoer og deres parametre, men vil bare have en til dette specifikke tilfælde. OK, den kommer her:

elseif(substr($message,0,6)=='/kick '){
  $kickuser=substr($message,6);
  // Her skriver du kode til at kicke brugeren.
} else {
Avatar billede proff Nybegynder
31. juli 2004 - 01:12 #5
hm, Har jeg en fejl? Det er nu meningen at det skulle være ligemeget om folk skrev med store ELLER små bogstaver..

substr($message,6);
Tager den så det ord der står efter 6 tegn?
Avatar billede Slettet bruger
31. juli 2004 - 02:31 #6
Denne linie laver hele beskeden om til små bogstaver, og det er den rettede udgave, du lægger i databasen, så...

$message = strtolower($mes);

Og ja, substr($message,6) er fra tegn nummer 6 til slut. (Nummerering starter ved 0.) Hvis du ønsker at splitte ved et mellemrum eller andet (så der kan være flere brugernavne eller lign.), så skal det gøres bagefter.
Avatar billede proff Nybegynder
03. august 2004 - 12:45 #7
Hej igen, og undskyld for min inaktivitet..

if($action=="send") {
if($mes) {
$select_info = mysql_query("SELECT rum,status,vaerelse FROM users WHERE(username='$username')");
$row_info = mysql_fetch_array($select_info);


if($mes == "/ping") {
print "<script>document.getElementById('infoboks').style.visibility='visible';</script>";       
print "<script>parent.document.all['info'].innerHTML = 'Ping requested! $ping';</script>";
print "<script>parent.document.beskedform.mes.value='';</script>";

}
elseif(substr($message,0,6)=='/goto'){
$rumrequest=substr($message,6);
"myaction.document.location = 'action.php?action=skiftrum&rum=$rumrequest'";
print "<script>parent.document.beskedform.mes.value='';</script>";

} else {

mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('$message','$username','$til','".time()."','$row_info[rum]','$row_info[vaerelse]')");

print "<script>
parent.document.beskedform.mes.value='';
parent.say('$username','$mes');
</script>";
}
}
}



1. Den skifter ikke rum
2. Man skriver jo /goto ID, Og den gør det kun hvis man skriver /goto?
Avatar billede Slettet bruger
03. august 2004 - 21:38 #8
Hint: Hvor lang er teksten, du tjekker på i denne linie?

elseif(substr($message,0,6)=='/goto'){

Og hvor lang er den i denne?

elseif(substr($message,0,6)=='/kick '){

Se godt efter forskellene, og du kan godt løse den. ;-)
Avatar billede Slettet bruger
03. august 2004 - 21:39 #9
Men hvis du vil have en generel løsning med mulighed for mange forskellige kommandoer, er mit første forslag bedre end disse tjek, der bliver specialfremstillet til hver enkelt kommando.
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