PHP

Version och inställningar

Klicka på Select PHP Version i kontrollpanelen under Extra features.

Om det är nödvändigt för att åstadkomma kompabilitet, så kan du ändra PHP -version. Det kan också hända att du måste försäkra dig om att de moduler ditt PHP -skript använder är aktiverade. Du kan göra dessa justeringar i PHP -selectorn.




Du har också möjlighet att tweaka lite andra parametrar under options, t.ex. maximal storlek på en fil som ska kunna tankas upp med ett php -skript.



Vad är PHP ?

PHP är ett skript som körs på serversidan. Istället för att koden till webbsidan levereras av en statisk HTML -sida, så ger PHP dig möjligheten att dynamiskt skapa HTML -koden för webbsidan. Vi kan t.ex. generera besöksstatistik på karlahosting dynamiskt. Nedan är senaste 30 dagarnas unika besök.

29
11
12
11
28
14
15
10
17
15
19
9
12
21
19
13
15
10
13
9
17
16
17
24
54
13
13
10
13
26
20


PHP kan också användas till andra praktiska saker, t.ex. leverera ett svar på ett AJAX -anrop eller t.ex. ta emot data från ett formulär.



Alla webbsidor som innehåller PHP -kod skall ges ändelsen .php. Då kommer webbservern se till att PHP -koden interpreteras på sidan innan webbsidan publiceras. Dessa PHP -filer ska inte ges någon speciell rättighet utan har samma filrättigheter som andra HTML -filer.

<?php
echo 'a= ' . $_GET["a"];
echo 'b= ' . $_GET["b"];
?>

Om vi sparar ovanstående 4 rader kod i en fil vi kallar phptest_1.php så får vi följande resultat: phptest_1.php?a=45&b=67



Exempel på PHP som använder GD -biblioteket

Av ovanstående bibliotek, så är t.ex. GD ett bibliotek för att procudera enkel grafik.

<?php

/*
 * Chart data
 */

$data = [
    'Jan' => 103,
    'Feb' => 24,
    'Mar' => 44,
    'Apr' => 14,
    'May' => 89,
    'Jun' => 147,
    'Jul' => 181,
    'Aug' => 172,
    'Sep' => 52,
    'Oct' => 106,
    'Nov' => 121,
    'Dec' => 76,
];

/*
 * Chart settings and create image
 */

// Image dimensions
$imageWidth = 700;
$imageHeight = 400;

// Grid dimensions and placement within image
$gridTop = 40;
$gridLeft = 50;
$gridBottom = 340;
$gridRight = 650;
$gridHeight = $gridBottom - $gridTop;
$gridWidth = $gridRight - $gridLeft;

// Bar and line width
$lineWidth = 1;
$barWidth = 20;

// Font settings
$font = 'OpenSans-Regular.ttf';
$fontSize = 10;

// Margin between label and axis
$labelMargin = 8;

// Max value on y-axis
$yMaxValue = 200;

// Distance between grid lines on y-axis
$yLabelSpan = 40;

// Init image
$chart = imagecreate($imageWidth, $imageHeight);

// Setup colors
$backgroundColor = imagecolorallocate($chart, 255, 255, 255);
$axisColor = imagecolorallocate($chart, 85, 85, 85);
$labelColor = $axisColor;
$gridColor = imagecolorallocate($chart, 212, 212, 212);
$barColor = imagecolorallocate($chart, 47, 133, 217);

imagefill($chart, 0, 0, $backgroundColor);

imagesetthickness($chart, $lineWidth);

/*
 * Print grid lines bottom up
 */

for($i = 0; $i <= $yMaxValue; $i += $yLabelSpan) {
    $y = $gridBottom - $i * $gridHeight / $yMaxValue;

    // draw the line
    imageline($chart, $gridLeft, $y, $gridRight, $y, $gridColor);

    // draw right aligned label
    $labelBox = imagettfbbox($fontSize, 0, $font, strval($i));
    $labelWidth = $labelBox[4] - $labelBox[0];

    $labelX = $gridLeft - $labelWidth - $labelMargin;
    $labelY = $y + $fontSize / 2;

    imagettftext($chart, $fontSize, 0, $labelX, $labelY, $labelColor, $font, strval($i));
}

/*
 * Draw x- and y-axis
 */

imageline($chart, $gridLeft, $gridTop, $gridLeft, $gridBottom, $axisColor);
imageline($chart, $gridLeft, $gridBottom, $gridRight, $gridBottom, $axisColor);

/*
 * Draw the bars with labels
 */

$barSpacing = $gridWidth / count($data);
$itemX = $gridLeft + $barSpacing / 2;

foreach($data as $key => $value) {
    // Draw the bar
    $x1 = $itemX - $barWidth / 2;
    $y1 = $gridBottom - $value / $yMaxValue * $gridHeight;
    $x2 = $itemX + $barWidth / 2;
    $y2 = $gridBottom - 1;

    imagefilledrectangle($chart, $x1, $y1, $x2, $y2, $barColor);

    // Draw the label
    $labelBox = imagettfbbox($fontSize, 0, $font, $key);
    $labelWidth = $labelBox[4] - $labelBox[0];

    $labelX = $itemX - $labelWidth / 2;
    $labelY = $gridBottom + $labelMargin + $fontSize;

    imagettftext($chart, $fontSize, 0, $labelX, $labelY, $labelColor, $font, $key);

    $itemX += $barSpacing;
}

/*
 * Output image to browser
 */

header('Content-Type: image/png');
imagepng($chart);
?>

Om vi sparar ovan kod i en fil som vi döper till gdchart.php, så ser det ut såhär: Exemplet ovan på en egen sida.

Formulär

Här följer ett formulärskript i PHP som du kan använda.

Du kanske gillar ett formulär på din hemsida för en enkel kontaktfunktion. Det kan se ut såhär.

Ärende

Text

Epostadress




HTML -Koden för detta formulär ser ut som nedan.

<form action="postmail.php" method="POST">

<b>Ärende</b><br/>
<select class="select" name="subjekt">
<option>Uppmuntran</option>
<option>Klagomål</option>
</select>
<br/>

<b>Text</b><br/>
<textarea name="text" style="height:200px;width:100%;">
</textarea>
<br/>

<b>Epostadress</b><br/>
<input type="edit" name="epost" style="width:250px;">
<br/><br/>

<input type="submit" value="Skicka"/>

</form>

När vi postar detta kommer postmail.php anropas tillsammans med alla fält som har name -variabel innanför form-taggen.


<?php
$sendformto = 'dinepost@dindoman.se';
$returnpage = 'http://dindoman.se';

if(isset($_POST['submit']))
{
	$subjekt = htmlspecialchars(stripslashes(trim($_POST['subjekt'])));
	$text = htmlspecialchars(stripslashes(trim($_POST['text'])));
	$epost = htmlspecialchars(stripslashes(trim($_POST['epost'])));
	if(preg_match("/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/", $epost) 
	&& strlen($text) != 0)
	{
		$message = "Formulär från: ".$epost."\n\n";		
		$message = $message.$text;
		$message = wordwrap($message,70);  
		mail($sendformto, "Formulär ".$subjekt, $message);
		header('Location: '.$returnpage);
		exit;
	}
	
	echo $subjekt."<br/>";
	echo $text."<br/>";
	echo $epost."<br/>";
}
?>