Veckans nybörjarfråga om PHP, ASP, ASP.NET, etc...

Tråden skapades och har fått 14 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Karlstad
  • 2005-01-21 23:48

Så här ere:

Jag har bara pulat med statiska sidor + ett och annat perl och några message boards som liksom kom i paket med färdiga lösningar och enkelt administratörsgränssnitt.

Men nu råkar en sajt jag har ha en PDF-fil för nedladdning och det är jäkligt viktigt att kunna se EXAKT vem (IP nummer) som laddar ner den, när det skedde, hur lång tid det tog, vilken sida han kom från, etc.

Tydligen ska det gå på nåt sätt att åstadkomma detta genom att "streama" nedladdningen via en databas (om detta lär korkat, så begriper ni på vilken kunskapsnivå jag ligger).

Frågorna är alltså:

1. Går det att fixa detta?
2. Vilket språk är i så fall lämpligast, inte bara för själva jobbet, utan också för mig som inte vet jota?
3. Kan jag installera språket i Apache på Macen?
4. I så fall, hur? Och vart får man tag på det som behövs?
5. Annat jag bör veta?

ALLA tips uppskattas - gränslöst.

Danne

  • Medlem
  • Umeå
  • 2005-01-22 01:21

Här är en lösning för PHP:

Börja med att aktivera PHP, det är installerat som standard i Panther (Jaguar?) men måste aktiveras: http://www.macosxhints.com/article.php?story=20031105122808344&query=php+httpd.conf

Sen använder du den här koden i den fil som användaren ska komma åt:

<?php
	// Filnamn på loggfilen.
	$logfile     = 'minLoggfil';
	
	// Filnamn för pdf'en.
	$pdfFileName = 'minpdf.pdf';
	
	// Öppna filen för skrivning.
	if (!($fh = fopen($logfile, 'a')))
		die("Can't open '$logfile' for writing.");
	
	// Skapa lite log-info.
	$logString  = "-----------------------------------------------\n";
	$logString .= date("l Y-m-d H:i:s\n");
	$logString .= "Remote address:  ".$_SERVER['REMOTE_ADDR']." \n";
	$logString .= "Remote hostname: ".$_SERVER['REMOTE_HOST']." \n";
	$logString .= "Refering page:   ".$_SERVER['HTTP_REFERER']."\n";
	
	// Starta timingen av nerladdningen.
	$time1 = time();
	
	// Sätt headers så att webbläsaren vet vad som ska komma.
	header('Content-type: application/pdf');
	header('Content-Disposition: attachment; filename="'.$pdfFileName.'"');
	
	// Skicka pdf-dokumentet till användaren.
	if (!readfile($pdfFileName))
		die("Couldn't read PDF-file.");
	
	// Stanna timingen av nerladdningen.
	$time2 = time();
	
	// Mer log-info
	$logString .= "Download start:      ".date("H:i:s\n", $time1);
	$logString .= "Download end:        ".date("H:i:s\n", $time2);
	$logString .= "Total download time: ".date("i \m\i\\n s \s\e\c\n",   $time2-$time1);
	
	// Skriv allt till loggfilen.
	if (!fwrite($fh, $logString))
		die("Can't write to logfile.");
	
	// Stäng loggfilen.
	fclose($fh);
?>

Har testat den lite, men det borde fungera.

Se till att din loggfil är skrivbar av användaren 'www' (som är den som kör webservern). Sen borde din logfil fyllas med data av typen:

-----------------------------------------------
Saturday 2005-01-22 01:02:04
Remote address:  127.0.0.1 
Remote hostname:  
Refering page:   
Download start:      01:02:04
Download end:        01:02:06
Total download time: 00 min 02 sek

HTTP_REFERER sätts av user agent och är därför inte garanterad att finnas, läs mer om vilken info du kan få om användaren på http://se.php.net/reserved.variables

Håll till godo.

  • Medlem
  • Karlstad
  • 2005-01-22 07:31

Jobbe,

Fantastiskt! Tack! Jag ska fördjupa mig i det där så snart jag får lite lugn omkring mig, så jag åtekommer i början av nästa vecka.

Tills dess måste jag skryta lite över min kreativitet:

Jag har ett existerande formmail skript (perl) som bl.a. tar upp användarens IP och tiden som sköter feedbackformuläret på sajten. Så jag gjorde an "send"-knapp omgiven av ett par <form> taggar, pekade mot skriptet och la in en dold "redirect"-tag i formuläret som man gör när man vill skicka nån till en "tack"-sida efter att dom skickat. Men i stället för en tack-sida, så pekade jag helt enkelt mot PDF-filen.

Funkade snorbra, och jag får dessutom ett mail varje gång nån tankar ner den.

Men jag ska givetvis ordna en tjusigare lösning, och återkommer som sagt om några dagar.

Än en gång: Tack!

Danne

  • Oregistrerad
  • 2005-01-22 12:56

ASP/ASP.NET är Microsoft-lösningar och förutsätter att du kör en Windows-server. Apache/PHP går att köra på vilken plattform som helst.

  • Medlem
  • Karlstad
  • 2005-01-22 13:31
Ursprungligen av henrrrik:

ASP/ASP.NET är Microsoft-lösningar och förutsätter att du kör en Windows-server. Apache/PHP går att köra på vilken plattform som helst.

Tack. Misstänkte det...

Ursprungligen av henrrrik:

ASP/ASP.NET är Microsoft-lösningar och förutsätter att du kör en Windows-server. Apache/PHP går att köra på vilken plattform som helst.

Inte helt sant, se t ex http://www.mono-project.com för ASP.NET stöd på andra plattformer.

  • Medlem
  • Karlstad
  • 2005-01-22 22:54

Har i alla fall starta PHP på Macen. Det här är ju så spännande att man måste gå och kissa stup i ett. Hur får man igång mySQL då? Jag har alltså funderat på att testa en CMS som t.ex. Mambo eller PHPNuke eller nån.

Vilka av dessa har bäst renommé?:

http://mamboserver.com/
http://drupal.org/
http://www.geeklog.net/
http://www.phpnuke.org/
http://www.phpwcms.de/
http://phpwebsite.appstate.edu/
http://www.postnuke.com/
http://siteframe.org/
http://typo3.com/
http://www.xoops.org/

  • Medlem
  • Karlstad
  • 2005-01-22 23:58

Har nu installerat mySQL (så första frågan ovan är alltså redan besvarad) tillsammans med Startuo Item. Men när jag kör shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start i Terminalen så svarar den att "-bash: shell: command not found" vilket är lite kul eftersom "bash" betyder utskällning och jag begriper att han e sur när en klåpare som inget fattar börjar störa honom. Eller henne...

Men nu fick jag igång den i alla fall. Jösses vad det pruttar på...

  • Medlem
  • Karlstad
  • 2005-01-23 08:15

Ja jädrar, jag e ju redan nästan expert på det här.

Har installerat Mambo, satt upp permissions som Mambo accepterar, men när jag ska ge Mambo username och password till mySQL så blir det stopp. Hur kommer man åt inställningar för mySQL? Något säger mig att det antingen bör finnas nån slags fil eller kanske t.o.m. en sida med administratörsgränssnitt som man öppnar i en browser, men kan inte hitta något trots idoga sökningar efter hjälp på Google. Jag måste ju på nåt sätt sätta upp databasen för Mambo i mySQL, eller va?

EDIT: Jag hittar alltså några "misstänkta" filer i HD > usr > local > mysql > bin som heter bl.a. mysql_config som har ikoner som ser ut som en förminskad terminal-ikon. En del har jag lyckats öppna i Terminalen (men vet inte hur jag ska göra sen) medan andra inte vill öppnas alls.

Har också letat fram att det lär finnas nåt som heter mySQL Administrator som ska (?) installeras:
http://dev.mysql.com/doc/administrator/en/index.html Antar att detta är just det gränssnitt jag frågade om, men hittar ingen för Mac...

Senast redigerat 2005-01-23 08:44
  • Medlem
  • Stockholm
  • 2005-01-23 09:09

Hej Danne Vendel!

Här är en länk som kan va bra att ha:
http://www.phpmac.com/articles.php?view=213

Du borde också ta en titt på Apples WebObjects (http://www.apple.com/webobjects/) och Java.

Danne, antingen kan man köra mysql via terminalen (bara att skriva mysql om allt är konfat rätt) eller kan man använda tex. webgränssnittet phpmyadmin.

http://www.phpmyadmin.net/

  • Medlem
  • Karlstad
  • 2005-01-23 09:50

Cypher, Kristofer,

Tack för glada tillrop.
Jag haver t.o.m. lyckats skapa en databas med hjälp av terminalen redan. Phy phan, geekfaktorn har stigit från noll till 400 på mindre än ett dygn. Börjar jag yra om att köra Unix-burkar och annat, så vore det bussigt om ni kunde stoppa mig.
Nu ska jag ut med barna och åka pulka och/eller hjälpa brorsan få ordning på ny hårddisk (och låta honom åka pulka), så jag kollar in länkarna senare.

  • Medlem
  • Karlstad
  • 2005-01-24 12:32

Argh....nu har jag ställt till det och har spenderat hela förmiddagen med att försöka ställa saker å ting tillrätta, men misslyckas.

Skulle prova Drupal CMS. I installationsanvisningarna stod att jag skulle ge följande kommande till MySQL, vilket jag gjorde genom phpMyAdmin:

GRANT ALL PRIVILEGES ON drupal.*
TO nobody@localhost IDENTIFIED BY 'password';

...och därmed sprack allt. Jag får inte längre tillgång till MySQL (jo, har testat i myAdmins inställningsfil med olika passwords och usernames, men även om jag kommer in i MySQL så får jag inte rätt permissions att skapa nya databaser.)

Så jag trodde att kan kunde installera MySQL och phpMyAdmin en gång till, men de hjälper inte alls och följaktligen funkar inte tre andra sajter med MySQL.

Jo, jag vet att jag är ett klantarschle...<skämmas, skämmas>

Kan någon hjälpa mig trassla mig ur detta?

Ursprungligen av Danne V:

Argh....nu har jag ställt till det och har spenderat hela förmiddagen med att försöka ställa saker å ting tillrätta, men misslyckas.

Skulle prova Drupal CMS. I installationsanvisningarna stod att jag skulle ge följande kommande till MySQL, vilket jag gjorde genom phpMyAdmin:

GRANT ALL PRIVILEGES ON drupal.*
TO nobody@localhost IDENTIFIED BY 'password';

...och därmed sprack allt. Jag får inte längre tillgång till MySQL (jo, har testat i myAdmins inställningsfil med olika passwords och usernames, men även om jag kommer in i MySQL så får jag inte rätt permissions att skapa nya databaser.)

Så jag trodde att kan kunde installera MySQL och phpMyAdmin en gång till, men de hjälper inte alls och följaktligen funkar inte tre andra sajter med MySQL.

Jo, jag vet att jag är ett klantarschle...<skämmas, skämmas>

Kan någon hjälpa mig trassla mig ur detta?

Du tycker du har klantat dig och skäms. Jag säger grattis! Du kommer förmodligen lära dig hur mycket nyttigt som helst av ditt lilla misstag!

Ps. Jag har varit i din situation flera gånger.

  • Medlem
  • Karlstad
  • 2005-01-24 16:51
Ursprungligen av DeeJam:

Jag har varit i din situation flera gånger.

Jaha. Hur löste du det, då?
Jag har installerat om systemet men fått andra problem istället:
http://99mac.se/forum/showthread.php?t=64224

1
Bevaka tråden