PDA

Volledige versie bekijken : script zodat eigenaar zelf iets kan toevoegen


XA4
%Europe/Berlin %469 %2005, 11:15
Iemand vroeg mij onlangs of het volgende mogelijk was:
hij heeft een website, maar zou graag zelf nieuws bijvoegen. Dit hoeft niet met prentjes en dergelijke te zijn, maar gewoon een stukje tekst.
Hij kent zelf niets van HTML en dergelijke, dus het zou iets heel eenvoudig moeten zijn.

Dus ik wil er eigenlijk voor zorgen dat hij naar een pagina surft (van zijn website, maar waar niemand anders hoeft te komen) en daar in een tekstvak zijn tekst ingeeft. Na het versturen, komt deze tekst dan op zijn website bij het nieuws terecht.

Ik heb al wat rondgekeken, maar de meeste scripts die ik tegenkwam waren niet zo eenvoudig in het gebruik en hadden de mogelijkheid om bezoekers reacties te laten geven op deze nieuwsberichten. En dat is dus allemaal niet nodig. Hoe minder mogelijkheden en functies, hoe beter. Indien mogelijk wel een of andere beveiliging zodat er niemand "na enig zoekwerk" op de pagina komt met het tekstvak en zo heel de nieuws-afdeling kan volschrijven...

Alvast bedankt

Het is een website met hosting, dus er kan gebruik gemaakt worden van php (maar daar ken ik zelf zeer weinig van)

w00
%Europe/Berlin %506 %2005, 12:09
Ja dat is zeker goed mogelijk. Het is alleen belangerijk dat die hosting ook MySQL heeft want de meeste hostings staan het niet toe om een textbestand te creeren via de php taal anders zou dat ook nog een optie kunnen zijn.
Het is dat ik zo weg moet anders had ik een simpel voorbeeld gemaakt. Misschien dat iemand me voor is anders doe k het dalijk nog wel.

XA4
%Europe/Berlin %531 %2005, 12:44
w00 alvast bedankt voor de reactie.
MySQL wordt inderdaad ook ondersteund.

De woorden "een simpel voorbeeld" klinken mij al heel goed in de oren (aangezien ik zelf weinig van scripting ken) :D

Het is niet zo dat dat vandaag nog moet werken.
Hoe sneller ik het heb, hoe sneller ik het kan uittesten, maar dat mag evengoed later deze week zijn. Ik had graag eind deze week een antwoord gegeven aan die persoon, vandaar. En als ik dat ineens zou kunnen laten zien, zou dat natuurlijk geweldig zijn.

w00
%Europe/Berlin %541 %2005, 12:59
Nou hier komt je voorbeeld. Ik heb nog geen beveiliging eraan toegevoegd. Als je niet zo goed bent in php is het denk ik makelijker als je alleen het toevoegen een uitlezen eerst goed bekijkt.
Wat je wel moet doen om dit te testen is een database maken en met de volgende velden in een tabel.

id, moet auto increment zijn en primary key.
titel, varchar(128)
bericht, TEXT.

Als het goed is zit bij het hosting pakket ook phpmyadmin waar je dit dus heel makelijk kan aanmaken. Je zou eventueel het hosting bedrijf kunnen vragen hoe dit programma werkt anders staat er ook zat op de site van phpmyadmin zelf natuurlijk.

kan de bestanden helelaas niet uploaden nu, dus post de code wel.
Het ziet er nu misschien rommelig uit in die textvelden, maar copy/paste het in dreamweaver en het is al stukken duidelijker :)
Als je nog iets wilt weten, dan hoor ik het wel.

Dit is index.php


<?php
//Connect naar je MySQL database.
$sql_dbname = "database";
$sql_host = "localhost";
$sql_uname = "username";
$sql_pass = "password";

mysql_connect($sql_host, $sql_uname, $sql_pass);
mysql_select_db($sql_dbname);

?>


<div align="center">
<p>Welkom op de site</p>
<p><br>
<br>
</p>
<table width="500" border="1" cellspacing="0" cellpadding="0">
<?php
//Hier halen we de data weer op en dat weergeven we in deze table.

