Avatar billede rotco Juniormester
16. juli 2008 - 16:43 Der er 23 kommentarer og
1 løsning

Form / Input / type hjælp

Hejsa, nu har jeg lidt af et problem...

<form name="form1" method="post" action=""><input name="1point" type="image" src="img/1stjerner.gif"/></form>

Viser en stjerne som man kan klikke på, problemer er bare. . . Det virker ikke ligesom type="submit", og jeg SKAL bruge den stjerne og ikke bare den grå kasse.
Sådan her er den grå kasse:

<form name="form1" method="post" action=""><input name="1point" type="submit" value="1 Point"></form>

Den virker derimod!

Det er fordi at jeg har lavet et php-script, og det virker fint uden type="submit" men ikke med type="image"

men det er image jeg skal bruge, så er der nogen der har et forslag?
Avatar billede Slettet bruger
16. juli 2008 - 16:48 #1
smid noget javascript på den som kører submit på formen
Avatar billede rotco Juniormester
16. juli 2008 - 17:06 #2
Javascript er ikke lige min stærke side.

Hvordan ville du sætte det ind? Hvis du da overhovedet gider
Avatar billede Slettet bruger
16. juli 2008 - 17:21 #3
utestet:

<form name="form1" method="post" action="" id="givEn"><input name="1point" type="image" src="img/1stjerner.gif"
onclick="document.givEn.submit()"
/></form>

der er sikkert bedre metoder
Avatar billede rotco Juniormester
16. juli 2008 - 17:33 #4
Det gør ingen forskel.. Den submitter ikke og mit script reagere ikke på den :-/
Avatar billede fbisen Nybegynder
16. juli 2008 - 17:39 #5
Det skal vidst være name i stedet for id.

<form name="form1" method="post" action="" name="givEn"><input name="1point" type="image" src="img/1stjerner.gif"
onclick="document.givEn.submit();"
/></form>
Avatar billede rotco Juniormester
16. juli 2008 - 17:47 #6
Nope, virker heller ikke... Hmm
Avatar billede fbisen Nybegynder
16. juli 2008 - 18:06 #7
Hov, der er jo to names nu :P Do'H :)

Har kogt den lidt ned:
<form name="givEn" method="post" action="index.php">
<input type="image" src="img/1stjerner.gif" onclick="document.givEn.submit();">
</form>
Avatar billede rotco Juniormester
16. juli 2008 - 18:09 #8
Havde sådan set selv lavet lidt om i det hehe :)

Men det virker sgu stadig ikke. Det er sgu lidt en belastning :)
Avatar billede fbisen Nybegynder
16. juli 2008 - 18:12 #9
Det er altså lidt underligt. Jeg har testet det i FF 3. Der virker det fint på min server...
Avatar billede rotco Juniormester
16. juli 2008 - 18:15 #10
Problemet er at det jo samarbejder med php... Og den skal submitte data til min database...

Hvilket den ikke gør når det er med image
Avatar billede fbisen Nybegynder
16. juli 2008 - 18:32 #11
Okay. Det ændrer lidt på hvad det er. Lad os se på dette:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Test</title>
</head>
<body>
<?php
if(isset($_POST['hej'])) echo($_POST['hej']);
if(isset($_POST['billede'])) echo($_POST['billede']);
?>


<form name="givEn" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input name="billede" type="image" src="img/1stjerner.gif" value="Her er også noget" onClick="document.givEn.submit();">
<input name="hej" type="text" value="Hejsa">
</form>


</body>
</html>

Dette giver et output fra mine to echoes:
Echo1: Hejsa
Echo2: Her er også noget
Avatar billede rotco Juniormester
16. juli 2008 - 18:49 #12
arh, så hvordan ville du få den til at samarbejde med det her stykke kode?

<?php
$res = mysql_query("select * from sjovspas where id = '$_GET[sid]'");
if(mysql_num_rows($res) == "0");
$rs = mysql_fetch_object($res);
session_start();

if($_POST['1point']){
if($_SESSION['loggetind'] !== "yes"){
echo "
<script language='Javascript'>
alert ('Du skal være logget ind for at afgive stemmer')
</script>
";
}
else
if($_POST['1point']){
$news_hits = ($rs->hits + 1);
$a_s = ($rs->antalstemmer + 1);
$a_p = ($rs->antalstemmepoint + 1);
mysql_query("update $table_1 set hits = '$news_hits' where id = '$rs->id'");
mysql_query("update sjovspas set antalstemmer = '$a_s' where id = '$rs->id'");
mysql_query("update sjovspas set antalstemmepoint = '$a_p' where id = '$rs->id'");
echo "
<script language='Javascript'>
alert ('Du har givet 1 point til denne film')
</script>
";
}
}
else

etc.
Avatar billede rotco Juniormester
16. juli 2008 - 19:20 #13
Det skal jo lige siges at billedet jo vises, så det er ikke det der er problemet...

Billedet vises, men de samarbejder ikke
Avatar billede fbisen Nybegynder
16. juli 2008 - 19:55 #14
Eventuelt sådan her:


-------------PHP------------------
<?php
$res = mysql_query("select * from sjovspas where id = '$_GET[sid]'");
if(mysql_num_rows($res) == "0");
$rs = mysql_fetch_object($res);
session_start();

if(isset($_POST['1point'])){
if($_SESSION['loggetind'] !== "yes"){
echo "
<script language='Javascript'>
alert ('Du skal være logget ind for at afgive stemmer')
</script>
";
}
else
if(isset($_POST['1point']) && $_POST['1point'] == "on"){
$news_hits = ($rs->hits + 1);
$a_s = ($rs->antalstemmer + 1);
$a_p = ($rs->antalstemmepoint + 1);
mysql_query("update $table_1 set hits = '$news_hits' where id = '$rs->id'");
mysql_query("update sjovspas set antalstemmer = '$a_s', antalstemmepoint = '$a_p where id = '$rs->id'");
echo "
<script language='Javascript'>
alert ('Du har givet 1 point til denne film')
</script>
";
}
}
else



------------FORM---------------


<form name="givEn" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input name="1point" id="billede" type="image" src="img/1stjerner.gif" value="Her er også noget" onClick="document.getElementById('billede').value = 'on'; document.givEn.submit();">
</form>
Avatar billede Slettet bruger
16. juli 2008 - 21:42 #15
nu koder jeg normalt ikke i PHP, men er den

select * from sjovspas where id = '$_GET[sid]'

ikke direkte farlig? Kan brugeren angive 'sid' på en eller anden måde?
Avatar billede fbisen Nybegynder
16. juli 2008 - 21:52 #16
Jo, det har du ret i. Han kan også gøre værere ting.
mysql_real_escape_string() ville være en god funktion at bruge her.
Avatar billede olebole Juniormester
16. juli 2008 - 22:05 #17
<ole>

Brug mysqli i stedet  ;o)

/mvh
</bole>
Avatar billede Slettet bruger
16. juli 2008 - 22:11 #18
den kender jeg så ikke lige

skriver normalt i perl
Avatar billede rotco Juniormester
17. juli 2008 - 01:59 #19
Nogen der gider forklarer mig hvorfor at det er direkte farligt?

Og det skal forklares som om du snakkede til en 5 årig..

Derudover, så virker det ikke... Well, jeg kan sgu snart ikke se nogle løsninger :)
Avatar billede fbisen Nybegynder
17. juli 2008 - 09:45 #20
Lad os sige at SID som brugeren skriver er følgende
'; DROP TABLE sjovspas;'

select * from sjovspas where id = '$_GET[sid]'
select * from sjovspas where id = ''; DROP TABLE sjovspas;'

Resultatet kunne være, hvis mysql_query tog imod 2 querys på én gang, at sjovspass bliver slettet.
Hvis du bruger mysql_real_escape_string ville
'; DROP TABLE sjovspas;'
komme til at se således ud:
\'; DROP TABLE sjovspas;\'
Og queryen ville nok ikke give mening, men ikke give adgang for angriberen.
select * from sjovspas where id = '\'; DROP TABLE sjovspas;\''
Avatar billede Slettet bruger
17. juli 2008 - 10:19 #21
det er netop denne slags fejl som gør alle disse SQL injektioer mulige.

hvis man har en applikation som kun skal læse fra DBen men ikke skrive til den (insert/update), så kan man lave en bruger til DBen som kun har select rettigheder så burde ovenstående ikke være så farligt vil bare give en fejl.
Avatar billede roenving Novice
17. juli 2008 - 17:07 #22
Hvordan har du problemet, for indsætter jeg formen i et tomt dokument, virker submittingen umiddelbart ...

-- en anden ting er, at et navn, der starter med et tal absolut ikke kan anbefales, da det ikke følger rekommendationerne !-)
Avatar billede fbisen Nybegynder
21. august 2008 - 21:30 #23
Er der sket noget her siden sidst?
Avatar billede rotco Juniormester
24. januar 2009 - 16:00 #24
Desværre gik det sådan at jeg blev nødt til at lave en form for hver enkelt stjerne da intet af det virkede, hvilket jeg ikke forstår!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester