Gå till innehåll
Just nu i M3-nätverket

Phpmyadmin


macfanet

Rekommendera Poster

Gäst iMatte
Förstår inte riktigt vad du menar med ['description']. Så här ser koden ut just nu:

<?
$link = mysql_connect("localhost", "användarnamn", "pass");
mysql_select_db("guestbook", $link);
$result = mysql_query("SELECT * FROM comments", $link);

while ($row = mysql_fetch_array($result)){
echo $row['Name'].'<i><br>'.$row['Date'].'</i><br>' .$row['Linktips']. '<br>' .$row['Message'].'<hr>';
}
?>

204914[/snapback]

 

Med "description" menade jag det som beskriver vad länken handlar om, alltså det du klickar på. Med $link menade jag själva webbadressen:

 

<a href="http://www.kulsida.se/kulgrej/senastenytt/index.php">En jättekul sida</a>

alltså

<a href=[$link]>[$description]</a>

 

Annars måste man ha något standard-ord eller liknande, för folk att klicka på. Man kan även hacka upp adressen och plocka ut tex. "www.kulsida.se" och sätta det som beskrivning.

Länk till kommentar
Dela på andra webbplatser

  • 2 weeks later...
  • Svars 51
  • Created
  • Senaste svar

Nu har dagen kommit då jag ska använda det här på riktigt. Tänkte följa iMattes säkerhets tips och ha olika användare med olika rättigheter. Jag tror jag lyckats skapa en ny användare. Frågan är hur jag gör så att användaren bara har rätt att ändra i en speciell databas?

 

Sedan en liten undran. Går det på något sätt att ladda hem php koden från olika hemsidor? Jag är inte intresserad av det men det kan vara bra att veta om folk kan se ens kod.

Länk till kommentar
Dela på andra webbplatser

En liten sak till.

 

Har fått min gästbok att fungera. Men som det är nu skickar den först datan till en ny sida och skriver sedan ut informationen på en tredje sida. jag vill att allting skrivs ut på samma sida. Hur gör jag för att fixa detta?

Länk till kommentar
Dela på andra webbplatser

Nu har dagen kommit då jag ska använda det här på riktigt. Tänkte följa iMattes säkerhets tips och ha olika användare med olika rättigheter. Jag tror jag lyckats skapa en ny användare. Frågan är hur jag gör så att användaren bara har rätt att ändra i en speciell databas?

 

Sedan en liten undran. Går det på något sätt att ladda hem php koden från olika hemsidor? Jag är inte intresserad av det men det kan vara bra att veta om folk kan se ens kod.

209441[/snapback]

 

Vi tar det från början:

Jag ska säga på en gång att säkerhet i en databas är ingen lätt sak - det gäller att vara noggrann och ha tungan rätt i mun. Jag är själv ingen expert på området, men har hyfsad koll i alla fall. Börja med att rensa ut "skrot" från databasen; alla tester och experiment som du gjort. Ta bort databasen "test" som finns med från installationen och ta bort alla eventuella rader ur alla tabeller i databasen "mysql" - utom en rad i tabellen "user", den för användaren "root". Se till att du har ett hyggligt långt lösenord för root och använd inte ett ord som finns i en ordbok. Använd en kombination av gemener, versaler och siffror (exempel: "MinHundFödd2002" är ett bra lösenord, "cykel" är ett dåligt).

 

Sen ska du lägga till en användare, som i detta fall är ditt gästboksscript. Det gäller att ge denne användare exakt de rättigheter han behöver för att scriptet ska kunna köras. Jag gissar att scriptet ska kunna visa inlägg i gästboken samt lägga in nya inlägg. I så fall behöver scriptet rättigheter för "SELECT" och "INSERT". Om du vill ge möjlighet för användare att ändra eller ta bort inlägg behövs fler rättigheter, men samtidigt måste du ju ha ett system som identifierar användaren (typ inloggning), annars kan ju vem som helst ta bort ett inlägg - det verkar struligt just nu.

Okej, till att börja med så måste vi använda en funktion som krypterar lösenordet innan det läggs in i databasen, därför måste vi köra ett sql-kommando när användaren läggs till:

(om du kör CocoaMysql så görs detta under fliken Custom Query)

INSERT INTO user (Host,User,password) VALUES("162.09.09.87","Gaestboken",PASSWORD("lösenordet"));

Kolla under fliken Contents (Refresha tabellen först) så ser du en ny rad, med ett lösenord som är krypterat. Den nya användaren har ännu inga rättigheter i databasen (kan inte göra ett skit mer än att ansluta...). Eftersom din användare(scriptet) endast ska kunna göra ändringar i en enda databas, ska vi lägga till en rad i tabellen "db" som reglerar det (fortfarande under fliken Custom Query):

