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.
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/>";
}
?>