/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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 skrev:

> 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>

Ja, den giver lidt mere svar på hvordan man "oversætter" min SQL-sætning
til "det nye".

> Det handler egenlig blot om at substituere input variable med ? i SQL
> sætningerne, og 'binde' dem til variablerne efterfølgende.

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.

Jeg er ofte stået af, når syntaksen bevæger sig for langt væk fra det
talte sprog.

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.

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

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.

--
Hilsen/Regards
Michael Rasmussen
http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xE3E80917
A computer is like air conditioning: it becomes useless when you open
windows.


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


Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409074
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste