/ 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
Hvordan skjuler man f.eks en handling for ~
Fra : Martin Stender


Dato : 14-08-02 22:05

Hej alle,

Jeg har et system under opsejling, hvor de enkelte brugere kan kommunikere
indbyrdes via en slags pseudo-mail, som i realiteten kun er en tabel i en
database.

Når brugeren ønsker at slette en mail, er der den sædvanlige
'delete.php?id=123' eller hvad nu...

Men det kræver jo ikke voldsom meget intelligent, at kopiere den url, og for
sjov ændre '123' til 456, bare for at se hvad der sker...

Jeg kan selvfølgelig tjekke om den pågældende bruger nu også har ret til at
slette den pågældende række før det sker, men det kræver mindst 2 queries
til databasen - noget vi jo alle prøver at begrænse til et minimum ...

Er der en smartere måde?

Mvh
Martin





 
 
ZtinKyFinGaZ (14-08-2002)
Kommentar
Fra : ZtinKyFinGaZ


Dato : 14-08-02 22:14

<frameset cols="*">
<frame src="delete.php?id=<?PHP echo $id; ?>">
</frameset>

Jo, det virker kun at have een frame, og det er smart, hvis man vil have een
enkelt adresse til at stå oppe i adressebaren. Har selv brugt det utallige
gange.

Ellers gør du således. Smid det her ind i delete.php
<script language="JavaScript">
location.href = ('index.php');
</script>

Og håb så på, at din server er hurtig nok, til at man ikke når at se
delete.php.
Håber, det kunne hjælpe. Og undskyld JS svar. Det var jo ikk det, du kom
efter.
--
- ZtinKyFinGaZ
~~~~~~~~~~
Email+MSN Messenger: ztinkyfingaz@hotmail.[fjern]com
ICQ. Fjern 8taller (Bruger jeg ikke så meget): 888130701643888


"Martin Stender" <martin@stender.com> skrev i en meddelelse
news:3d5ac664$0$27839$edfadb0f@dspool01.news.tele.dk...
> Hej alle,
>
> Jeg har et system under opsejling, hvor de enkelte brugere kan kommunikere
> indbyrdes via en slags pseudo-mail, som i realiteten kun er en tabel i en
> database.
>
> Når brugeren ønsker at slette en mail, er der den sædvanlige
> 'delete.php?id=123' eller hvad nu...
>
> Men det kræver jo ikke voldsom meget intelligent, at kopiere den url, og
for
> sjov ændre '123' til 456, bare for at se hvad der sker...
>
> Jeg kan selvfølgelig tjekke om den pågældende bruger nu også har ret til
at
> slette den pågældende række før det sker, men det kræver mindst 2 queries
> til databasen - noget vi jo alle prøver at begrænse til et minimum ...
>
> Er der en smartere måde?
>
> Mvh
> Martin
>
>
>
>



Kim Schulz (14-08-2002)
Kommentar
Fra : Kim Schulz


Dato : 14-08-02 22:29

On Wed, 14 Aug 2002 23:04:59 +0200
"Martin Stender" <martin@stender.com> wrote:
> Hej alle,
>
> Jeg har et system under opsejling, hvor de enkelte brugere kan
> kommunikere indbyrdes via en slags pseudo-mail, som i realiteten kun
> er en tabel i en database.
>
> Når brugeren ønsker at slette en mail, er der den sædvanlige
> 'delete.php?id=123' eller hvad nu...
>
> Men det kræver jo ikke voldsom meget intelligent, at kopiere den url,
> og for sjov ændre '123' til 456, bare for at se hvad der sker...
>
> Jeg kan selvfølgelig tjekke om den pågældende bruger nu også har ret
> til at slette den pågældende række før det sker, men det kræver mindst
> 2 queries til databasen - noget vi jo alle prøver at begrænse til et
> minimum ...
>
> Er der en smartere måde?

ja men det er en javascript måde:

prop en form rundt om din "mail liste" ala:

<form name="mails_form" action="delete.php" method="post">
<input type=hidden name="id" value="0">
.....mails...
</form>

og så hav et javascript ala:

function SletMail(mailid)
   {
   var remove = confirm("Er du sikkert på, at du vil slette den markerede
mail?");

   if (remove == true)
      {
      document.mails_form.id.value = mailid;
      document.mails_form.submit();
      }
   }


din "slet" knap skal så laves således:

<a href="#" title="slet mail"
onClick="javascript:SletMail(DITMAILID);return(false);">Slet</a>

DITMAILID erstatter du så med "123" eller hvad den pågældende mail nu
har af id!

På denne måde laver du en "POST" til serveren og skjuler derfor
variabler for brugeren.

Du kan se det i aktion i mit (med en kammerat) hyggeprojekt på:
http://www.linuxia.dk/projekter/nettek/

Der benyttes denne form for posting hele vejen igennem siden.

--
Kim Schulz - Freelance Development | I generally avoid temptation
www.schulz.dk - En nørds bekendelser | unless I can't resist it. --
www.linuxia.dk - hverdagens små hacks | Mae West

Michael Rasmussen (14-08-2002)
Kommentar
Fra : Michael Rasmussen


Dato : 14-08-02 23:46

On Wed, 14 Aug 2002 23:29:01 +0200, Kim Schulz wrote:

> Du kan se det i aktion i mit (med en kammerat) hyggeprojekt på:
> http://www.linuxia.dk/projekter/nettek/
>
> Der benyttes denne form for posting hele vejen igennem siden.
Din side ser da vældig godt ud, men ser den altid ens ud?

Prøv lige nedenstående link:
http://validator.w3.org/check?uri=http://www.linuxia.dk/projekter/nettek/
--
Hilsen/Sincerely
Michael Rasmussen

"C makes it easy to shoot yourself in the foot; C++ makes it harder,
but when you do, it blows away your whole leg." - Bjarne Stroustrup
-------------------------------------------------------------------
Fjern NOSPAM fra min adresse, for at sende mig en mail

Tinky Winky (14-08-2002)
Kommentar
Fra : Tinky Winky


Dato : 14-08-02 23:13

> Jeg har et system under opsejling, hvor de enkelte brugere kan kommunikere
> indbyrdes via en slags pseudo-mail, som i realiteten kun er en tabel i en
> database.
>
> Når brugeren ønsker at slette en mail, er der den sædvanlige
> 'delete.php?id=123' eller hvad nu...
>
> Men det kræver jo ikke voldsom meget intelligent, at kopiere den url, og
for
> sjov ændre '123' til 456, bare for at se hvad der sker...
>
> Jeg kan selvfølgelig tjekke om den pågældende bruger nu også har ret til
at
> slette den pågældende række før det sker, men det kræver mindst 2 queries
> til databasen - noget vi jo alle prøver at begrænse til et minimum ...
>
> Er der en smartere måde?

Er det en meget presset server?

Så meget koster det heller ikke at lave en query. Jeg ville hellere have at
systemet var beskyttet i mod at en fandt på at slette det hele, end at spare
en par query pr. sletning.

Mindst 2 queries for at finde ud af om man kan slette? Kan du ikke lave
noget join? Jeg lavede på et tidspunkt en SQL query, der tog højde for den
slags. Hvis du har id'et og brugeren som variabel i en SQL sætning burde det
kunne laves i en sætning. Men det bliver måske problematisk med MySQL, da
den ikke kan lave subqueries.



Kim Schulz (14-08-2002)
Kommentar
Fra : Kim Schulz


Dato : 14-08-02 23:58

On Thu, 15 Aug 2002 00:46:10 +0200
Michael Rasmussen <mir@datanom.net> wrote:
> On Wed, 14 Aug 2002 23:29:01 +0200, Kim Schulz wrote:
>
> > Du kan se det i aktion i mit (med en kammerat) hyggeprojekt på:
> > http://www.linuxia.dk/projekter/nettek/
> >
> > Der benyttes denne form for posting hele vejen igennem siden.
> Din side ser da vældig godt ud, men ser den altid ens ud?

ja 99% ens. testet i netscape 4,7,6.x,7pr1, IE 5x,6x, konquerer, galeon,
mozilla, opera 5x,6x
(kan faktisk ikke lige huske om det virkede i ns4x serien, men det mener
jeg den gjorde)

> Prøv lige nedenstående link:
> http://validator.w3.org/check?uri=http://www.linuxia.dk/projekter/nettek/

Det ved vi desværre godt. Siden blev lavet i forbindelse med en
studieopgave på UNI. Sensor krævede at den skulle være IE kompatibel. IE
er desvære snot dum hvad angår div tags og CSS generelt, og vi har
derfor måtte omgåes w3 specifikationerne en del for at få det til at
virke i IE.
Nogle fejl er der også bare fordi tid blev fokuseret på funktionalitet
og tiden i den sidste ende løb lidt fra os (det med at starte på et
projekt ca. samtidigt med at det skal afleveres).
Generelt var jeg overresket over at IE havde større problemer med CSS og
DIV end netscape havde. Flere steder var IE direkte latterligt lavet og
der var flere gange store forskelle mellem 5.5 og 6.0




--
Kim Schulz - Freelance Development | "It is very easy to get
www.schulz.dk - En nørds bekendelser | ridiculously confused about
www.linuxia.dk - hverdagens små hacks | the tenses of time travel,

Peter Brodersen (15-08-2002)
Kommentar
Fra : Peter Brodersen


Dato : 15-08-02 00:50

On Wed, 14 Aug 2002 23:04:59 +0200, "Martin Stender"
<martin@stender.com> wrote:

>Jeg kan selvfølgelig tjekke om den pågældende bruger nu også har ret til at
>slette den pågældende række før det sker, men det kræver mindst 2 queries
>til databasen - noget vi jo alle prøver at begrænse til et minimum ...

2 queries burde ikke være noget problem, og slet ikke, hvis du har
relevante indexes på (hvilket du ret sikkert har for den tabel, du
sletter noget i).

Det ekstra query vil du nok ret sikkert gerne betale for en
brugervalidering ;)

--
- Peter Brodersen

Martin Stender (15-08-2002)
Kommentar
Fra : Martin Stender


Dato : 15-08-02 07:50

Tak, alle -
Javascript metoden virker ok, men brugeren kan selvfølgelig stadig kigge i
html-sourcen, og lave ballade...

Jeg tror den ekstra validering er måden, plus at jeg jo så (hæ...) kan lave
en log tabel, som registrerer en bruger som prøver at slette et indlæg
vedkommende
ikke har rettigheder til ...

Tak,
Martin
----- Original Message -----
From: "Peter Brodersen" <usenet@ter.dk>
Newsgroups: dk.edb.internet.webdesign.serverside.php
Sent: Thursday, August 15, 2002 1:49 AM
Subject: Re: Hvordan skjuler man f.eks en handling for brugeren ...


> On Wed, 14 Aug 2002 23:04:59 +0200, "Martin Stender"
> <martin@stender.com> wrote:
>
> >Jeg kan selvfølgelig tjekke om den pågældende bruger nu også har ret til
at
> >slette den pågældende række før det sker, men det kræver mindst 2 queries
> >til databasen - noget vi jo alle prøver at begrænse til et minimum ...
>
> 2 queries burde ikke være noget problem, og slet ikke, hvis du har
> relevante indexes på (hvilket du ret sikkert har for den tabel, du
> sletter noget i).
>
> Det ekstra query vil du nok ret sikkert gerne betale for en
> brugervalidering ;)
>
> --
> - Peter Brodersen




Anders Madsen (15-08-2002)
Kommentar
Fra : Anders Madsen


Dato : 15-08-02 09:07

Alle de ovenstående forslag til client-side løsninger, er muligvis smarte,
men ikke desto mindre usikre...
Jeg foreslår at du gør som du selv foreslog, nemlig laver en query der
finder ud af om personen har ret til at
slette mailen.

Så mange ressourcer bruger en auery jo heller ikke.

Mvh Anders Madsen

"Martin Stender" <martin@stender.com> skrev i en meddelelse
news:3d5ac664$0$27839$edfadb0f@dspool01.news.tele.dk...
> Hej alle,
>
> Jeg har et system under opsejling, hvor de enkelte brugere kan kommunikere
> indbyrdes via en slags pseudo-mail, som i realiteten kun er en tabel i en
> database.
>
> Når brugeren ønsker at slette en mail, er der den sædvanlige
> 'delete.php?id=123' eller hvad nu...
>
> Men det kræver jo ikke voldsom meget intelligent, at kopiere den url, og
for
> sjov ændre '123' til 456, bare for at se hvad der sker...
>
> Jeg kan selvfølgelig tjekke om den pågældende bruger nu også har ret til
at
> slette den pågældende række før det sker, men det kræver mindst 2 queries
> til databasen - noget vi jo alle prøver at begrænse til et minimum ...
>
> Er der en smartere måde?
>
> Mvh
> Martin
>
>
>
>



Johan Holst Nielsen (15-08-2002)
Kommentar
Fra : Johan Holst Nielsen


Dato : 15-08-02 10:23