//Haal het nieuwe bericht eruit
$select = "SELECT titel, bericht FROM tabel_naam ORDER BY id DESC LIMIT 0,1";
$sql = mysql_query($select) or die(mysql_error());
while($obj = mysql_fetch_assoc($sql))
{
$titel = $obj['titel']; //haal de titel uit de database en stop de waarde in $titel.
$bericht = $obj['bericht']; //haal het bericht uit de database en stopt de waarde in $bericht.

//LET OP. Ik sluit de while loop hier nog niet af.
//Nu kan je dus op de plek waar je wilt de titel en het bericht plaatsen.
?>
<tr>
<td><div align="center">Nieuws: <?php echo $titel; ?></div></td>
</tr>
<tr>
<td><?php echo $bericht; ?></td>
</tr>
<?php
} //Hier sluiten we de while loop
//We zijn voor <tr> begonnen dus we sluiten deze ook weer na de </tr>.
?>
</table>
</div>



Dit is admin.php

<?php
//Connect naar je MySQL database.
$sql_dbname = "database";
$sql_host = "localhost";
$sql_uname = "username";
$sql_pass = "password";

mysql_connect($sql_host, $sql_uname, $sql_pass);
mysql_select_db($sql_dbname);


//LET OP. Ik heb een textveld toegevoegd en die heb ik "bericht" genoemd.
//En een textveld voor de titel, die ik "titel" heb genoemd.
//De button heet gewoon standaard "Submit".
?>

<form action="admin.php" method="post">
<table width="500" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>Post nieuw bericht </td>
</tr>
<tr>
<td><br>
<input name="titel" type="text" id="titel"> <br> <br>
<textarea name="bericht" cols="50" rows="8" id="bericht"></textarea>
<br>
<br>
<input type="submit" name="Submit" value="Submit"></td>
</tr>
</table>
</form>

Dopefish
%Europe/Berlin %607 %2005, 14:34
wat hieraan gevaarlijk is w00. is dat je code keihard in je php bestandje staat. En als iemand het dang aat downloaden (niet via bron bekijken, want daar staat het niet). maar bijvoorbeeld een koppeling naar die page heeft en dan het dus download zie je keihard al je gegevens staan.
Je kan beter nog een bestandje aanmaken wat je noemt
connect.php

$sql_dbname = "database";
$sql_host = "localhost";
$sql_uname = "username";
$sql_pass = "password";

mysql_connect($sql_host, $sql_uname, $sql_pass);
mysql_select_db($sql_dbname);


dan doe je in je andere bestandjes index.php en admin.php gewoon dit op de plek waar bovenstaande dingen staan.

include("connect.php");

XA4
%Europe/Berlin %617 %2005, 14:49
Ik heb nu weinig tijd, maar ik ga het proberen om het straks uit te voeren. Anders zal het voor morgen zijn...

Maar ik laat in ieder geval iets weten.
Alvast bedankt allemaal.

w00
%Europe/Berlin %653 %2005, 15:41
wat hieraan gevaarlijk is w00. is dat je code keihard in je php bestandje staat. En als iemand het dang aat downloaden (niet via bron bekijken, want daar staat het niet). maar bijvoorbeeld een koppeling naar die page heeft en dan het dus download zie je keihard al je gegevens staan.
Je kan beter nog een bestandje aanmaken wat je noemt
connect.php

$sql_dbname = "database";
$sql_host = "localhost";
$sql_uname = "username";
$sql_pass = "password";

mysql_connect($sql_host, $sql_uname, $sql_pass);
mysql_select_db($sql_dbname);


dan doe je in je andere bestandjes index.php en admin.php gewoon dit op de plek waar bovenstaande dingen staan.

include("connect.php");


Maar je kan toch niet zomaar een php bestand downloaden of wel??

TheZwier
%Europe/Berlin %672 %2005, 16:08
Je kan wel makkelijk een php bestand downloaden (met of zonder link, anders google je het gewoon voor een link ;)), maar zolang de server waarvan je het download PHP draait zul je gewoon de output zien, en geen gegevens.

