Gå til innhold

Åssen lager man et forum?


Gjest Slettet-aNZFa3

Anbefalte innlegg

Videoannonse
Annonse

Nå synes jeg noen burde hjelpe gutten istedenfor å bare si at alt er håpløst.

Jeg er verken erfaren eller utdannet innen programmering, men jeg skal prøve å hjelpe ham så godt jeg kan.

 

Kan du programmeringspråkene nogenlunde godt, er det VELDIG lett å sette opp et ENKELT forum. Jeg har laget et "forum", (det er vel egentlig ikke et forum, men en tråd der registrerte brukere kan legge inn innlegg, det er imidlertid ikke så vanskelig å utvide dette til et forum med forskjellige tråder.), det tok meg kun et par timer (jeg er ikke veldig god i php/mysql heller).

Du er nødt til å kunne litt php, og litt mysql, og selvfølgelig html. CSS er en fordel, men ingen nødvendighet.

 

MySQL:

 

Min løsning var:

En tabell med brukernes opplysninger og passord. (navn, brukernavn, passord, brukerid).

 

En tabell med alle brukernes innlegg. (postid, brukerid, innleggets innhold).

 

Det var mysql-biten min.

 

PHP/HTML:

En html-form der brukerne kan skrive inn opplysningene om seg selv, og passord og lignende.

 

En php-fil som legger opplysningene inn i databasen.

 

En innloggingsform i html og en php-fil som validerer brukernavn/passord og setter opp en session (les om sessions i google).

 

så en php-fil som leser innleggene fra databasen og gjør dem om til html.

 

en html-form der brukerne kan skrive inn et nytt innlegg og et php-script som legger innlegget inn i databasen.

 

Det var vel det.

 

Utvidelse til forum

dette er vel muligen ikke noen anbefalt måte å gjøre det på, men jeg tror det skulle funke allikevel.

 

Man lager en ny tabell tråder. Den inneholder trådens id, navn, brukeren som opprettet tråden sin id, dato og andre ting man måtte ønske.

Så kan man lage en ny kolonne i tabellen med innleggene, som sier hvilken tråd innleggene tilhører.

 

Så er det bare å lage et script som viser en oversikt over alle trådene og modifisere php-fila som viser fram innleggene slik at den viser innleggene fra en bestemt tråd

 

 

Her kommer kildkoden til mitt oppsett:

 

signup.php

Skjult tekst: (Marker innholdet i feltet for å se teksten):

<?
include("header.inc");
?>
<h2>Registrer deg</h2>
<form action="leggtilbruker.php" method=post>
<table>
<tr>
<td>Fornavn:</td>
<td><input type="text" name="formfornavn" size="20"></td>
</tr>
<tr>
<td>Etternavn:</td>
<td><input type="text" name="formetternavn" size="20"></td>
</tr>
<tr>
<td>Mailadresse:</td>
<td><input type="text" name="formmail" size="20"></td>
</tr>
<tr>
<td>Telefonnummer:</td>
<td><input type="text" name="formtlfnr" size="20"></td>
</tr>
<tr>
<td>Gatenavn og nr:</td>
<td><input type="text" name="formgatenavn" size="20"></td>
</tr>
<tr>
<td>Postnummer:</td>
<td><input type="text" name="formpostnummer" size="20"></td>
</tr>
<tr>
<td>Poststed:</td>
<td><input type="text" name="formpoststed" size="20"></td>
</tr>
<tr>
<td>Brukernavn:</td>
<td><input type="text" name="formbrukernavn" size="20"></td>
</tr>
<tr>
<td>Passord:</td>
<td><input type="password" name="formpassord" size="20"></td>
</tr>
<tr>
<td>Gjenta passord:</td>
<td><input type="password" name="formpassord2" size="20"></td>
</tr>
<tr>
<td></td>
<td><input type=submit value="Registrer"></td>
</tr>
</table>
</form>
<?
include("footer.inc");
?>

leggtilbruker.php

Skjult tekst: (Marker innholdet i feltet for å se teksten):

<?
include("header.inc");

$formfornavn = addslashes($formfornavn);
$formetternavn = addslashes($formetternavn);
$formmail = addslashes($formmail);
$formtlfnr = addslashes($formtlfnr);
$formgatenavn = addslashes($formgatenavn);
$formgatenummer = addslashes($formgatenummer);
$formpostnummer = addslashes($formpostnummer);
$formpoststed = addslashes($formpoststed);
$formbrukernavn = addslashes($formbrukernavn);
$formpassord = addslashes(crypt($formpassord, "pepper"));
$formpassord2 = addslashes($formpassord2);


include("mysqlcon.inc");

$query="insert into usertable (
nick,
passord,
fornavn,
etternavn,
telefon,
epost,
gatenavn,
postnr,
poststed
) values
('$formbrukernavn',
'$formpassord',
'$formfornavn',
'$formetternavn',
'$formtlfnr',
'$formmail',
'$formgatenavn',
'$formpostnummer',
'$formpoststed');";

$result=mysql_query($query);
if ($result)
{
if (mysql_affected_rows())
 {
 echo "<br><br><b>Gratulerer! Du har klart å lage en bruker!
 Gå <a href='logginn.php'>hit</a> for å logge inn</b>";
 }
}
echo "<br><br><br><br><br>";


include("footer.inc");
?>

login.inc

Skjult tekst: (Marker innholdet i feltet for å se teksten):

<form action="logginn.php" method=post>
<table>
<tr>
<td>Brukernavn:</td>
<td><input type="text" name="formbrukernavn" size="20"></td>
</tr>
<tr>
<td>Passord:</td>
<td><input type="password" name="formpassord" size="20"></td>
</tr>
<tr>
<td></td>
<td><input type=submit value="Logg inn"></td>
</tr>
</table>
<br>
</form>

logginn.php

Skjult tekst: (Marker innholdet i feltet for å se teksten):

<?
session_start();
include("header.inc");

?>
<br>
<img src="gui/logginn.gif"><br>
<br>
<?


if ($formpassord!=""||$formbrukernavn!="")
{
include("mysqlcon.inc");


$query="select * from bklassen.usertable where nick='".$formbrukernavn."';";

$result=mysql_query($query);

mysql_close();

@ $num_results=mysql_num_rows($result);

if ($num_results!=1)
$ugyldigbrukernavn=1;

if ($num_results==1)
{
$ektepassord=mysql_result($result, 0, "passord");
$userid=mysql_result($result, 0, "userid");
}

if ($ektepassord==$formpassord && $ugyldigbrukernavn==0)
{
$godkjentbrukernavn=$formbrukernavn;
session_register("godkjentbrukernavn");
session_register("userid");
}

if ($ektepassord!=$formpassord )
$feilpassord=1;

}



if(!session_is_registered("godkjentbrukernavn"))
{
echo "Noen av sidene er passordbeskyttet for å verne om sensitiv informasjon.<br>
Skriv inn brukernavn og passord i feltene under for å logge inn.<br><br>";
include("login.inc");
if ($ugyldigbrukernavn==1)
 echo "<b>Ugyldig brukernavn!</b>";
if ($feilpassord && $ugyldigbrukernavn=="")
 echo "<b>Feil passord!</b>";
}


if(session_is_registered("godkjentbrukernavn"))
{
?>
Innlogging gjennomført.. Du sendes nå videre til forumet<br>
<META HTTP-EQUIV="Refresh" CONTENT="1;URL=forum.php">
<?
}


include("footer.inc");
?>

loggut.php

Skjult tekst: (Marker innholdet i feltet for å se teksten):

<?
session_start();

include("header.inc");
?>

<h2>logger ut...</h2>

<META HTTP-EQUIV="Refresh" CONTENT="1;URL=nytt.php">
<?
echo $godkjentbrukernavn;
session_unregister("godkjentbrukernavn");
session_destroy();

include("footer.inc");
?>

forum.php

Skjult tekst: (Marker innholdet i feltet for å se teksten):

<?
include("header.inc");
if (session_is_registered("godkjentbrukernavn"))
{
?>

<br>
<img src="gui/forum.gif"><br>
<br>

<h3>Velkommen til det vidunderlige forumet</h3>
Velkommen til forumet, her har bare registrerte brukere adgang. Her kan man diskutere, spørre om ting, skriver perverse ting og til og med kaste skjellsord på hverandre.<br>
Forumet er under utvikling og mye rart kan skje her, er du en av de frustrerte hysterikerne som ikke finner den søte lille boksen man kan skrive i, så ligger den NEDERST på siden (det betyr at du må løfte den late langefingeren din og scrolle ned til bunnen av siden, ja)<br>
Så er det bare å skrive i vei!<br><br><br>
<?
include("mysqlcon.inc");

$query="select forum.kommentar, usertable.nick from forum, usertable where forum.userid=usertable.userid";

$result=mysql_query($query);

$num_results=mysql_num_rows($result);
$antallsider=(integer)($num_results/10);
if($num_results%10) $antallsider++;
if(!$sidetall) $sidetall=$antallsider;
$fraogmedpost=$sidetall*10-10;
$tilpost=$sidetall*10; //til og ikke med
if($tilpost>$num_results) $tilpost=$num_results;


//sidetallgreier
$sidetallhtml="<center>";
for ($j=1; $j <= $antallsider; $j++)
{
if($j!=$sidetall)
$sidetallhtml=$sidetallhtml."<a href='forum.php?sidetall=$j'>$j</a>\n";
else
$sidetallhtml=$sidetallhtml."<a href='forum.php?sidetall=$j'><u><b>$j</b></u></a>\n";
}
$sidetallhtml=$sidetallhtml."</center>\n";
echo $sidetallhtml."<br><br>\n\n";


for ($i=$fraogmedpost; $i < $tilpost; $i++)
{
$kommentar=mysql_result($result, $i, "forum.kommentar");
$kommentar=stripslashes($kommentar);
$brukernavn=mysql_result($result, $i, "usertable.nick");
$kommentar=nl2br($kommentar);
echo "Post nr. ".($i+1)."<br>\n"; //+1 fordi det ikke skal starte på null
       echo "<p><b>$brukernavn</b><br>\n";
echo $kommentar."</p><br><br>\n\n";
}


echo $sidetallhtml;
echo "<br>";

echo "<center>";
echo "<h3>Skriv i forumet</h3>";
include("forumform.inc");
echo "</center>";
}

else
//slem bruker!
include("fy.php");


include("footer.inc");
?>

mysqlcon.inc

Skjult tekst: (Marker innholdet i feltet for å se teksten):

<?
$counterfile = fopen("/../passord.txt", "r");
$correctPassword = fgets($counterfile, 100);
fclose($counterfile);

// connection information
$hostName = "localhost";
$userName = "buser";
$password = $correctPassword;
$dbName = "bklassen";

// make connection to database
mysql_pconnect($hostName, $userName, $password);

mysql_select_db("bklassen");
?>

forumform.inc

Skjult tekst: (Marker innholdet i feltet for å se teksten):

<form action="leggtilpost.php" method=post>
<textarea name="innhold" rows=6 cols=40></textarea>
<br>
<input type=submit value="Skriv i forumet">
</form>

 

Håper ikke dette bare forvirret deg, man må antageligvis være ganske lur for å klare å lese kildekoden min og forstå den, men jeg håper det hjalp deg litt på vei og at du forstår sånn ca. hva du skal gjøre for å lage deg et forum.

 

Dette er helt sikkert ikke den anbefalte måten å gjøre det, og koden min er sikkert full av bugs og hull, men systemet virker for meg og til dere andre, jeg har i det minste gjort et forsøk på å hjelpe trådstarter.

 

Når du skal lære deg php/mysql, kan jeg anbefale denne boka: Sams: Welling and Thomson, PHP and Mysql web development.

Jeg har lest litt over halve.

Lenke til kommentar
Gjest Slettet-aNZFa3

ok. så et nytt spm. som jeg har glemt :p hvilket program skal jeg bruke? funker det til Frontpage eller har ikke den scriptene innstallert?

Lenke til kommentar

Å bygge et funksjonelt forum selv er nærmest en umulig oppgave. Alle gode forum her i verden er blitt bygget opp gjennom communities. De aller fleste forum blir dermed tilbudt gratis til sluttbruker mot at det blir pekt tilbake til opphav.

 

Selv bruker jeg et ASP-basert forum som heter WebWizForum, skrevet av min store helt Borg og hans medarbeidere. Dette er det beste ASP-baserte forumet som er å oppdrive, og det er helt gratis.

 

Disse applikasjonene er lagt opp slik at du som ønsker å bruke det, kan laste opp hele forumet til egen server. Der kan du endre på en mengde innstillinger slik at du får tilpasset det ditt behov. Etter hvert vil du også få såpass erfaring at du kan begynne å modifisere kodene. På http://www.musikksmaken.com har jeg en modifisert utgave av WebWizForum som jeg har putlet med i snart 3 år. Så alt det står på er tid, engasjement og viljestyrke.

 

Et fantastisk bilbiotek over applikasjoner til hva du måtte ha behov for, finnes på http://hotscripts.com. Jeg har funnet utrolig mye bra der.

 

nahoy: Sikkerhet er viktig. Bruker du bombesikre filter som hindrer forumbrukeren å poste skadelig kode?

Endret av neitakk
Lenke til kommentar
nahoy: Sikkerhet er viktig. Bruker du bombesikre filter som hindrer forumbrukeren å poste skadelig kode?

7129692[/snapback]

 

Må vel innrømme at det ikke er bombesikkert. Men jeg bruker i det minste addslashes/stripslashes. Det er hvertfall mulig å skrive html, så det er mulig å poste litt skadelig kode, mulig det går an mer, men jeg kjenner alle brukerne mine, så jeg har ikke tatt det så veldig nøye.

Fantes det ikke en funksjon som fjerner html fra tekst?

 

andrenilsen:

Det eneste programmet jeg har brukt til å lage forumet mitt i er notepad, du trenger ikke noen spesielle programmer for å lage scriptene, kun en teksteditor.

Du må ha php (asp hvis du skal bruke neitakks ferdigforum) og mysql installert på serveren din.

Endret av nahoy
Lenke til kommentar

Slik ser deler av filteret ut i webwizguide (ikke nyeste versjon):

 

	'Remove malisous charcters from links and images
strInputEntry = Replace(strInputEntry, "document.cookie", ".", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "javascript:", "javascript ", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "vbscript:", "vbscript ", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "javascript :", "javascript ", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "vbscript :", "vbscript ", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "[", "", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "]", "", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "(", "", 1, -1, 1)
strInputEntry = Replace(strInputEntry, ")", "", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "{", "", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "}", "", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "<", "", 1, -1, 1)
strInputEntry = Replace(strInputEntry, ">", "", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "|", "", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "script", "script", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "SCRIPT", "SCRIPT", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "Script", "Script", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "script", "Script", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "object", "object", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "OBJECT", "OBJECT", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "Object", "Object", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "object", "Object", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "applet", "applet", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "APPLET", "APPLET", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "Applet", "Applet", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "applet", "Applet", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "embed", "embed", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "EMBED", "EMBED", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "Embed", "Embed", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "embed", "Embed", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "document", "document", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "DOCUMENT", "DOCUMENT", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "Document", "Document", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "document", "Document", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "cookie", "cookie", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "COOKIE", "COOKIE", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "Cookie", "Cookie", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "cookie", "Cookie", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "event", "event", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "EVENT", "EVENT", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "Event", "Event", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "event", "Event", 1, -1, 1)
strInputEntry = Replace(strInputEntry, "LINK", "LINK", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "Link", "Link", 1, -1, 0)
strInputEntry = Replace(strInputEntry, "link", "link", 1, -1, 1)

Lenke til kommentar
Det eneste programmet jeg har brukt til å lage forumet mitt i er notepad, du trenger ikke noen spesielle programmer for å lage scriptene, kun en teksteditor.

7129911[/snapback]

Jeg ville foreslått en editor med syntaks highlighting. Jeg er ikke så kjent med Windows, men har hørt at Notepad3 og Notepad++ er gode.

Lenke til kommentar
Gjest Slettet-aNZFa3

Når du skal lære deg php/mysql, kan jeg anbefale denne boka: Sams: Welling and Thomson, PHP and Mysql web development.

Jeg har lest litt over halve.

7120006[/snapback]

 

hvor får jeg kjøpt den boka?

Lenke til kommentar
nahoy: Sikkerhet er viktig. Bruker du bombesikre filter som hindrer forumbrukeren å poste skadelig kode?

7129692[/snapback]

 

Må vel innrømme at det ikke er bombesikkert. Men jeg bruker i det minste addslashes/stripslashes. Det er hvertfall mulig å skrive html, så det er mulig å poste litt skadelig kode, mulig det går an mer, men jeg kjenner alle brukerne mine, så jeg har ikke tatt det så veldig nøye.

Fantes det ikke en funksjon som fjerner html fra tekst?

7129911[/snapback]

htmlentities gjør < og > og andre tegn om til &verdi;, slik at de blir tolket som tekst av nettleseren og ikke en bit av koden, slik at de ikke gjør skade.

Ellers finnes det en populær funksjon som heter quote_magic eller noe slikt, bare søk etter den.

Du kan og bruke reg_exp og andre slike funksjoner, for å hindre posten å bli lagret om den inneholder "ulovlige" tegn.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...