> Når brugeren ønsker at slette en mail, er der den sædvanlige
> 'delete.php?id=123' eller hvad nu...
>
> Men det kræver jo ikke voldsom meget intelligent, at kopiere den url, og for
> sjov ændre '123' til 456, bare for at se hvad der sker...
>
> Jeg kan selvfølgelig tjekke om den pågældende bruger nu også har ret til at
> slette den pågældende række før det sker, men det kræver mindst 2 queries
> til databasen - noget vi jo alle prøver at begrænse til et minimum ...
>
> Er der en smartere måde?

Kan muligvis godt laves med en query...

tabel brugere:

id - navn - osv osv...

tabel "mail":
id - bid (som referer til id hos bruger tabel)...

$query = "DELETE FROM mail USING mail, brugere WHERE mail.bid =
brugere.id AND mail.id = ".$mailid;

Og så brug
mysql_affected_rows() til at tjekke om der er deleted noget :)

Burde virke ;) Men prøv selv...

Iøvrigt... tror nok USING syntax er rimelig ny i MySQL? (version ??)

Ellers kan man nok bruge...

DELETE mail FROM mail, brugere WHERE mail.bid = brugere.id AND mail.id =
$mailid :)

mvh
Johan


Johan Holst Nielsen (15-08-2002)
Kommentar
Fra : Johan Holst Nielsen


Dato : 15-08-02 10:42



Johan Holst Nielsen wrote:
>> Når brugeren ønsker at slette en mail, er der den sædvanlige
>> 'delete.php?id=123' eller hvad nu...
>>
>> Men det kræver jo ikke voldsom meget intelligent, at kopiere den url,
>> og for
>> sjov ændre '123' til 456, bare for at se hvad der sker...
>>
>> Jeg kan selvfølgelig tjekke om den pågældende bruger nu også har ret
>> til at
>> slette den pågældende række før det sker, men det kræver mindst 2 queries
>> til databasen - noget vi jo alle prøver at begrænse til et minimum ...
>>
>> Er der en smartere måde?
>
>
> Kan muligvis godt laves med en query...
>
> tabel brugere:
>
> id - navn - osv osv...
>
> tabel "mail":
> id - bid (som referer til id hos bruger tabel)...
>
> $query = "DELETE FROM mail USING mail, brugere WHERE mail.bid =
> brugere.id AND mail.id = ".$mailid;
>
> Og så brug
> mysql_affected_rows() til at tjekke om der er deleted noget :)
>
> Burde virke ;) Men prøv selv...
>
> Iøvrigt... tror nok USING syntax er rimelig ny i MySQL? (version ??)
>
> Ellers kan man nok bruge...
>
> DELETE mail FROM mail, brugere WHERE mail.bid = brugere.id AND mail.id =
> $mailid :)


Wawa... er jo heller ikke helt sikkert :( Da den skal have en brugerID
fra et sted...

Muligheden er dog at smide en session ind i brugerdatabasen, og bruge
den til at spejle til DELETE querien... så det vil nok være den bedste
løsning? For der er sikkert en eller anden session i øjeblikket?

mvh
Johan


Martin Stender (16-08-2002)
Kommentar
Fra : Martin Stender


Dato : 16-08-02 08:07

Undskyld jeg var væk fra diskussionen en dag, nu da jeg selv havde startet
den ...(skulle lige lægge et nyt tag ...) men, ja, der er netop en
$_SESSION['username'] defineret, så min query er præcis som du foreslår ....

Sådan: DELETE FROM mail WHERE (sender = '" . $_SESSION['username'] . "') and
(id = '" . $_GET['id'] . "')";

Lige nu sker der bare ingenting, hvis en bruger piller ved strengen, og evt.
erstatter id'en med noget andet - det er også fint nok. Men det kunne være
sjovt at logge skumle aktiviteter....

Martin

"Johan Holst Nielsen" <johan@weknowthewayout.com> skrev i en meddelelse
news:3D5B7754.7080807@weknowthewayout.com...
>
>
> Johan Holst Nielsen wrote:
snip
> > Ellers kan man nok bruge...
> >
> > DELETE mail FROM mail, brugere WHERE mail.bid = brugere.id AND mail.id =
> > $mailid :)
>
>
> Wawa... er jo heller ikke helt sikkert :( Da den skal have en brugerID
> fra et sted...
>
> Muligheden er dog at smide en session ind i brugerdatabasen, og bruge
> den til at spejle til DELETE querien... så det vil nok være den bedste
> løsning? For der er sikkert en eller anden session i øjeblikket?
>
> mvh
> Johan
>





Johan Holst Nielsen (16-08-2002)
Kommentar
Fra : Johan Holst Nielsen


Dato : 16-08-02 08:46

> Undskyld jeg var væk fra diskussionen en dag, nu da jeg selv havde startet
> den ...(skulle lige lægge et nyt tag ...) men, ja, der er netop en
> $_SESSION['username'] defineret, så min query er præcis som du foreslår ....
>
> Sådan: DELETE FROM mail WHERE (sender = '" . $_SESSION['username'] . "') and
> (id = '" . $_GET['id'] . "')";
>
> Lige nu sker der bare ingenting, hvis en bruger piller ved strengen, og evt.
> erstatter id'en med noget andet - det er også fint nok. Men det kunne være
> sjovt at logge skumle aktiviteter....

Jaah..

$result = mysql_query($DELETE_TINGEST);
if(mysql_affected_rows($result) == 0) {
echo "HVAD FANDEN HAR DU GANG I?";
$fp = fopen("/logs/maillog", "a");
fputs($fp, date("Y-m-d H:i:s")." -- ".$_SERVER['REMOTE_ADDR']." --
Tried to delete mail ".$_GET['id']." with user ".$_SESSION['username']);
fclose($fp);
}
else {
echo "Du har nu slettet din mail!";
}


:))

