---
title: "Byta språk"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/180917-byta-språk"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Inferis"
published: "2009-10-24T20:22:51.000Z"
updated: "2009-11-07T12:59:48.000Z"
replies: 22
views: 657
page: 1
pages: 2
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/180917-byta-språk"
---

# Byta språk

_Sida 1 av 2._

## #1 — Inferis, 2009-10-24T20:22Z

Testar ett script för en chat.
Går det att skriva om det till classic asp?

```
<?php

define ('DBPATH','localhost');
define ('DBUSER','root');
define ('DBPASS','password');
define ('DBNAME','chat');

session_start();

global $dbh;
$dbh = mysql_connect(DBPATH,DBUSER,DBPASS);
mysql_selectdb(DBNAME,$dbh);

if ($_GET['action'] == "chatheartbeat") { chatHeartbeat(); } 
if ($_GET['action'] == "sendchat") { sendChat(); } 
if ($_GET['action'] == "closechat") { closeChat(); } 
if ($_GET['action'] == "startchatsession") { startChatSession(); } 

if (!isset($_SESSION['chatHistory'])) {
	$_SESSION['chatHistory'] = array();	
}

if (!isset($_SESSION['openChatBoxes'])) {
	$_SESSION['openChatBoxes'] = array();	
}

function chatHeartbeat() {
	
	$sql = "select * from chat where (chat.to = '".mysql_real_escape_string($_SESSION['username'])."' AND recd = 0) order by id ASC";
	$query = mysql_query($sql);
	$items = '';

	$chatBoxes = array();

	while ($chat = mysql_fetch_array($query)) {

		if (!isset($_SESSION['openChatBoxes'][$chat['from']]) && isset($_SESSION['chatHistory'][$chat['from']])) {
			$items = $_SESSION['chatHistory'][$chat['from']];
		}

		$chat['message'] = sanitize($chat['message']);

		$items .= <<<EOD
					   {
			"s": "0",
			"f": "{$chat['from']}",
			"m": "{$chat['message']}"
	   },
EOD;

	if (!isset($_SESSION['chatHistory'][$chat['from']])) {
		$_SESSION['chatHistory'][$chat['from']] = '';
	}

	$_SESSION['chatHistory'][$chat['from']] .= <<<EOD
						   {
			"s": "0",
			"f": "{$chat['from']}",
			"m": "{$chat['message']}"
	   },
EOD;
		
		unset($_SESSION['tsChatBoxes'][$chat['from']]);
		$_SESSION['openChatBoxes'][$chat['from']] = $chat['sent'];
	}

	if (!empty($_SESSION['openChatBoxes'])) {
	foreach ($_SESSION['openChatBoxes'] as $chatbox => $time) {
		if (!isset($_SESSION['tsChatBoxes'][$chatbox])) {
			$now = time()-strtotime($time);
			$time = date('g:iA M dS', strtotime($time));

			$message = "Sent at $time";
			if ($now > 180) {
				$items .= <<<EOD
{
"s": "2",
"f": "$chatbox",
"m": "{$message}"
},
EOD;

	if (!isset($_SESSION['chatHistory'][$chatbox])) {
		$_SESSION['chatHistory'][$chatbox] = '';
	}

	$_SESSION['chatHistory'][$chatbox] .= <<<EOD
		{
"s": "2",
"f": "$chatbox",
"m": "{$message}"
},
EOD;
			$_SESSION['tsChatBoxes'][$chatbox] = 1;
		}
		}
	}
}

	$sql = "update chat set recd = 1 where chat.to = '".mysql_real_escape_string($_SESSION['username'])."' and recd = 0";
	$query = mysql_query($sql);

	if ($items != '') {
		$items = substr($items, 0, -1);
	}
header('Content-type: application/json');
?>
{
		"items": [
			<?php echo $items;?>
        ]
}

<?php
			exit(0);
}

function chatBoxSession($chatbox) {
	
	$items = '';
	
	if (isset($_SESSION['chatHistory'][$chatbox])) {
		$items = $_SESSION['chatHistory'][$chatbox];
	}

	return $items;
}

function startChatSession() {
	$items = '';
	if (!empty($_SESSION['openChatBoxes'])) {
		foreach ($_SESSION['openChatBoxes'] as $chatbox => $void) {
			$items .= chatBoxSession($chatbox);
		}
	}

	if ($items != '') {
		$items = substr($items, 0, -1);
	}

header('Content-type: application/json');
?>
{
		"username": "<?php echo $_SESSION['username'];?>",
		"items": [
			<?php echo $items;?>
        ]
}

<?php

	exit(0);
}

function sendChat() {
	$from = $_SESSION['username'];
	$to = $_POST['to'];
	$message = $_POST['message'];

	$_SESSION['openChatBoxes'][$_POST['to']] = date('Y-m-d H:i:s', time());
	
	$messagesan = sanitize($message);

	if (!isset($_SESSION['chatHistory'][$_POST['to']])) {
		$_SESSION['chatHistory'][$_POST['to']] = '';
	}

	$_SESSION['chatHistory'][$_POST['to']] .= <<<EOD
					   {
			"s": "1",
			"f": "{$to}",
			"m": "{$messagesan}"
	   },
EOD;

	unset($_SESSION['tsChatBoxes'][$_POST['to']]);

	$sql = "insert into chat (chat.from,chat.to,message,sent) values ('".mysql_real_escape_string($from)."', '".mysql_real_escape_string($to)."','".mysql_real_escape_string($message)."',NOW())";
	$query = mysql_query($sql);
	echo "1";
	exit(0);
}

function closeChat() {

	unset($_SESSION['openChatBoxes'][$_POST['chatbox']]);
	
	echo "1";
	exit(0);
}

function sanitize($text) {
	$text = htmlspecialchars($text, ENT_QUOTES);
	$text = str_replace("\n\r","\n",$text);
	$text = str_replace("\r\n","\n",$text);
	$text = str_replace("\n","<br>",$text);
	return $text;
}
```

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

## #2 — Inferis, 2009-10-25T11:19Z

Det fungerar alltså inte att göra så?

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

## #3 — nitro2k01, 2009-10-25T11:29Z

Funkar inte att göra hur då?
I regel går det alltid att skriva om kod, men du ställer ju inte en specifik fråga utan visar bara upp ett stycke kod och undrar om det går att översätta. 
Om du inte kan ASP, lär dig lite om ASP. Om du stöter på patrull och har specifika frågor, kom tillbaka och fråga om dessa, så är chansen nog större att få ett svar.

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

## #4 — Inferis, 2009-10-25T12:29Z

Jag kan lite asp, men noll om php.
Förstår lite vad php gör i koden, men långt ifrån alla ställen.
Är detta php eller blir det en utskrift? Har inte php alltid avslutningstaggar?

```
	}
header('Content-type: application/json');
?>
{
		"items": [
			<?php echo $items;?>
        ]
}

<?php
			exit(0);
}
```

Förtydligande:
Det som är mellan ?\> och där \<?php börjar igen...

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

## #5 — Inferis, 2009-10-25T12:31Z

Är detta något som skrivs ut för javascriptet? Eller är det någon funktion i php?

```
	echo "1";
	exit(0);
```

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

## #6 — Inferis, 2009-10-25T12:36Z

Är EOD; samma som End if?

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

## #7 — MickeA.com, 2009-10-25T12:36Z

> **[Inferis skrev:](https://www.webforum.nu/p/1485574)**
>
> Är detta något som skrivs ut för javascriptet? Eller är det någon funktion i php?
>
>
> ```
> 	echo "1";
> 	exit(0);
> ```

Det där skriver ut "1" i webbläsaren och *exit* innebär att scriptet slutar att exekveras. Översatt till asp skulle det bli:

```
Response.Write("1")
Response.End
```

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

## #8 — MickeA.com, 2009-10-25T12:38Z

> **[Inferis skrev:](https://www.webforum.nu/p/1485575)**
>
> Är EOD; samma som End if?

> **nitro2k01 skrev:**
>
> Om du inte kan ASP, lär dig lite om ASP. Om du stöter på patrull och har specifika frågor, kom tillbaka och fråga om dessa, så är chansen nog större att få ett svar.

Som sagt.. overkill att be någon översätta en hel applikation, lär dig PHP eller leta reda på något som redan är ASP.

Skriver du 200 som frågor om samma script här lär du inte få någon hjälp.

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

## #9 — nitro2k01, 2009-10-25T12:39Z

PHP har nästan alltid avslutningstaggar. Man kan strunta i att sätta ut avslutningstaggen sist i en fil för att försäkra sig om att man inte får med skräptecken, typ mellanslag och radbrytningar. (Bra om man vill skicka en binärfil från ett PHP-skript, samt även för include-filer med bara kod i, av samma anledning)

Men det är dock inte det du ser i koden ovan, även om den metoden verkar användas på slutet av filen. Den kan se lite rörig ut, men det du ser utanför är JSON-kodad data som ser lite ut som PHP. För att förtydliga: Nedan är det som ligger innanför PHP-taggarna rött och det som ligger utanför grönt.

```
[red]	}
header('Content-type: application/json');
?>[/red]
[blue]{
		"items": [[/blue]
			[red]<?php echo $items;?>[/red]
[blue]        ]
}
[/blue]
[red]<?php
			exit(0);
}
[/red]
```

Med andra ord, $items skrivs ut i mitten av JSON-data. JSON är ett sätt att koda data, som liknar XML i funktion, men Javascript i utseende. (Koden kan till och med köras korrekt som Javascript om man känner för det.)

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

## #10 — nitro2k01, 2009-10-25T12:44Z

> **[Inferis skrev:](https://www.webforum.nu/p/1485575)**
>
> Är EOD; samma som End if?

Nej. Det du ser är en inmatning av en sträng med flera rader. \<\<\< påbörjar inmatningen, det första EOD definierar vilken sträng som ska användas för att markera slutet av inmatningen. Det andra EOD't gör just detta. 

För övrigt, $items .= "banan"; är likvärdigt med $items = $items . "banan";
Koden används för att foga samman strängar. (Det har man en punkt till istället för + som i vissa andra språk.)

```
	$items .= <<<EOD
					   {
			"s": "0",
			"f": "{$chat['from']}",
			"m": "{$chat['message']}"
	   },
EOD;
```

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

## #11 — Inferis, 2009-10-25T12:58Z

Tack nitro2k01! 
Det där med punkt istället för + hade jag nog aldrig listat ut.

Men vad gör detta?

```
if ($_GET['action'] == "chatheartbeat") { chatHeartbeat(); }
```

Är $\_GET samma som request.form? Varför dubbla ==?

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

## #12 — MickeA.com, 2009-10-25T13:00Z

Nej, *$\_GET\[\]* är samma som *Request.Querystring()*.. Raden gör så att funktionen *chatHeartbeat* körs om variabeln *action* är lika med *chatheartbeat*...

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

## #13 — Inferis, 2009-10-25T13:04Z

Av ren nyfikenhet, hur ser då Request.form("") ut?

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

## #14 — MickeA.com, 2009-10-25T13:05Z

*$\_POST\[\]*

Återigen, lär dig grunderna på egen hand, sen kan du ställa frågor om enskilda saker. Finns obegränsat med information på nätet, en bra start är t.ex. <https://www.php.net> eller <https://www.google.com>

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

## #15 — Inferis, 2009-10-25T13:08Z

> **[MickeA.com skrev:](https://www.webforum.nu/p/1485582)**
>
> Raden gör så att funktionen *chatHeartbeat* körs om variabeln *action* är lika med *chatheartbeat*...

Det verkar inte finnas else och end if?

```
Men if ($_GET['action'] == "chatheartbeat") { chatHeartbeat(); }
```

är samma som

```
if request,querystring("action") = "chatheartbeat" Then
call function
End if
```

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

## #16 — Inferis, 2009-10-25T13:09Z

Kollade runt på nybörjarsidor för php, men har tyvärr ingenstans att testa koden.

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

## #17 — MickeA.com, 2009-10-25T13:12Z

Okej.. jag provar igen, ser du vad det står nu?

> **[MickeA.com skrev:](https://www.webforum.nu/p/1485584)**
>
> Återigen, lär dig grunderna på egen hand, sen kan du ställa frågor om enskilda saker. Finns obegränsat med information på nätet, en bra start är t.ex. <https://www.php.net> eller <https://www.google.com>

Det är alltså inte för att vara taskig, men det kommer inte bli någor (bra) resultat om du frågar vad varje rad gör och sen sätter ihop något eget av det.

Börja här:
<http://www.phpportalen.net/school.php>

När du fått grepp om grunderna kan du som sagt återkomma och jag lovar att någon då hjälper dig.

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

## #18 — MickeA.com, 2009-10-25T13:13Z

> **[Inferis skrev:](https://www.webforum.nu/p/1485587)**
>
> Kollade runt på nybörjarsidor för php, men har tyvärr ingenstans att testa koden.

Här:
<http://www.wampserver.com/en/>

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

## #19 — nitro2k01, 2009-10-25T13:26Z

Jag instämmer med Micke, lär dig PHP först, sen försök skriva och/eller förstå kod. Sen är den chat-koden, som du kanske har kommit på, inget bra nybörjarexempel. Den använder sig av mer udda egenheter i språket, har en virrig indentering skriver till råge på allt ut JSON-kod som blandas in mitt i allting för att öka på förvirringen.

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

## #20 — Inferis, 2009-10-25T13:27Z

Tack Micke!

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

---

Tråden på webben: https://www.webforum.nu/amne/php/180917-byta-språk  
Nästa sida: https://www.webforum.nu/amne/php/180917-byta-språk/page2.md