INSERT INTO db (Host,User,db,Select_priv,Insert_priv) VALUES ("162.09.09.87","Gaestboken","gaestboksdatabasen","Y","Y");

 

 

Nu har du en användare som kan göra två saker i en enda databas: Söka och titta på inlägg, samt lägga till nya inlägg. Dessutom kan användaren bara ansluta från ip-adressen 162.09.09.87. Även om en listig hacker skulle komma över uppgifterna som scriptet använder så kan han inte göra någon direkt skada.

 

edit: Naturligtvis ska uppgifterna ipnummer, databas, användare etc vara dina egna...

 

 

Så den andra frågan:

Nej, om du döper php-filerna med filändelsen php (alltså tex guest_book.php) så går det inte att ta hem eller läsa filerna. Dock kan man på ett enkelt sätt höja säkerheten ytterligare, genom att i varje mapp lägga en tom fil som heter "index.html". Då kan ingen "bläddra" i mappen och se vilka filer som ligger där.

Länk till kommentar
Dela på andra webbplatser

En liten sak till.

 

Har fått min gästbok att fungera. Men som det är nu skickar den först datan till en ny sida och skriver sedan ut informationen på en tredje sida. jag vill att allting skrivs ut på samma sida. Hur gör jag för att fixa detta?

209763[/snapback]

 

Jag är inte helt säker på att jag hänger med...Visa koden och beskriv igen vad du vill göra...

Länk till kommentar
Dela på andra webbplatser

Jag har gjort en gästbok som fungerar. Problemet är att man skriver inlägget på en sidan. Sen trycker man på skicka och kommer då till en ny sida som säger "Tack för inlägget, gå till gästboken" typ. Sedan kommer man då till gästboken. Jag vill att allt detta ska ske på en sida. Så när man trycker på "skicka" så publiceras inlägget under formuläret.

Formulärsidan:

<form action="form.php" method="post" name="New">
Namn: <input type="text" name="Name"
size="24" border="0">
<br>
Länktips: <input type="text" name="Linktips">
<br />
<textarea name="Message" rows="4"
cols="40"></textarea>
<br />
<input type="submit" name="add_post" value="Skicka" border="0">
</form>

 

Sida 2:

<form action="form.php" method="post" name="New">
<?
$link=mysql_connect("","","");
mysql_select_db("guestbook", $link);
if($_POST['Name'] AND $_POST['Message']){
mysql_query("INSERT INTO comments (Name, Message, Date, Linktips) VALUES ('".$_POST['Name']."', '".$_POST['Message']."', NOW(), '".$_POST['Linktips']."')", $link);
echo 'Tack för ditt inlägg!<br> <a href="index.php"> Tillbaka till gästboken</a>';
}
else{
echo 'Fyll i fälten!<br><a href="form.html">Tillbaka</a>';
}
?>
</form>

 

Sida 3, här publiceras inläggen:

<form action="form.php" method="post" name="New">
<a href="form.html">Skriv i gästboken</a><hr>
<?
$link = mysql_connect("", "", "");
mysql_select_db("guestbook", $link);
$result = mysql_query("SELECT * FROM comments", $link);

while ($row = mysql_fetch_array($result)){
echo $row['Name'].'<i><br>'.$row['Date'].'</i><br>' .$row['Message'].'<hr>';
}
?>
</form>

 

Jag vill alltså att allt detta ska se på en och samma sida.

Länk till kommentar
Dela på andra webbplatser

Så här kan man slå ihop det hela. Döp den filen till index.php (vill du ha ett annat namn måste du ändra i "form action" på första raden)

 

 