mvh
Johan


Martin Mouritzen (15-08-2002)
Kommentar
Fra : Martin Mouritzen


Dato : 15-08-02 13:09

After I finished the 3 Pan Galactic Gargle Blasters, "Martin Stender"
<martin@stender.com> just offered me, he muttered some weird stuff,
and I had to correct this gibberish:

>Jeg kan selvfølgelig tjekke om den pågældende bruger nu også har ret til at
>slette den pågældende række før det sker, men det kræver mindst 2 queries
>til databasen - noget vi jo alle prøver at begrænse til et minimum ...
>
>Er der en smartere måde?

Ja. Det må vel fremgå et sted, hvem mail'en er til. (Og det er så også
ham som kan slette den).

I dit query laver du så

DELETE FROM mails WHERE id = ".$id." AND touser = '".$currentuser."'
--
Nano Martin Mouritzen Phone +45 27105580
Vesterbrogade 30C. 2. Programmer Advanced Simplicity
DK-8000 Århus martin@nano.dk http://www.nano.dk
Nano nu officiel dansk distributør af UltraEdit, se mere på websitet

Johan Holst Nielsen (15-08-2002)
Kommentar
Fra : Johan Holst Nielsen


Dato : 15-08-02 14:18

> Ja. Det må vel fremgå et sted, hvem mail'en er til. (Og det er så også
> ham som kan slette den).
>
> I dit query laver du så
>
> DELETE FROM mails WHERE id = ".$id." AND touser = '".$currentuser."'

Well... nu ikke en helt sikker løsning. currentuser skal defineres et
sted jo? Og dermed bliver man nødt til at refere til en session f.eks. i
brugertabellen for at være på den sikre side?

$currentuser får du vel fra et postrequest eller en forespørgsel i
tabellen... derfor må brugen af USING eller eller den anden løsning jeg
skrev tidligere :)

mvh
Johan


Niels Andersen (15-08-2002)
Kommentar
Fra : Niels Andersen


Dato : 15-08-02 15:35

Johan Holst Nielsen wrote in <3D5BAA1C.8020804@weknowthewayout.com>:
>> DELETE FROM mails WHERE id = ".$id." AND touser = '".$currentuser."'
> Well... nu ikke en helt sikker løsning. currentuser skal defineres et
> sted jo?

Det står såmen nok i sessions-dataen, og er dermed sikker nok.

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Ukendt (15-08-2002)
Kommentar
Fra : Ukendt


Dato : 15-08-02 23:27

>Men det kræver jo ikke voldsom meget intelligent, at kopiere den url, og for
>sjov ændre '123' til 456, bare for at se hvad der sker...

Man kunne jo give ID'et en gang med MD5()... eller lave et unikt navn,
som er SVÆRT at gætte

id=fmrmCXr492D3g256xGT

Gæt så hvad en anden post i DB'en har

>
>Jeg kan selvfølgelig tjekke om den pågældende bruger nu også har ret til at
>slette den pågældende række før det sker, men det kræver mindst 2 queries
>til databasen - noget vi jo alle prøver at begrænse til et minimum ...
>
>Er der en smartere måde?
>
>Mvh
>Martin
>
>
>


Søg
Reklame
Statistik
Spørgsmål : 177503
Tips : 31968
Nyheder : 719565
Indlæg : 6408541
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste