Thomas. Skrevet 23. desember 2007 Del Skrevet 23. desember 2007 Hei, lurer på om det er mulig å lage et flat fil forum ? Er det bedre enn mysql-basert forum ? Lenke til kommentar
Arne Skrevet 23. desember 2007 Del Skrevet 23. desember 2007 Ja, det er mogleg. Men eg trur ikkje det ville vere så lurt. Eg har ikkje dokumentasjon på det, men det er sikkert treigare, og det er lettare at det blir surr, om du forstår. ...sidan alle_forum_bruker mysql, så går eg ut frå at det er betre, om det besvarer spørsmålet ditt. Dessutan er det jo så mykje enklare med databaser! Og meir ryddigt! Lenke til kommentar
grimjoey Skrevet 23. desember 2007 Del Skrevet 23. desember 2007 alt som kan lages med databaser kan lages med flatfiler. men det kan aldri bli like effektivt. du kan skrive din egen databasemotor i php, men php er ikke veldig egnet til det etter hva jeg vet. dersom det ikke er veldig mange brukere og veldig mye data greier det seg med flatfil. men det hadde for eksempel vært en dårlig ide om dette forumet brukte flatfiler som database. Lenke til kommentar
Martin A. Skrevet 23. desember 2007 Del Skrevet 23. desember 2007 Faktisk så bruker diskusjon.no veldig mye flatfiler Dog bare som cache. Det å bygge et helt forum på flatfiler er uansett ingen god idé. Men tror du at du har nok kunnskap til å lage et eget forum da? Lenke til kommentar
grimjoey Skrevet 23. desember 2007 Del Skrevet 23. desember 2007 Mener du meg eller php_user? Lenke til kommentar
Thomas. Skrevet 23. desember 2007 Forfatter Del Skrevet 23. desember 2007 Er jo ikke vanskelig å lage et helt simpelt Som går på mysql.. Lenke til kommentar
Martin A. Skrevet 23. desember 2007 Del Skrevet 23. desember 2007 Det er det du tror, helt til du starter på prosjektet. Ut i fra dine tidligere tråder kan jeg garantere at du langt ifra har nok kompetanse og erfaring til å lage et forum. Lenke til kommentar
grimjoey Skrevet 23. desember 2007 Del Skrevet 23. desember 2007 (endret) Jeg tror det er et brukbart projekt. php_user vil lære en god del underveis. database tabellene kan se slik ut: CREATE TABLE forum_topic (id INT(11) NOT NULL DEFAULT NULL PRIMARY KEY AUTO_INCREMENT, topic_id INT(11), topic VARCHAR(255) NOT NULL, created DATETIME NOT NULL, changed DATETIME NOT NULL); feltet topic_id er for å underkategorisere topics. du kan ha for eksempel: id topic_id topic created changed 1 null 'Programmering' 19:46:00,23.12.07 19:46:00,23.12.07 2 1 'PHP' 19:47:00,23.12.07 19:47:00,23.12.07 som vil si at topic 2 er underkategori av topic en. altså i dette tilfellet Programmering -> PHP CREATE TABLE forum_post (id INT(11) NOT NULL DEFAULT NULL PRIMARY KEY AUTO_INCREMENT, post_id INT(11), user_id INT(11) NOT NULL, topic_id INT(11) NOT NULL, subject VARCHAR(255) NOT NULL, post TEXT NOT NULL, created DATETIME NOT NULL, changed DATETIME NOT NULL); feltet post_id gjør det samme som ovenfor når det gjelder poster. id post_id user_id topic_id subject post created changed 1 null 1 2 'Jeg lurer...' 'Hvordan ...' 19:48:00,23.12.07 19:48:00,23.12.07 1 1 2 null 'Re: Jeg lurer' 'Da gjør du.' 19:49:00,23.12.07 19:49:00,23.12.07 post_id = null indikerer at første post er en hovedpost post_id = 1 indikerer at andre post er en svar post til post 1 topic_id i post 1 indikerer at posten hører til topic 2 i tillegg trenger man brukerhåndtering. edit: Jeg har fått intrykk av at php_user er ganske nybegynner når det gjelder programmering. Men jeg har også fått inntrykk av at han er en av de som har mest lyst og vilje til å lære. Dette kommer man fort ganske langt med etter min erfaring. Vertfall dersom man får støtte og hjelp fra folk med mer erfaring. Endret 23. desember 2007 av grimjoey Lenke til kommentar
BigJackW Skrevet 23. desember 2007 Del Skrevet 23. desember 2007 Det å lære PHP skjer nokk ikke sånn over natten dessverre. Anbefaler trådstarter å sette seg inn i diverse funksjoner (hvordan man bruker dem osv), samt sette seg inn i sikkerhet. <-- Denne delen er en av de viktigste. Du vil ikke bli utsatt for XSS, sql-injections osv. Lenke til kommentar
grimjoey Skrevet 23. desember 2007 Del Skrevet 23. desember 2007 (endret) det du stort sett trenger fra php er: mysql_connect(), mysql_select_db(), mysql_query(), mysql_fetch_row(), if(), foreach(), while(), for(), $_GET, $_POST og echo(). mysql: du må kunne CREATE, SELECT, INSERT og UPDATE syntaks i SQL. en god ide å lage egen bruker og lære seg GRANT syntaks. sikkerhet: et par småtips om relevant sikkerhet. all informasjon brukeren har kontroll over må valideres. det finnes et par enkle måter å gjøre dette når det gjelder mysql queries. forventer du et tall kan du bruke (int)$variabelnavn for å hindre SQL-injection. forventer du tekst må du bruke mysql_real_escape_string(). denne kan være litt vrien dersom serveren automatisk escaper all input (magic quotes). en løsning på dette er å lage en funksjon som sjekker om magic quotes er skrudd på og gjør nødvendige endringer. function my_escape($msg) { if (get_magic_quotes_gpc()) { // returnerer TRUE hvis serveren autoescaper input $msg = stripslashes($msg); // fjerner i så tilfelle alle slashes } $msg = mysql_real_escape_string($msg); // escaper string i henhold til mysql $msg = "'".$msg."'"; // legger til annførselstegn return $msg; } praktisk eksempel: $result = mysql_query('SELECT * FROM users WHERE username = '.$_GET['username'].';'); bør være: $result = mysql_query('SELECT * FROM users WHERE username = '.my_escape($_GET['username']).';'); --- $result = mysql_query('SELECT * FROM users WHERE id = '.$_GET['id'].';'); bør være: $result = mysql_query('SELECT * FROM users WHERE id = '.(int)$_GET['id'].';'); --- dette vil hindre SQL-injection. sql-injection er når noen skriver inn SQL kommandoer i inputs for å lure skriptet ditt til å godkjenne falsk bruker eller vise informasjon fra databasen. XSS eller cross site scripting har jeg ikke peiling på dessverre. edit: leste litt om xss nå. det som gjelder er å hindre brukerene å skrive html/javascript kode i poster. dette kan gjøres ved å implementere et eget kode system som de fleste forum, i tillegg til å bytte ut alle < med < og alle > med > Endret 24. desember 2007 av grimjoey Lenke til kommentar
Thomas. Skrevet 23. desember 2007 Forfatter Del Skrevet 23. desember 2007 Takk for all hjelpen grimjoey Skal begynne å programere nå! Lenke til kommentar
Thomas. Skrevet 23. desember 2007 Forfatter Del Skrevet 23. desember 2007 Bombe! Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/110mb.com/s/u/p/p/o/r/t/-/support-u/htdocs/FORUM/k.php on line 24 Lenke til kommentar
grimjoey Skrevet 23. desember 2007 Del Skrevet 23. desember 2007 (endret) lag en funksjon: function my_query($msg) { $result = mysql_query($msg) or die(mysql_error()); return $result } så skriver du: $result = my_query('blablaquery'); $array = mysql_fetch_array($result); edit: feilmeldingen tyder på at det er noe galt med sql queriet ditt. dette kan man se nermere på ved å ha: $result = mysql_query(...) or die(mysql_error()); det er det samme som: if (!$result = mysql_query(...)) die(mysql_error()); Endret 23. desember 2007 av grimjoey Lenke til kommentar
Thomas. Skrevet 23. desember 2007 Forfatter Del Skrevet 23. desember 2007 Hvordan henter jeg ut kun feltet topic_id i mysql databasn? Lenke til kommentar
Martin A. Skrevet 23. desember 2007 Del Skrevet 23. desember 2007 (endret) Evt denne //---------------- // Debug constant // Set to 1 to enable debugging //-------------- define( 'DEBUG', 0 ); function query( $query, $force_debug='0' ) { if( DEBUG == 1 or $force_debug == 1 ) { mysql_query( $query ) or die( "<textarea>" . mysql_error() . "</textarea>" ); } else { @mysql_query( $query ); // @ kan selvfølgelig sløyfes } } query( "SELECT bar FROM foo" ); // Ingen filmeldinger vises query( "SELECT bar FROM foo", 1 ); //Feilmelding vises om det er noe feil i spørringen define( 'DEBUG', 0 ); bør ligge i en sentral fil som inkluderes overalt. config.php feks. For å hente ut et felt spesifiserer du feltene etter "SELECT". Feks; SELECT topic_id FROM topics WHERE something; SELECT topic_id, starter_id, title FROM topics WHERE something; Endret 23. desember 2007 av M4rTiN Lenke til kommentar
Thomas. Skrevet 23. desember 2007 Forfatter Del Skrevet 23. desember 2007 Nå får jeg feil, altså ser ingen feil jeg.. Ser du den?: <?php if (isset($_POST['ok'])) { # | MYSQL INNSTILLINGER | # $server = "**"; $dbnavn = "**"; $dbpass = "**"; $dbtable = "**"; # | KOBLER TIL | # mysql_connect($server, $dbnavn, $dbpass) or die (mysql_error()); mysql_select_db($dbtable) or die (mysql_error()); $topic_id=$_POST['topic_id']; $topic=$_POST['topic']; $tut=$_POST['tut']; $datetime=date("d/m/y h:i:s"); $sql = "INSERT INTO forum_topic2(topic_id, topic, tut, datetime) VALUES('$topic_id','$topic','$tut','$datetime')"; $resultat = mysql_query($sql); if($resultat) { echo "Velykket!<br>"; echo "<a href=k.php>Trykk her for å se det nye forumet!</a>"; } else { echo "Noe feil skjedde"; } mysql_close(); } ?> <form action="<?php echo $_SERVER['php_self']; ?>" method="post"> Tittel:<br /> <input type="text" name="topic_id" /><br /> Forklaring til posten: (tekst under tittelen)<br /> <input type="text" name="topic" /><br /> Post: <textarea cols="30" rows="10" name="tut"></textarea><br /> <input type="submit" value="Send" name="ok" /> </form> Lenke til kommentar
Arne Skrevet 23. desember 2007 Del Skrevet 23. desember 2007 Kan du poste feilmeldinga? Lenke til kommentar
Thomas. Skrevet 23. desember 2007 Forfatter Del Skrevet 23. desember 2007 Noe feil skjedde Lagt inn egen error melding Lenke til kommentar
jokkakim Skrevet 23. desember 2007 Del Skrevet 23. desember 2007 så fjern den å post den "orginale" da ? Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå