zoals ik eerder heb laten blijken ben ik best wel een newb op PHP etc etc... gebied, nou heb ik voor de lol is een shoutbox proberen te maken en die dan ook public te releasen, nou ben ik na een tijd een heel stuk verder gekomen en heb van alles toegevoegd... Hier het script:
De SQL query:
CREATE TABLE shoutbox (
id INT(10) not null AUTO_INCREMENT,
name VARCHAR(20),
message TEXT,
date VARCHAR(15),
ip VARCHAR(15),
PRIMARY KEY(id)
);
Het config.php bestand:
<?php
/////////////////////////////////////////////
//ShadowIllusions Shoutbox V0.6 config file//
/////////////////////////////////////////////
//Database information (required)
$dbhost = ".............."; //Usually localhost.
$dbname = "................."; //Database name.
$dbuser = "................."; //Database account username.
$dbpass = "..............."; //Database account password.
$dbtable = "shoutbox"; //Database table name.
//Language customization
$shoutname = "ShadowIllusions Shoutbox V0.6"; //The name of the shoutbox.
$nick = "ERROR: Please enter a nickname!"; //If no name is entered this will be the error message.
$comment = "ERROR: Please enter a message!"; //If no message is entered this will be the error message.
$code = "ERROR: Wrong security code!"; //If no security code is entered this will be the error message.
//Security Code customization
$sesname = "secCode"; //session variable name.
$fontsize = "5"; //font size (1 - 5).
$fontcolor = "000000"; //font color (RGB hexcode).
$bgcolor = "FFFFFF"; //background color (RGB hexcode).
$linecolor = "B0B0B0"; //line color (RGB hexcode).
//Other customizations
$date = date("m.d.y H:i"); //Change the date and time format, for more information: http://www.php.net/date.
$maxshouts = "10"; //Max shouts displayed.
//DO NOT CHANGE THINGS BELOW THIS LINE IF YOU HAVE NO PHP KNOWLEDGE!!!
$name = $_POST['name'];
$message = $_POST['message'];
$ip = $_POST['ip'];
?>
het index.php bestand:
<?php
/////////////////////////////////
//ShadowIllusions shoutbox V0.6//
/////////////////////////////////
include("shoutbox.php");
?>
<html>
<head>
<title>ShadowIllusions Shoutbox V0.6</title>
<script type="text/javascript" src="remember.js"></script>
</head>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="name" value="Name" maxlength="15" size="15" onClick=value="" class="memorize"><br/>
<input type="text" name="message" maxlength="40" value="Message" onClick=value=""><br/>
<img src="seccode.php" width="71" height="21"><br/>
<input type="text" name="secCode" maxlength="6" value="Code" size="8" onClick=value=""><br/>
<input type="submit" name="submit" value="Shout it!">
<input type="hidden" name="ip" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>">
</form>
</html>
het shoutbox.php bestand:
<?php
/////////////////////////////////
//Shadowillusions Shoutbox V0.6//
/////////////////////////////////
if(!session_id(secCode)) session_start();
require_once("config.php");
if ($_POST['submit']) {
if ($name == "" or $name == "Name") {
$error = "$nick";
}
else if ($message == "" or $message == "Message") {
$error = "$comment";
}
else if ($_POST['secCode'] != $_SESSION['secCode']) {
$error = "$code";
}
if ($error) {
?>
<SCRIPT LANGUAGE="JavaScript">
alert("<?=$error;?>")
</script>
<?php
}
else {
$db = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname) or die(mysql_error());
mysql_query("INSERT INTO $dbtable(name,message,date,ip) VALUES('$name','$message','$date','$ip')");
}
}
?>
<strong><?=$shoutname;?></strong><br>
<?php
$db = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname) or die(mysql_error());
$query = "SELECT * FROM $dbtable ORDER BY id DESC LIMIT $maxshouts";
$result = mysql_query($query);
while($r = mysql_fetch_array($result)) {
$name = $r['name'];
$name = strip_tags($name);
$message = $r['message'];
$message = strip_tags($message);
$date = $r['date'];
$date = strip_tags($date);
echo "<b><font size='2'>$date <br> $name: </font></b><br> $message <br>";
}
mysql_close($db);
?>
het remember.js bestand:
/////////////////////////////////
//ShadowIllusions Shoutbox V0.6//
//Copyright DynamicDrive.com//
/////////////////////////////////
var memoryduration="100 days" //How long should the name input be remembered
//DO NOT CHANGE THINGS BELOW THIS LINE IF YOU HAVE NO JAVASCRIPT KNOWLEDGE!!!
function setformobjects(){
var theforms=document.forms
memorizearray=new Array()
for (i=0; i< theforms.length; i++){
for (j=0; j< theforms[i].elements.length; j++){
if (theforms[i].elements[j].className.indexOf("memorize")!=-1 && theforms[i].elements[j].type=="text")
memorizearray[memorizearray.length]=theforms[i].elements[j]
}
}
var retrievedvalues=get_cookie("mvalue"+window.location.pathname)
if (retrievedvalues!=""){
retrievedvalues=retrievedvalues.split("|")
if (retrievedvalues[retrievedvalues.length-1]!=parseInt(memoryduration))
resetcookie("mvalue"+window.location.pathname)
else{
for (i=0; i<memorizearray.length; i++){
if (retrievedvalues[i]!="empty_value")
memorizearray[i].value=retrievedvalues[i]
}
}
}
}
function get_cookie(Name) {
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) { // if cookie exists
offset += search.length
end = document.cookie.indexOf(";", offset);
if (end == -1)
end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}
function resetcookie(id){
var expireDate = new Date()
expireDate.setDate(expireDate.getDate()-10)
document.cookie = id+"=;path=/;expires=" + expireDate.toGMTString()
}
function saveformvalues(){
var formvalues=new Array(), temp
for (i=0; i<memorizearray.length; i++){
temp=memorizearray[i].value!=""? memorizearray[i].value : "empty_value"
formvalues[formvalues.length]=escape(temp)
}
formvalues[formvalues.length]=parseInt(memoryduration)
formvalues=formvalues.join("|")
var expireDate = new Date()
expireDate.setDate(expireDate.getDate()+parseInt(memoryduration))
document.cookie = "mvalue"+window.location.pathname+"="+formvalues+"; path=/;expires=" + expireDate.toGMTString()
}
if (window.addEventListener)
window.addEventListener("load", setformobjects, false)
het seccode.php bestand:
<?php
/////////////////////////////////
//ShadowIllusions Shoutbox V0.6//
/////////////////////////////////
require_once("config.php");
error_reporting(E_WARNING);
if(function_exists('session_start')) session_start();
function convertRGB($color) {
$color = eregi_replace('[^0-9a-f]', '', $color);
return array(hexdec(substr($color, 0, 2)), hexdec(substr($color, 2, 2)), hexdec(substr($color, 4, 2)));
}
function createImage($text, $width, $height, $font = 5) {
global $fontcolor, $bgcolor, $linecolor;
if($img = @ImageCreate($width, $height)) {
list($R, $G, $B) = convertRGB($fontcolor);
$fontcolor = ImageColorAllocate($img, $R, $G, $B);
list($R, $G, $B) = convertRGB($bgcolor);
$bgcolor = ImageColorAllocate($img, $R, $G, $B);
list($R, $G, $B) = convertRGB($linecolor);
$linecolor = ImageColorAllocate($img, $R, $G, $B);
ImageFill($img, 0, 0, $bgcolor);
for($i = 0; $i <= $width; $i += 5) {
@ImageLine($img, $i, 0, $i, $height, $linecolor);
}
for($i = 0; $i <= $height; $i += 5) {
@ImageLine($img, 0, $i, $width, $i, $linecolor);
}
$hcenter = $width / 2;
$vcenter = $height / 2;
$x = round($hcenter - ImageFontWidth($font) * strlen($text) / 2);
$y = round($vcenter - ImageFontHeight($font) / 2);
ImageString($img, $font, $x, $y, $text, $fontcolor);
if(function_exists('ImagePNG')) {
header('Content-Type: image/png');
@ImagePNG($img);
}
else if(function_exists('ImageGIF')) {
header('Content-Type: image/gif');
@ImageGIF($img);
}
else if(function_exists('ImageJPEG')) {
header('Content-Type: image/jpeg');
@ImageJPEG($img);
}
ImageDestroy($img);
}
}
srand((double) microtime() * 1000000);
$secCode = '';
for($i = 0; $i < 6; $i++) $secCode .= rand(0, 9);
$_SESSION[$sesname] = $secCode;
createImage($secCode, 71, 21, $fontsize);
?>
de shoutbox geheel: http://shadow.mygamesonline.org/shouttest/
Mijn vraag is nu: Zien jullie dingen die verbeterd kunnen worden met een voorbeeldje zodat ik mijn PHP skill kan verhogen en zuiverder code kan scripten.
EDIT: BTW die $ip variable heb ik nog niet afgemaakt want ik wil een admin pagina maken voor de shoutbox zodat ik IP's kan bannen...
Bedankt!