|
| php program, søge Fra : oz7aik |
Dato : 19-12-09 14:49 |
|
findes der et php eller lin. program, man kan have på sin side (server)
som "database" så besøgene kan søge på ens hjemmeside,
oz7 Jørgen
| |
oz7aik (19-12-2009)
| Kommentar Fra : oz7aik |
Dato : 19-12-09 14:53 |
|
"oz7aik" <ozxxxx@xxxxx.dk> skrev i meddelelsen
news:4b2cd9e6$0$56768$edfadb0f@dtext02.news.tele.dk...
> findes der et php eller lin. program, man kan have på sin side (server)
> som "database" så besøgene kan søge på ens hjemmeside,
>
> oz7 Jørgen
hej igen
min hjemmeside består af mange sider
http://www.oz7aik.dk/FVC2605/
oz7
| |
Philip Nunnegaard (19-12-2009)
| Kommentar Fra : Philip Nunnegaard |
Dato : 19-12-09 15:02 |
|
oz7aik skrev:
> findes der et php eller lin. program, man kan have på sin side (server)
> som "database" så besøgene kan søge på ens hjemmeside,
Hvis indholdet på din side ligger i en database, og du er vant til at
skrive SQL-sætninger, er det ligetil.
$soegeord = $_GET["soegeord"];
(... inputvalidering ...)
$sql = select (feltnavne) from [tabel-navn]
where overskrift like '%".$soegeord."%'
or tekst like '%".$soegeord."%' ";
Ellers er der jo Freefind:
http://www.freefind.com/
--
Philip - http://www.chartbase.dk | http://www.hitsurf.dk
| |
oz7aik (19-12-2009)
| Kommentar Fra : oz7aik |
Dato : 19-12-09 15:09 |
|
"Philip Nunnegaard" <nunnenospam@hitsurf.dk> skrev i meddelelsen
news:4b2cdcba$0$56781$edfadb0f@dtext02.news.tele.dk...
> oz7aik skrev:
>> findes der et php eller lin. program, man kan have på sin side (server)
>> som "database" så besøgene kan søge på ens hjemmeside,
>
> Hvis indholdet på din side ligger i en database, og du er vant til at
> skrive SQL-sætninger, er det ligetil.
>
> $soegeord = $_GET["soegeord"];
> (... inputvalidering ...)
>
> $sql = select (feltnavne) from [tabel-navn]
> where overskrift like '%".$soegeord."%'
> or tekst like '%".$soegeord."%' ";
>
> Ellers er der jo Freefind:
> http://www.freefind.com/
>
> --
> Philip - http://www.chartbase.dk | http://www.hitsurf.dk
nej indholdet ligge ikke i en database,
findes der et program som kan designe en database ud fra de sider jeg har,
og vises på en ny side en eller anden form for, faq, hjælp m.m.
oz7
| |
oz7aik (19-12-2009)
| Kommentar Fra : oz7aik |
Dato : 19-12-09 15:16 |
|
"oz7aik" <ozxxxx@xxxxx.dk> skrev i meddelelsen
news:4b2cde96$0$56771$edfadb0f@dtext02.news.tele.dk...
>
> "Philip Nunnegaard" <nunnenospam@hitsurf.dk> skrev i meddelelsen
> news:4b2cdcba$0$56781$edfadb0f@dtext02.news.tele.dk...
>> oz7aik skrev:
>>> findes der et php eller lin. program, man kan have på sin side (server)
>>> som "database" så besøgene kan søge på ens hjemmeside,
>>
>> Hvis indholdet på din side ligger i en database, og du er vant til at
>> skrive SQL-sætninger, er det ligetil.
>>
>> $soegeord = $_GET["soegeord"];
>> (... inputvalidering ...)
>>
>> $sql = select (feltnavne) from [tabel-navn]
>> where overskrift like '%".$soegeord."%'
>> or tekst like '%".$soegeord."%' ";
>>
>> Ellers er der jo Freefind:
>> http://www.freefind.com/
>>
>> --
>> Philip - http://www.chartbase.dk | http://www.hitsurf.dk
>
> nej indholdet ligge ikke i en database,
> findes der et program som kan designe en database ud fra de sider jeg har,
> og vises på en ny side en eller anden form for, faq, hjælp m.m.
>
> oz7
>
hej igen
eller et program som kan lavet en form for Indholdfortelse med bogmærker
m.m.
eller skal man lave det manuel
oz7
| |
Stig Johansen (19-12-2009)
| Kommentar Fra : Stig Johansen |
Dato : 19-12-09 19:05 |
|
Philip Nunnegaard wrote:
> $soegeord = $_GET["soegeord"];
> (... inputvalidering ...)
>
> $sql = select (feltnavne) from [tabel-navn]
> where overskrift like '%".$soegeord."%'
> or tekst like '%".$soegeord."%' ";
Hov hov - Philip, det har altid[1] været god latin at bruge parameterized
queries, eller prepared statements, som det også kaldes.
Selv PHP/mySQL ser ud til at understøtte det nu:
< http://dev.mysql.com/tech-resources/articles/4.1/prepared-statements.html>
så der er ingen undskyldning ;)
[1] Ja ok, 'altid' er et vidt begreb, men for mit vedkommende siden ca. '95,
hvor jeg begyndte at kigge på RDBMS'er i stedet for netværksdatabaser.
--
Med venlig hilsen
Stig Johansen
| |
Philip Nunnegaard (23-12-2009)
| Kommentar Fra : Philip Nunnegaard |
Dato : 23-12-09 12:32 |
|
Stig Johansen skrev:
> Hov hov - Philip, det har altid[1] været god latin at bruge parameterized
> queries, eller prepared statements, som det også kaldes.
Desværre er der ingen steder på nettet, hvor man kan se hvordan man
klarer det. MySQL's manual er ikke meget bevendt. Den forklarer kun at
man kan gøre det. Ikke hvordan.
Jeg googlede selv videre i dagene som fulgte, men ingen steder giver
noget som ikke er helt sort snak for mig.
Så det bliver nok noget jeg implementerer om en 5-10 år, når der endelig
dukker en person op som ikke er mere nørdet end at han kan formulere en
tutorial på et forståeligt sprog.
Indtil da må jeg bare leve med en masse linjer der validerer de enkelte
variabler, inden de puttes ind i sql-sætningerne.
| |
Stig Johansen (23-12-2009)
| Kommentar Fra : Stig Johansen |
Dato : 23-12-09 16:28 |
|
Philip Nunnegaard wrote:
> Jeg googlede selv videre i dagene som fulgte, men ingen steder giver
> noget som ikke er helt sort snak for mig.
>
> Så det bliver nok noget jeg implementerer om en 5-10 år, når der endelig
> dukker en person op som ikke er mere nørdet end at han kan formulere en
> tutorial på et forståeligt sprog.
>
> Indtil da må jeg bare leve med en masse linjer der validerer de enkelte
> variabler, inden de puttes ind i sql-sætningerne.
Leif har på et tidspunkt givet et eksempel:
< http://groups.google.com/group/dk.edb.internet.webdesign.serverside.php/tree/browse_frm/thread/3a07be57bc7b73be/43558b9e82babec6?rnum=1&q=sql+prepare+group%3Adk.edb.internet.webdesign.serverside.php+author%3Aleif+author%3Aneland&_done=%2Fgroup%2Fdk.edb.internet.webdesign.serverside.php%2Fbrowse_frm%2Fthread%2F3a07be57bc7b73be%2F107b49468febc0b3%3Fq%3Dsql%2Bprepare%2Bgroup%253Adk.edb.internet.webdesign.serverside.php%2Bauthor%253Aleif%2Bauthor%253Aneland%26#doc_107b49468febc0b3>
og
< http://groups.google.com/group/dk.edb.internet.webdesign.serverside.php/tree/browse_frm/thread/21b9902295001f8a/fc2154c5028d7d7f?rnum=11&q=sql+prepare+group%3Adk.edb.internet.webdesign.serverside.php+author%3Aleif+author%3Aneland&_done=%2Fgroup%2Fdk.edb.internet.webdesign.serverside.php%2Fbrowse_frm%2Fthread%2F21b9902295001f8a%2F3e7c1614489a5334%3Fq%3Dsql%2Bprepare%2Bgroup%253Adk.edb.internet.webdesign.serverside.php%2Bauthor%253Aleif%2Bauthor%253Aneland%26#doc_3e7c1614489a5334>
Det handler egenlig blot om at substituere input variable med ? i SQL
sætningerne, og 'binde' dem til variablerne efterfølgende.
I ASP har jeg lavet denne lille funktion som jeg includer:
< http://w-o-p-r.dk/tips/asp/SQL.inc.asp.txt>
så brugen gør det nemmere, som f.eks:
SQL = "select noget from tabel where id=?"
set rs=query(conn,SQL,Array(input),1)
eller
SQL = "insert into tabel values ?"
rowsaffected = query(conn,SQL,Array(input),1)
Det må være lige ud ad landevejen at lave det samme i PHP.
--
Med venlig hilsen
Stig Johansen
| |
Philip Nunnegaard (23-12-2009)
| Kommentar Fra : Philip Nunnegaard |
Dato : 23-12-09 22:48 |
| | |
Stig Johansen (24-12-2009)
| Kommentar Fra : Stig Johansen |
Dato : 24-12-09 02:41 |
|
Philip Nunnegaard wrote:
>
> Ja, den giver lidt mere svar på hvordan man "oversætter" min SQL-sætning
> til "det nye".
Glemte vist lige et link til eksempler med mere end 1 parameter:
< http://php.net/manual/en/mysqli-stmt.bind-param.php>
--
Med venlig hilsen
Stig Johansen
| |
Stig Johansen (24-12-2009)
| Kommentar Fra : Stig Johansen |
Dato : 24-12-09 02:40 |
|
Philip Nunnegaard wrote:
> Det havde jeg næsten regnet ud. Det var bare det med at opsnappe hvordan
> man indsatte en bestemt streng på ?'ets plads (det forstår jeg stadig
> ikke helt).
> Selve syntaksen er sort snak for mig, men det skyldes nok at jeg ikke
> forstår dette "->".
> Jeg gætter på at det er en alternativ måde at køre med arrays på,
> hvilket din ASP-version også antyder.
Både ja og nej.
Normalt ville man skrive eks.
select <noget> from <tabel> where user='philip', eller rettere
select <noget> from <tabel> where user='$_GET[user]'
Hvis user indeholder phillip, så bliver den aktuelle streng send til
serveren, og her har man brug for 'sanitizing' af input, så man ikke kan
lave SQL injection.
Det kræver at man tager højde for en masse ting, ikke blot ', men også hex
værdier m.m.
Det man gør i stedet er at angive en parameter, eller placeholder med ? ,
som fortæller, at her skal der indsættes noget data.
Her er forskellen at selve SQL sætningen og data sendes hver for sig, så
uanset hvad man skriver i felterne, vil det altid være _data_ og ikke
_sql_.
Derfor behøver man ikke nogen som helst validering af inputfelter (ud over
det kosmetiske/systemmæssige).
Det foregår på den måde, at ?-tegnene repræsenterer en parameter i den
rækkefølge de optræder, så hvis der er mange, skal man holde tungen lige i
munden.
Så du skal bare forestille dig, at data til parametrene bliver indsat
på ?-tegnenes plads, selv om det foregår på en anden måde teknisk set.
> Jeg er ofte stået af, når syntaksen bevæger sig for langt væk fra det
> talte sprog.
Ja, det er også lidt kryptisk med de ?-tegn.
I nogle af mine andre udviklingsværktøjer kan man internt operere med
navngivne parametre, så man i stedet kan skrive:
select <noget> from <tabel> where user=:user
og referere til parameteren med:
parameters('user')
Det giver et bedre overblik.
Hvis man skulle bruge det meget (og tit) kunne man lave en lille funktion,
der holder styr på disse navne, og generere ? til serveren, men i ASP regi
bruger jeg ikke de store komplicerede queries, så det kan ikke betale sig.
> Uanset så ser det ud til at også selve forbindelsen til databasen skal
> laves helt om i forhold til mit nuværende, så jeg vil blive nødt til at
> køre med 2 åbnefunktioner i en overgangsperiode, til det gamle er helt
> udfaset.
Det har jeg ikke taget stilling til, da jeg ikke rigtig bruger PHP til andet
end lidt småtest.
I MS verdenen har vi ADO, som er universel på tværs af databaser (og
tekst/regneark), så der er ikke behov for at skelne/ændre på tværs af
databaser og metoder, og før det ODBC, som også var standard på tværs af
databaser.
Det har undret mig, at man i PHP har laver klienter til hver sin database i
stedet for at normalisere det, for det betyder at man er låst fast til en
given database.
Men jeg synes jeg har set noget der hedder PDO, så måske kommer det engang.
Dog er det formentlig noget som udbyderne også skal understøtte.
--
Med venlig hilsen
Stig Johansen
| |
Jonathan Stein (26-12-2009)
| Kommentar Fra : Jonathan Stein |
Dato : 26-12-09 12:00 |
|
Stig Johansen skrev:
> Det har undret mig, at man i PHP har laver klienter til hver sin database i
> stedet for at normalisere det, for det betyder at man er låst fast til en
> given database.
Man skal jo starte et sted - og så længe databaserne er forskellige, må
man jo starte med en driver til hver enkelt.
> Men jeg synes jeg har set noget der hedder PDO, så måske kommer det engang.
Der findes flere forskellige abstraktionslag (bl.a. et ODBC-interface):
http://www.php.net/manual/en/refs.database.abstract.php
> Dog er det formentlig noget som udbyderne også skal understøtte.
Et abstraktionslag må jo altid vælge mellem at tilbyde laveste
fællesnævner - eller tilbyde noget, som ikke er understøttet af alle
bagvedliggende systemer.
M.v.h.
Jonathan
--
Er din email vigtig? Er du træt af, at din hjemmeside er nede?
Stabilt webhotel på redundant setup med daglig backup.
POP3, IMAP, PHP, JSP, Java, Perl, Python, Telnet, SSH, Cron-jobs m.v.
http://www.jsp-hotel.dk/
| |
Stig Johansen (26-12-2009)
| Kommentar Fra : Stig Johansen |
Dato : 26-12-09 13:02 |
|
Jonathan Stein wrote:
> Et abstraktionslag må jo altid vælge mellem at tilbyde laveste
> fællesnævner - eller tilbyde noget, som ikke er understøttet af alle
> bagvedliggende systemer.
Taler vi samme sprog?
Der er ikke noget til hinder for at lave et abstraktionslag, der som minimum
er SQL compliant.
At man så evt. kan lave nogle ekstra funktioner (aka vendor lockin) betyder
ikke, at det er 'laveste fællesnævner', blot at man bevæger sig ud over
standarder.
Hvilke funktioner mener du der er særegne for de forskellige
abstraktionslag?
(og som har _betydning_ i et produktionsmiljø).
--
Med venlig hilsen
Stig Johansen
| |
Jonathan Stein (26-12-2009)
| Kommentar Fra : Jonathan Stein |
Dato : 26-12-09 15:06 |
|
Stig Johansen skrev:
>> Et abstraktionslag må jo altid vælge mellem at tilbyde laveste
>> fællesnævner - eller tilbyde noget, som ikke er understøttet af alle
>> bagvedliggende systemer.
>
> Taler vi samme sprog?
Måske ikke. Jeg læste "udbyderne" som database-producenterne, men nu kan
jeg se, at det nok skulle læses som webhotel-udbyderne.
M.v.h.
Jonathan
--
Er din email vigtig? Er du træt af, at din hjemmeside er nede?
Stabilt webhotel på redundant setup med daglig backup.
POP3, IMAP, PHP, JSP, Java, Perl, Python, Telnet, SSH, Cron-jobs m.v.
http://www.jsp-hotel.dk/
| |
Jonathan Stein (26-12-2009)
| Kommentar Fra : Jonathan Stein |
Dato : 26-12-09 11:56 |
|
Philip Nunnegaard skrev:
> Selve syntaksen er sort snak for mig, men det skyldes nok at jeg ikke
> forstår dette "->".
Det er PHP's syntaks, når man arbejder med objekter.
En af fordelene ved Mysqli-interfacet er, at det (også) er implementeret
objektorienteret.
"Også" betyder dog, at der er frit valg - man kan stadig bruge
almindelige funktionskald som med det gamle MySQL-interface.
M.v.h.
Jonathan
--
Er din email vigtig? Er du træt af, at din hjemmeside er nede?
Stabilt webhotel på redundant setup med daglig backup.
POP3, IMAP, PHP, JSP, Java, Perl, Python, Telnet, SSH, Cron-jobs m.v.
http://www.jsp-hotel.dk/
| |
Michael Rasmussen (19-12-2009)
| Kommentar Fra : Michael Rasmussen |
Dato : 19-12-09 19:50 |
| | |
Stig Johansen (20-12-2009)
| Kommentar Fra : Stig Johansen |
Dato : 20-12-09 05:11 |
|
Michael Rasmussen wrote:
> On Sat, 19 Dec 2009 19:05:18 +0100
> Stig Johansen <wopr.dk@gmaill.com> wrote:
>
>> Selv PHP/mySQL ser ud til at understøtte det nu:
>>
< http://dev.mysql.com/tech-resources/articles/4.1/prepared-statements.html>
>> så der er ingen undskyldning ;)
>>
> Nyt og nyt MySQL 4.1 er fra 2003. PHP har understøttet prepared
> statements siden php3. php3 blev udgivet i slutningen af 1990'erne.
Jeg underesøgte det ikke så nøje, hæftede mig blot ved, at der blev nævnt
PHP 5 i det link jeg henviste til, samt at de store CMS'er (wordpress,
drupal o. lign.) ikke bruger prepared statements.
--
Med venlig hilsen
Stig Johansen
| |
oz7aik (20-12-2009)
| Kommentar Fra : oz7aik |
Dato : 20-12-09 10:09 |
|
"Stig Johansen" <wopr.dk@gmaill.com> skrev i meddelelsen
news:4b2da441$0$279$14726298@news.sunsite.dk...
> Michael Rasmussen wrote:
>
>> On Sat, 19 Dec 2009 19:05:18 +0100
>> Stig Johansen <wopr.dk@gmaill.com> wrote:
>>
>>> Selv PHP/mySQL ser ud til at understøtte det nu:
>>>
> < http://dev.mysql.com/tech-resources/articles/4.1/prepared-statements.html>
>>> så der er ingen undskyldning ;)
>>>
>> Nyt og nyt MySQL 4.1 er fra 2003. PHP har understøttet prepared
>> statements siden php3. php3 blev udgivet i slutningen af 1990'erne.
>
> Jeg underesøgte det ikke så nøje, hæftede mig blot ved, at der blev nævnt
> PHP 5 i det link jeg henviste til, samt at de store CMS'er (wordpress,
> drupal o. lign.) ikke bruger prepared statements.
>
> --
> Med venlig hilsen
> Stig Johansen
tak
Jeg blev ikke kloger
jeg må nok lave et indholdfortegelse manuel
oz7
| |
|
|