grimjoey
-
Innlegg
773 -
Ble med
-
Besøkte siden sist
Innholdstype
Profiler
Forum
Hendelser
Blogger
Om forumet
Innlegg skrevet av grimjoey
-
-
Php har samme rettigheter som web-servere (kjører under samme bruker). Og web-serveren har rettighetene til filer som blir lastet opp.
Er problemet ditt at du ikke får chmod'et via ftp/ssh kan løsningen være å lage et php-script som gjør jobben for deg. Evt. bruke chown via php for å gi din ftp/ssh bruker rettighetene til filen.
Jeg er usikker på hva php safe_mode gjør. Hvis det er slik at php's chmod og chown ikke fungerer, og du er ute etter å få tilgang til filene selv, kan du lage en passord beskyttet side som presenterer filene for nedlasting.
-
Jeg tror dere diskuterer litt på ulike plan her. Det virker som OP ikke helt forstår den tekniske forskjellen på php og html.
HTML tolkes av nettleseren og definerer hvordan informasjon skal vises.
PHP tolkes av en web-server, og for nettleseren ser dette ut som en vanlig html fil (oftest).
Forskjellen er at php lar deg programmere, og gir muligheten for dynamisk informasjon på siden.
Man kan installere et php basert forum uten særlig peiling på database og programmering. Men man bør ha visse forkunnskaper som for eksempel at php forum krever at databasene konfigureres med riktig brukernavn og passord, samt et databasenavn.
Men all infoen man trenger finnes oftest i installasjonsmanualene, eventuelt howto's.
Web serveren må selvfølgelig støtte php, dersom det skal benyttes. De fleste webhoteller støtter php og mysql database. Det finnes gratis web hoteller med slik støtte.
phpBB er et greit forum du finner via google. Ellers kan du ta en titt på php-fusion hvis du vil ha et komplett innholdshåndteringssystem.
I begge tilfellene handler det om å:
*laste ned forum/cms
*pakke ut filene
*lese readme og install dokumenter
*laste opp til webhotell via (s)ftp
*gjøre noen endringer av sikkerhetsmessige årsaker (php-fusion krever at du renamer _config.php til config.php før installasjonen)
*kjøre installasjonsprogrammet (dette innebærer å åpne en spesiell side på hjemmesiden der du har lagt inn forumet/cms'et)
På forhånd må du sørge for at du har tilgang til en database og infoen; vertsnavn, brukernavn, passord og databasenavn
-
=> brukes også i foreach dersom man trenger en referanse til nøkkelverdien
foreach ($a as $b) print $a . ' har en ' . $b;
foreach ($a as $c => $b) print $a . ' har en ' . $b . ' og nøkkelen heter ' . $c;
-
Kan ikke garantere for at alt fungerer (den er så vidt testet), men her er et par klasser jeg har laget. (se nederst)
$db = new Db;
$db->Connect('host', 'user', 'pass', 'dbname');
$db->Query('SELECT ...'); // returnerer vanlig resultat ressurs
$db->Escape('...'); // er samme som mysql_real_escape_string()
$db->GetArrABC('SELECT ...'); // returnerer et array med assosiative arrayer
array( [0] = array( ['id'] = 0 ['navn'] = 'navnet' ) [1] = array( .... .... ) )
$db->GetArrN('SELECT ...'); // returnerer numerisk array med numeriske arrayer
samme som ovenfor men uten feltnavn
$result = $db->GetObj('SELECT ...'); //returnerer et objekt med objekter
$row = $result->GetRow('0');
$id = $row->id;
elns (utestet)
$db->GetXML('SELECT ...'); // returnerer ett xml document.
<?xml version="1.0"?> <result> <row id="0"> <field id="0">0</field> <field id="1">Kåre</field> </row> <row id="1"> <field id="0">1</field> <field id="1">Bengt</field> </row> <result>
praktisk for ajax applikasjoner
<?php function error($e) { if ($e->getCode() == 123) print 'Warning: ' . $e->getMessage() . "\n"; else print 'Exception caught: ' . $e->getMessage() . "\n"; print ' ' . $e->getFile() . ': ' . $e->getLine() . "<br />\n"; if ($e->getCode() != 123) die(); } class MysqlTableObject { private $ArrayOfRowsAsObjects; public function __construct($ArrayOfRowsAsObjects = null) { try { if ($ArrayOfRowsAsObjects === null) throw new Exception('Must include an array of rows as objects on creation!'); else $this->ArrayOfRowsAsObjects = $ArrayOfRowsAsObjects; } catch (Exception $e) { error($e); } } public function GetRow($Row) { try { if ($this->ArrayOfRowsAsObjects[$Row] === null) throw new Exception('Row does not exist!'); return $this->ArrayOfRowsAsObjects[$Row]; } catch (Exception $e) { error($e); } } public function GetAll() { return $this->ArrayOfRowsAsObjects; } } class Mysql { public $DbLink; private $DbHost; private $DbUser; private $DbPass; public $DbName; public $P; public function Config($DbHost = null, $DbUser = null, $DbPass = null, $DbName = null) { try { if ($DbPass !== null) $this->DbPass = $DbPass; else throw new Exception('Password missing.'); if ($DbUser !== null) $this->DbUser = $DbUser; else throw new Exception('Username missing.'); if ($DbHost !== null) $this->DbHost = $DbHost; else throw new Exception('Hostname missing.'); $this->DbName = $DbName; } catch (Exception $e) { error($e); } } public function Connect($DbHost = null, $DbUser = null, $DbPass = null, $DbName = null) { try { if ($this->DbLink === null) { try { $this->Config($DbHost, $DbUser, $DbPass, $DbName); } catch (Exception $e) { error($e); } try { if ($this->P !== null) { if (!$this->DbLink = mysql_pconnect($this->DbHost, $this->DbUser, $this->DbPass)) throw new Exception('Unable to connect: ' . mysql_error()); } else { if (!$this->DbLink = mysql_connect($this->DbHost, $this->DbUser, $this->DbPass)) throw new Exception('Unable to connect: ' . mysql_error()); } } catch (Exception $e) { error($e); } try { if (!mysql_select_db($this->DbName, $this->DbLink)) throw new Exception('Unable to select db: ' . mysql_error(), 123); } catch (Exception $e) { error($e); } } else throw new Exception('Trying to connect but is already connected!', 123); } catch (Exception $e) { error($e); } } public function PConnect($DbHost = null, $DbUser = null, $DbPass = null, $DbName = null) { $this->P = true; $this->Connect($DbHost, $DbUser, $DbPass, $DbName); } public function SelectDb($DbName = null) { try { if ($DbName === null) throw new Exception('No arguments to function. Cannot select db.'); if ($this->DbLink === null) throw new Exception('Not connected. Cannot select db.'); $this->$DbName = $DbName; if (!mysql_select_db($this->DbName, $this->DbLink)) throw new Exception('Unable to select db: ' . mysql_error()); } catch (Exception $e) { error($e); } } public function Close() { try { if ($this->DbLink === null) throw new Exception('Not connected!'); else mysql_close($this->DbLink); } catch (Exception $e) {} } public function Query($Sql) { try { if ($this->DbLink === null) throw new Exception('Not connected!'); else { if (!$Res = mysql_query($Sql)) throw new Exception('Unable to perform query: ' . mysql_error()); return $Res; } } catch (Exception $e) { error($e); } } public function GetArrObj($Sql) { try { $Res = $this->Query($Sql); while ($Row = mysql_fetch_object($Res)) { $ArrayOfRowsAsObjects[] = $Row; } return new MysqlTableObject($ArrayOfRowsAsObjects); } catch (Exception $e) { error($e); } } public function GetArrN($Sql) { try { $Res = $this->Query($Sql); $ArrayN = Array(); while ($Row = mysql_fetch_array($Res, MYSQL_NUM)) { $ArrayN[] = $Row; } return $ArrayN; } catch (Exception $e) { error($e); } } public function GetArrABC($Sql) { try { $Res = $this->Query($Sql); $ArrayABC = Array(); while ($Row = mysql_fetch_assoc($Res)) { $ArrayABC[] = $Row; } return $ArrayABC; } catch (Exception $e) { error($e); } } public function Escape($Sql) { try { if (!is_numeric($Sql)) { if (get_magic_quotes_gpc()) $Sql = stripslashes($Sql); if ($this->DbLink === null) throw new Exception('Not connected!'); else $Sql = mysql_real_escape_string($Sql, $this->DbLink); } return $Sql; } catch (Exception $e) { error($e); } } } class Db extends Mysql{ public function GetXML($Sql, $NamedFields = null) { try { if ($NamedFields === null) $Array = $this->GetArrN($Sql); else $Array = $this->GetArrayABC($Sql); $XMLStart = "<?xml version=\"1.0\">\n<result>\n"; $XMLStop = "</result>\n"; $XMLMiddle = ''; foreach ($Array as $K => $V) { $XMLMiddle .= "\t<row id=\"" . $K . "\">\n"; foreach ($V as $Key => $Value) { $XMLMiddle .= "\t\t<field id=\"" . $Key . "\">" . $Value . "</field>\n"; } $XMLMiddle .= "\t</row>\n"; } $XMLOut = $XMLStart . $XMLMiddle . $XMLStop; return $XMLOut; } catch (Exception $e) { error($e); } } } if (!strcmp(substr($_SERVER['PHP_SELF'],-6), 'db.php')) print 'nothing to see here!'; ?>
-
du må finne filen(e) som brukes som template (dette er avhengig av stilen du bruker). så må du gjøre endringer der. du finner en del tips hvis du søker på nettet, forutsatt at du forstår engelsk. google "phpbb home link" for eksempel.
-
ser ut som du har 3 muligheter. serverside (denne sa du ikke gikk), dns maskering eller lokal proxy server.
kan ikke tenke meg noe annet, med mindre man involverer ting som activeX o.l.
-
jeg laget nettopp et nytt emne/tråd i historier og postet et svar i bildegalleriet.
alt ser ut til å fungere.
"knappen" er en link ned til venstre for forum/tråd/post listen
-
skummet så vidt artikkelen. ser ut som du trenger kontroll over dns for at det skal virke, hvilket ikke alltid er tilfelle.
har du forresten tilgang til serverside som feks php kan du jo cache innholdet du skal manipulere på det lokale domenet.
-
har du en link til forumet og info til en gjestbruker konto så kunne jeg tatt en titt. litt vanskelig å svare på helt uten videre.
-
testet nettopp et ajax kall mot en ekstern side. funket dårlig.
-
ja, men ettersom src til iframe er definert i dokumentet, kan det hende javascript interpretern nekter deg tilgang. jeg forsøkte å sette src vha javascript og fikk tilgang (dvs ikke feilmeldinger). men alle elementene synes å være tomme.
-
jeg får access denied feilkode 1010 i firebug når jeg tester noe liknende. kanskje det kun er tilgang til å manipulere tomme iframes
red:
du kan jo prøve å hente innholdet til iframen via javascript. kan hende du får tilgang da
-
@creAtive:
/ foran betyr at man definerer relativ url mot base urlen. uten / foran betyr at man definerer relativ url mot den aktuelle banen.
mao: er filen i en underkatalog på domenet og ønsker å referere til en fil i samme katalog kan man ikke skrive '/fil.php'
-
den nyeste html spesifikasjonen (401) nevner relative url's i fleng. tviler på at det er noen anbefallinger i mot å bruke det. men i headere er det en annen sak.
i dokumentet har interpretern en base uri å gå etter (document root eller definert i dokumentet med <base href=""/>). men en server kan umulig gjette basen til den relative url'en du snakker om i headeren.
-
assign en id til iframe taggen.
var framedStuff = document.getElementById('iFrameId');
framedStuff.contentDocument.....
// slik får du tilgang til innholdet i iframen. fungerer ikke i IE
// det er mulig IE har en egen måte å gjøre det på men det aner jeg ikke
-
husk at javascript regexp ikke er den samme som perl regex. det er forskjellige regler. js sin versjon støtter blandt annet ikke lookahead assertions. så bare pass på hvilken manual du leser når du skal bruke regex.
-
denne lager options lignende den i første posten fra angitt dato til dagens
<?php $months = array( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'Desember' ); // returnerer array(array('måned', 'år'), ...); function getMonthsFrom($month, $year) { global $months; $thisMonth = date('n') - 1; $thisYear = date('Y'); $monthNum = array_search($month, $months); $deltaYear = $thisYear - (int)$year; $unit = 10.0/12.0; $composite = 10 + (($deltaYear - 1) * 12 * $unit) + ($thisMonth * $unit); $arrayOut = array(); for ($i = (($monthNum) * $unit); $i < $composite; $i += $unit) { $arrayOut []= array($months[($monthNum % count($months))], floor($year + ($i / 10))); $monthNum++; } return $arrayOut; } function getOption($month, $year) { return "<option value=\"?page=archive&car=news&mnd=$month&aar=$year\">$month $year</option>"; } function getOptions($month, $year) { $mArray = getMonthsFrom($month, $year); $stringOut = ''; foreach ($mArray as $m) { $stringOut .= getOption($m[0], $m[1]) . "<br/>\n"; } return $stringOut; } print getOptions('September', '1999'); ?>
-
-
Forstår ikke helt hva du spør om her. Og sortere ut i fra dato innebærer at du også sorterer ut i fra måned fordi måned er en del av en dato. Bruker du database? Kan du forklare problemet litt nærmere?
-
har du prøvd & uten å escape den. (den har kanskje ingen spesiell betydning inne i en character class og trenger kanskje ikke bli escapet. kanskje den har spesiell betydning når den er escapet)
testet forresten regex koden din i regextrainer.net med opera. den matcha ikke < så vidt jeg kunne se. kanskje det er spesiellt tilfelle med userscript
-
@dahwan: du har helt rett. all kode som forsøker å referere til deler av dokumentet som kommer etter koden må kalles etter at dokumentet er ferdig lastet. dette gjøres med onload. dette gjelder også definering av funksjoner selv om ikke selve funksjonen kalles opp før resten av dokumentet er lastet må fortsatt funksjonen defineres i onload.
window.onload = function() { // kode som krever ferdig lastet dokument. }
@wubbable: dersom du installerer dragonfly får du tilgang til developer tools i opera, som blandt annet har en error console.
-
rettet mot deg.
jeg har aldri hatt behov for å definere metoder og variabler statisk, men ser at det kan være en fordel.
-
det er godt mulig det er flere feil. post gjerne resultatet du fikk.
mysql_query() returnerer en ressurs
med ressursen kan vi hente ut data.
$resource = mysql_query("SELECT pris FROM steder WHERE sted='$reisemal';");
$row = mysql_fetch_row($resource);
nå er $row et array som inneholder den første raden i resultatet.
$row[0] returnerer den første kolonnen (feltet)
$row[1] returnerer den andre kolonnen
osv
(int) gjør om datatypen til integer (heltall)
det kan være en fordel å bruke int når du sammenlikner størrelse selv om php evaluerer tekst strenger også. dersom du bruker desimaltall kan du benytte (float) i stedet.
-
man trenger ikke deklarere noe statisk for å kunne bruke ::
Rimordbok - hvordan lage?
i Programmering og webutvikling
Skrevet
du må bestemme deg for hvordan du vil definere "rim" programatisk. jeg testet rimordboken du henviser til og det er ikke alle resultatene som rimer med søkeordet, alltid.
det finnes noe som heter norsk språkbank. du kan kontakte norsk språk råd for å få tilgang til denne, som antagelig inneholder de fleste norske ord (om ikke samtlige).
rim har med ordlyd å gjøre, så for å få til en bra rimordbok kan det hende du må få tak i en ordliste med fonetisk notasjon i tillegg til skriftlig. evt. lære å bruke fonetisk notasjon og lage en egen ordliste basert på en rent skriftlig ordliste, noe som kan være enormt tidkrevende.
når du finner ut hvordan du vil gjøre det er det i grunn ganske enkel database søking det dreier seg om.