Sen finns det ju förbättringar som kan göras och några som borde göras. Det som kangöras är tex att visa länktipsen, göra dem klickbara, lägga till en funktion som uppmärksammar dig via mail att ett nytt inlägg kommit och vad det står i det (så att du kan ta bort spam snabbt), språkfilter (byt ut elaka ord), en funktion som hindrar mass-inlägg (typ minst en kvart mellan varje inlägg från samma ip-adress) osv. Om du får massor av inlägg kan det bli drygt att lista upp alla på en sida, därför kan en bläddringsfunktion där typ 10 i taget visas (med länkar till "Nästa tio" och "Föregående tio". Men allt det där kan du ju fila på med tiden om du orkar.

 

 

Det som dock borde göras är att rensa all input från eventuella hyss. En annan grej jag skulle välja är att sortera inläggen så att de nyaste kommer högst upp.

 

Jag har lagt till en liten grej: Meddelanden till användaren (Fyll i allt respektive Tack) har färgats för att synas bättre. Annars har jag undvikit att pilla i din kod...

 

<!-- Nedan från den första sidan-->
<form action="index.php" method="post" name="New">
Namn: <input type="text" name="Name"
size="24" border="0">
<br>
Länktips: <input type="text" name="Linktips">
<br />
<textarea name="Message" rows="4"
cols="40"></textarea>
<br />
<input type="hidden" name="inlagg" value="true">
<input type="submit" name="add_post" value="Skicka" border="0">

</form>

<!-- Nedan från den andra sidan-->

<?
$link=mysql_connect("-","-","-");
mysql_select_db("guestbook", $link);
if($_POST['Name'] AND $_POST['Message']){
mysql_query("INSERT INTO comments (Name, Message, Date, Linktips) VALUES ('".$_POST['Name']."', '".$_POST['Message']."', NOW(), '".$_POST['Linktips']."')", $link);
echo '<p STYLE="color:blue;">Tack för ditt inlägg!</p><br><br><br>';
}
elseif($_POST['inlagg']=="true"){
echo '<p STYLE="color:red;">Fyll i alla fält!</p><br><br><br>';
}else{print "<br><br><br><br>";}
?>


<!-- Nedan från den tredje sidan-->
<?
$link=mysql_connect("-","-","-");
mysql_select_db("guestbook", $link);
$result = mysql_query("SELECT * FROM comments", $link);

while ($row = mysql_fetch_array($result)){
echo $row['Name'].'<i><br>'.$row['Date'].'</i><br>' .$row['Message'].'<hr>';
}
?>

Länk till kommentar
Dela på andra webbplatser

Jodå fler funktioner kommer senare. Ska bara få igång den först. Det är antagligen inte så många som kommer använda den, ca 5 om dagen skulle jag tro. Dock kommer jag lägga till en funktion som gör att det blir en ny sida efter 20 inlägg eller nått. Hur man gör detta är dock ett senare problem.

Länk till kommentar
Dela på andra webbplatser

Får inte riktigt till det med din kod. Det blir inte något error men den läser helt enkelt inte in någontimg i databasen.

 

Utan man bara skriver in vad man vill och sen händer det ingenting

Länk till kommentar
Dela på andra webbplatser

Får inte riktigt till det med din kod. Det blir inte något error men den läser helt enkelt inte in någontimg i databasen.

 

Utan man bara skriver in vad man vill och sen händer det ingenting

209993[/snapback]

 

 

Koden fungerar (jag testade nu), men det är ju några saker som måste ändras:

 

- Du måste lägga in uppgifter för host, user och password (på två ställen som koden ser ut nu)

- Filen du kör måste heta "index.php", alternativt ändra i första kodraden på "action" i formtaggen.

- Kolla även att du har rätt namn på databasen (på två ställen i koden)

 

Om det ändå blir något fel måste du missa något tecken eller så, när du kopierat koden. annars ska det fungera.

Länk till kommentar
Dela på andra webbplatser

Jag fick det att fungera. Nu fungerar gästboken. Nästa problem blir att begränsa den och lägga inläggen på flera olika sidor.

 

Din hjälp är guld värd!

Länk till kommentar
Dela på andra webbplatser

Jag fick det att fungera. Nu fungerar gästboken. Nästa problem blir att begränsa den och lägga inläggen på flera olika sidor.

 

Din hjälp är guld värd!

210105[/snapback]

 

Lycka till! Hojta till om du behöver hjälp.

Länk till kommentar
Dela på andra webbplatser

Har börjat tänka lite på att dela upp gästboken i flera sidor. Redan är den nuvarande sidan ganska lång. Hemsidan är uppbyggd i css, är det enkelt att dela upp gästboken i olika sidor? Behöver man göra nya html sidor eller skapar den automatiskt ett nytt dokument?

Länk till kommentar
Dela på andra webbplatser

Ingen som kunde hjälpa till med detta problem? Ni har varit till sån bra hjälp innan.

215467[/snapback]

 

Jag hade bara missat att du var på "G" igen - jag hjälper dig gärna!

 

Frågan känns lite otydlig. Vill du baka in CSS i sidan med hjälp av PHP, så är det inga problem - hela detta forum är stylat med den tekniken.

Att dela upp långa sidor (ofta med tabeller) i mindre portioner, som nås via uppräknade länkar, kallas "paging". Det krävs en hel del kod för att lösa en sån sak, frågan är om du vill ha en färdig funktion som vi tillsammans försöker få in i din gästbok, eller om du vill lära dig att göra en själv?

Länk till kommentar
Dela på andra webbplatser

Sidan är uppbyggd med css och alla meddelanden ligger i en stor box. Så vill jag att det ska se ut i fortsättningen också. Om du vill får du gärna lära mig hur ma gör. Vill gärna kunna detta så man kan använda det i framtiden också.

Länk till kommentar
Dela på andra webbplatser

Sidan är uppbyggd med css och alla meddelanden ligger i en stor box. Så vill jag att det ska se ut i fortsättningen också. Om du vill får du gärna lära mig hur ma gör. Vill gärna kunna detta så man kan använda det i framtiden också.

216036[/snapback]

 

Ok, jag ska försöka tota ihop ett exempel. Hav tålamod...

Länk till kommentar
Dela på andra webbplatser

Får man undra hur det går?

219264[/snapback]

 

Hmm...ja, vad ska man säga. Koden till en gästbok med sidbläddring har jag skrivit ihop. Det knepiga är att förklara hur det hela fungerar - det blir en rätt mastig "artikel" för att förklara varje steg. Det blev något annat än att svara på konkreta frågor i ett forum. Mer jobb än jag kan lägga ned, helt enkelt...

En variant är ju att du får koden som den ser ut och sen får du pilla och anpassa och ställa frågor vartefter problemen dyker upp? Låter det som en bra variant?

Länk till kommentar
Dela på andra webbplatser

Ett nytt litet problem som inte har något direkt att göra med själv kodningen men jag skriver det här iallafall.

 

Behver gå in och ändra en liten sak i php.ini filen för att sessioner ska fungera. Loggar in på servern men märker att php.ini är skrivskyddad, och det är "system" som har skrivrättigheter på den. Hur gör jag för att ändra i den?

Länk till kommentar
Dela på andra webbplatser

Ett nytt litet problem som inte har något direkt att göra med själv kodningen men jag skriver det här iallafall.

 

Behver gå in och ändra en liten sak i php.ini filen för att sessioner ska fungera. Loggar in på servern men märker att php.ini är skrivskyddad, och det är "system" som har skrivrättigheter på den. Hur gör jag för att ändra i den?

220735[/snapback]

 

Det är en lätt sak, men du måste förstås ha adminrättigheter för datorn. Markera filen php.ini och ta Äpple- i (eller välj Arkiv/Visa Info)

I info-fönstret som dyker upp finns fliken "Ägare och behörigheter" och under Detaljer kan du ändra ägare till dig själv (om du låser upp låset först), ändra i filen med en texteditor och spara (se till att den sparas som ren textfil och inte som rtf eller nåt annat). När du är klar öppnar du infofönstret igen och gör systemet till ägare igen, för säkerhets skull.

Jag tycker att det är en bra rutin att alltid göra en kopia av filen och spara någon annan stans, innan man gör en sån här ändring. Blir det nåt knas, är det skönt att kunna lägga tillbaka originalinställningarna och börja om igen...

Länk till kommentar
Dela på andra webbplatser

Det är det som är problemet. Jag är inloggad under det namnet som har högst rättigheter. Men när jag visar info på filen så står det att jag bara kan läsa. Det går inte att ändra till både läsa och skriva. Sedan står det att användaren "system" kan både läsa och skriva i filen. Problemet är att såvitt jag vet finns det ingen användare som heter system.

Länk till kommentar
Dela på andra webbplatser

Det är det som är problemet. Jag är inloggad under det namnet som har högst rättigheter. Men när jag visar info på filen så står det att jag bara kan läsa. Det går inte att ändra till både läsa och skriva. Sedan står det att användaren "system" kan både läsa och skriva i filen. Problemet är att såvitt jag vet finns det ingen användare som heter system.

220774[/snapback]

 

Vad har du för version av OS X på datorn? I alla nyare versioner ska det gå att ändra rättigheterna direkt i info-fönstret. Men du måste fälla ned pilen vid "Detaljer" och klicka på det lilla låset vd kanten först.

 

Om du har en äldre version av OS X (minns inte när detta ändrades), så får du ändra rättigheterna i Terminalen med kommandot chmod under sudo. Skriv "sudo chmod rw /sökväg_till_php.ini"

 

Och jodå, det ska finnas en användare som heter "system". Det finns många olika användare i operativsystemet som inte är fysiska användare.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.




×
×
  • Skapa nytt...