Het is zoiezo altijd een goed idee om het wachtwoord van je sql database met md5() te encrypten, en als je dan iets opvraagt ook je ww met md5() encrypten voordat je het verstuurt :).

En als voorbeeldje:
http://members.lycos.nl/thezwier/scorereset.php

Als je het nu zal downloaden zal je (op de enorme hoop shit van lycos na) nix van mijn gegevens zien die ik moet invullen, terwijl ze wel in het PHP bestand staan.

w00
%Europe/Berlin %697 %2005, 16:44
Encrypten is altijd goed maar ook dit is alleen nodig wanneer je het verstuurd met een POST of GET command. Je kan echt niet zomaar een php bestand downloaden met daarin nog alle php codes, daarvan ben ik echt overtuigd. Ik weet ook zeker dat niemand hier het tegendeel kan bewijzen.

TheZwier
%Europe/Berlin %740 %2005, 17:45
Encrypten is altijd goed maar ook dit is alleen nodig wanneer je het verstuurd met een POST of GET command. Je kan echt niet zomaar een php bestand downloaden met daarin nog alle php codes, daarvan ben ik echt overtuigd. Ik weet ook zeker dat niemand hier het tegendeel kan bewijzen.

Niet helemaal waar... ook zeker als je iets in een PHP bestand zet moet je het beveiligen. Het kan altijd dat tijdens een update van je host, PHP er even uit ligt, wat er voor zorgt dat PHP ondersteunende servers even geen PHP ondersteunen, en je dus een gewoon PHP bestand kan downloaden zonder dat het geparsed is.

josko
%Europe/Berlin %801 %2005, 19:14
ik heb geen code maah het kan gewoon met php..
laad het menu naar de stukken uit een database, aan doe de content ook erin...
dan met url?page=value de stukken oproepen.. bijv page gelijkstellen als waarde van link,
aan de hand daarvan de content oproepen....
bewerken? laad alle stukken [links] uit db, en een bewerkt pagina..daarna gewoon updaten de tabel...
moet luken tog?

w00
%Europe/Berlin %911 %2005, 21:52
*edit*

laat maar.... :)

Edwin
%Europe/Berlin %041 %2005, 00:59
Niet helemaal waar... ook zeker als je iets in een PHP bestand zet moet je het beveiligen. Het kan altijd dat tijdens een update van je host, PHP er even uit ligt, wat er voor zorgt dat PHP ondersteunende servers even geen PHP ondersteunen, en je dus een gewoon PHP bestand kan downloaden zonder dat het geparsed is.
Weet je dat ik me daar nou niet echt druk om maak? Als bij mij PHP het niet doet, dan doet Apache het ook niet omdat die dan waarschijnlijk down is.

@Dopefish: Wat is het verschil dat je je user/pass in het bestand zelf hebt staan of in die connect.php? Stel dat het nou voorkomt dat het niet geparsed wordt, dat kan je ook bij connect.php


Tip: Denk bij veiligheid niet waar je je wachtwoord houd enzo, maar denk aan controle van de userinput. Daar ligt 9 van de 10 keer de fout. Denk maar aan het forum van Jorim wat laatst was gehacked, puur omdat er een fout was ontdekt in z'n forumsoftware en laat hij nou net niet de laatste updates hebben gehad...

Dopefish
%Europe/Berlin %471 %2005, 11:18
@Dopefish: Wat is het verschil dat je je user/pass in het bestand zelf hebt staan of in die connect.php? Stel dat het nou voorkomt dat het niet geparsed wordt, dat kan je ook bij connect.php


hmm nou als je op een gegeven moment een gigantische site heb met stel 30 pagina's
en je maakt een andere gebruiker, of wijzigt je password ofzo.. dan kan je het makkelijk in 1keer wijzigen.. Ik doe dat meestal overal, dat gegevens die kunnen wijzigen ik gewoon in een variable knal die ik dan weer include zodat ik het ergens makkelijk kan veradneren.. dingen zoals bijvoorbeel stylesheet. of soms $kleur1 en $kleur2 enzo.