[PHP] Form probleempje

Pagina: 1
Acties:
  • 390 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • T1psY
  • Registratie: December 2006
  • Laatst online: 12:50

T1psY

Dumo-Technics

Topicstarter
Ik heb dus voor men community site een profielensysteem. Op de site is een zoekvakje, waar je een username intikt en je wordt dan doorgelinkt naar zen profiel.

Nu is het probleem dit: Als je in het zoekvak bevestigt met de return-toets, dan zegt het formuliertje "je hebt geen naam opgegeven". Druk je echter op de knop "Zoek!", dan vind hij het wel. Ik vind het vrij vervelend zo. Is dit op te lossen?

MvG,
TipsY

http://www.dumo-technics.com


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Tuurlijk is dit op te lossen maar hoe verwacht je dat wij dat voor je op kunnen lossen zonder dat je enige vorm van relevante code geeft? Daarbij verwachten we ook nog dat je aangeeeft wat je nu zelf al hebt geprobeerd en wat daar niet mee lukte dus geef dat aub ook nog even aan.

Wil je voor een volgende keer even Programming Beleid en dan met name Programming Beleid - De Quickstart even doorlezen? Dan weet je wat we hier van een topicstart verwachten en kan je gelijk de juiste informatie geven :)

En wanneer komt die melding? Dat zou namelijk ook nog wel eens door Javascript gegenereerd kunnen worden en als dat het geval is dan hoort je topic in Webdesign, Markup & Clientside Scripting.

[ Voor 14% gewijzigd door Creepy op 02-12-2007 22:13 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • T1psY
  • Registratie: December 2006
  • Laatst online: 12:50

T1psY

Dumo-Technics

Topicstarter
kijk dit is de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<table class="box">
 <tr>
  <td class="title">Mijn Account</td>
 </tr>
 <tr>
  <td class="box">
   <form method="post" action="searchuser.php">
    <b><u>Zoek een gebruiker</u></b><br />
    <input type="text" name="user">
    <input type="submit" name="search" value="Zoek!">
   </form>
  </td>
 </tr>
</table>

<br /><br />


De afhandeling van het script gebeurd volledig correct, maar ik zou willen dat als ik op de return-toets druk hij dus ook een $_POST['search'] doorstuurt. Dit gebeurt nu namelijk niet, waardoor je gebruik moet maken van de button wil je het goed laten werken. Dit is echter niet de bedoeling.

Het is geschreven in PHP dus ik dacht dat het hier hoorde omdat PHP serverside is.

http://www.dumo-technics.com


Acties:
  • 0 Henk 'm!

Verwijderd

Is dit het enige formulier dat op de pagina staat wanneer je last hebt van dit probleem?

En inderdaad, is er verder nog javascript op de pagina aanwezig?

Is het probleem op elke browser (IE, Gecko, etc) aanwezig?

Acties:
  • 0 Henk 'm!

  • torx
  • Registratie: Oktober 2006
  • Nu online
Als je wat php code kan laten zien moet het helemaal op te lossen zijn.

Ik kan nu vast aanraden om je code niet te laten kijken naar $_POST['search'], want die is inderdaad alleen beschikbaar als men op submit drukt. Ik zou een hidden input meegeven, en controleren of die bestaat bij het afhandelen.

Honda CB750 Hornet :: Yamaha Fazer FZ6 SA (2011 - 2023) | F1Pool.net


Acties:
  • 0 Henk 'm!

  • DavidAxe
  • Registratie: Maart 2000
  • Laatst online: 11-07 17:16
controleren of $_POST[user] aanwezig is?

Acties:
  • 0 Henk 'm!

  • T1psY
  • Registratie: December 2006
  • Laatst online: 12:50

T1psY

Dumo-Technics

Topicstarter
t is toch altijd $_POST['user'] ?? Weet niet hoe jullie er op komen maar ik gebruik dus helemaal geen javascript in de site. Hidden input kan dus niet ?? het is gewoon dat als je cursor in het vakje 'user' staat, je typt iets in, je drukt op return en je pc bekijkt het net alsof je op 'submit' hebt geduwd. Nu is het vrij lastig want als iemand dat toch doet dan ziet de pagina geen input en zegt dus dat de user niet bestaat.

[ Voor 16% gewijzigd door T1psY op 03-12-2007 00:09 ]

http://www.dumo-technics.com


Acties:
  • 0 Henk 'm!

  • DavidAxe
  • Registratie: Maart 2000
  • Laatst online: 11-07 17:16
Hidden form input kan prime zonder JavaScript met de HTML <input type="hidden" ... etc>
Waarschijnlijk gaat er iets heel anders mis, als jij checked of $_POST['user'] aanwezig is ... als dat niet het geval is lijkt het me eerder dat er iets heel anders fout gaat.

t is toch altijd $_POST['user']
Ja enkel als jij de variable zo benoemt natuurlijk

het is gewoon dat als je cursor in het vakje 'user' staat, je typt iets in, je drukt op return en je pc bekijkt het net alsof je op 'submit' hebt geduwd.
Nee, zo is het niet. Nadat jij op 'return' drukt verstuurt jouw BROWSER iets naar de webserver ... daar zou je wel eens een $_POST binnen kunnen krijgen ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Print de POST array eens...

print_r($_POST); in php.

Wellicht geeft deze bij het klikken op "submit" en het drukken op de Enter knop een verhelderend beeld.

[ Voor 49% gewijzigd door Verwijderd op 03-12-2007 00:48 ]


Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19-09 22:02

krvabo

MATERIALISE!

Je maakt vast gebruik in je verwerkscript van:
PHP:
1
if (isset($_POST['submit'])) {

of iets vergelijkbaars (!empty, etc)
Dit is alleen true als er op de knop wordt gedrukt.
Het is dus weldegelijk iets in je verwerkscript. In plaats van te controleren of $_POST['submit'] is geset kun je beter gewoon:
PHP:
1
if (!empty($_POST)) {
gebruiken :)

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

  • DavidAxe
  • Registratie: Maart 2000
  • Laatst online: 11-07 17:16
krvabo schreef op maandag 03 december 2007 @ 00:57:
Je maakt vast gebruik in je verwerkscript van:
PHP:
1
if (isset($_POST['submit'])) {

of iets vergelijkbaars (!empty, etc)
Dit is alleen true als er op de knop wordt gedrukt.
Het is dus weldegelijk iets in je verwerkscript. In plaats van te controleren of $_POST['submit'] is geset kun je beter gewoon:
PHP:
1
if (!empty($_POST)) {
gebruiken :)
m.a.w
controleren of $_POST[user] aanwezig is?
O-)

Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19-09 22:02

krvabo

MATERIALISE!

Och, ik zou sowieso eerst controleren of de $_POST niet leeg is voordat je controleert of een bepaalde waarde is geset. Al is dat meer een eigenschap van hoe ik code.

Met jouw check krijg je echter wel 'problemen' als een leeg veld wordt gesubmit, dan wordt er niets gedaan. Bij mijn code dan wél.
Je kunt om te controleren of er iets is gePOST het beste gewoon controleren of $_POST niet leeg / geset is. Dan wordt het stuk code in ieder geval 'foutlozer' uitgevoerd dan als je checkt op een key.

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

Verwijderd

Waarom niet:
PHP:
1
2
3
4
5
6
7
8
9
10
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    // form is verstuurd
}
else
{
    // form is niet verstuurd
}
?>

Acties:
  • 0 Henk 'm!

  • T1psY
  • Registratie: December 2006
  • Laatst online: 12:50

T1psY

Dumo-Technics

Topicstarter
er wordt wel degelijk gechecked of het vak 'user' wel degelijk iets bevat, en niet leeg is. Maar dit gebeurt _enkel_ als er op de knop submit geduwd is. Duw je dus gewoon op de return-knop dan krijgt het afhandel script geen waarde binnen in $_POST['user'] en volgt automatisch ook de boodschap dat je tekstvak zogezegd leeg was. Het afhandelscript 'ziet' alleen tekst in $_POST['user'] als je gebruik maakt van de knop 'submit'

http://www.dumo-technics.com


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Je geeft nu alleen je client-side formulier. Voor ons gaat het echt een stuk schelen als je de relevante code van je (PHP) afhandel script kan posten hier (searchuser.php dus). Zonder dat kunnen wij in elk geval echt niet zien of je script onderscheid maakt tussen een druk op de enter toets of een klik op de submit knop.

[ Voor 3% gewijzigd door Creepy op 03-12-2007 13:22 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • SinergyX
  • Registratie: November 2001
  • Laatst online: 20:50

SinergyX

____(>^^(>0o)>____

pcfreaky1991 schreef op maandag 03 december 2007 @ 13:11:
er wordt wel degelijk gechecked of het vak 'user' wel degelijk iets bevat, en niet leeg is. Maar dit gebeurt _enkel_ als er op de knop submit geduwd is. Duw je dus gewoon op de return-knop dan krijgt het afhandel script geen waarde binnen in $_POST['user'] en volgt automatisch ook de boodschap dat je tekstvak zogezegd leeg was. Het afhandelscript 'ziet' alleen tekst in $_POST['user'] als je gebruik maakt van de knop 'submit'
Zoals creepy als zegt, zonder serverside code zien we ook niet veel meer. Best mogelijk dat het script een if/else op die $_POST['search'] heeft, daarna pas een check op $_POST['user'] doet.
Verwijderd schreef op maandag 03 december 2007 @ 00:47:
Print de POST array eens...

print_r($_POST); in php.

Wellicht geeft deze bij het klikken op "submit" en het drukken op de Enter knop een verhelderend beeld.
Heb je dat al eens geprobeerd om zeker te weten dat 'user' dus echt leeg is bij een return? (lijkt me namelijk erg onlogisch).

Nog 1 keertje.. het is SinergyX, niet SynergyX
Im as excited to be here as a 42 gnome warlock who rolled on a green pair of cloth boots but was given a epic staff of uber awsome noob pwning by accident.


Acties:
  • 0 Henk 'm!

  • T1psY
  • Registratie: December 2006
  • Laatst online: 12:50

T1psY

Dumo-Technics

Topicstarter
Oke hier dus de code van searchuser.php:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
if(isset($_POST['search']))
{
 if($_POST['user'] == "")
 {
  echo 'Je hebt geen naam opgegeven. We kunnen nog altijd niet zoeken op ';
  echo 'mensen zonder naam, dus geef a.u.b. een loginnaam in en probeer ';
  echo 'het opnieuw. 2';
 }
 else
 {
  $sql = "SELECT * FROM users WHERE name = '".$_POST['user']."'";
  $query = mysql_query($sql);
  $nr = mysql_num_rows($query);
  if($nr == 0)
  {
   echo 'Er bestaat geen gebruiker met deze loginnaam.';
  }
  else
  {
   ?>
    <script language="Javascript" type="text/javascript">
     location.href='<? echo 'profiel.php?name='.$_POST['user']; ?>';
    </script>
   <?
  }
 }
}
else
{
 echo 'Je hebt geen naam opgegeven. We kunnen nog altijd niet zoeken op ';
 echo 'mensen zonder naam, dus geef a.u.b. een loginnaam in en probeer ';
 echo 'het opnieuw.';
}


Volgens mij is dus het probleem dat als je op 'return' duwt, hij geen $_POST['search'] ziet...

[ Voor 5% gewijzigd door T1psY op 03-12-2007 13:34 ]

http://www.dumo-technics.com


Acties:
  • 0 Henk 'm!

  • T1psY
  • Registratie: December 2006
  • Laatst online: 12:50

T1psY

Dumo-Technics

Topicstarter
oke het probleem is opgelost :P hij ziet namelijk geen $_POST['search'] omdat er dus ook geen verzonder wordt. Dankje wel allemaal voor de hulp.

[ Voor 67% gewijzigd door T1psY op 03-12-2007 13:36 ]

http://www.dumo-technics.com


Acties:
  • 0 Henk 'm!

  • Swaptor
  • Registratie: Mei 2003
  • Laatst online: 17-06 07:31

Swaptor

Java Apprentice

Mag ik dan wel vragen wat de oplossing is/was?
Zie bovenstaande edit ;)

[ Voor 26% gewijzigd door Swaptor op 03-12-2007 13:37 ]

Ontdek mij!
Proud NGS member
Stats-mod & forum-dude


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
offtopic:
Je gebruikt $_POST['user'], wat user input is, rechtstreeks in een sql resp. html context. In beide gevallen ontstaat er een veiligheidslek, dus lees je eens gauw in voor wat betreft sql injection en escaping indien nodig. ;)

{signature}


Acties:
  • 0 Henk 'm!

  • SinergyX
  • Registratie: November 2001
  • Laatst online: 20:50

SinergyX

____(>^^(>0o)>____

Zat ik nog goed ook met de if/else check op 'search' :P

if(isset($_POST['search']))
Die regel aanpassen en alles werkt weer, met natuurlijk wel nog de note van Voutloos ;)

Nog 1 keertje.. het is SinergyX, niet SynergyX
Im as excited to be here as a 42 gnome warlock who rolled on a green pair of cloth boots but was given a epic staff of uber awsome noob pwning by accident.


Acties:
  • 0 Henk 'm!

  • T1psY
  • Registratie: December 2006
  • Laatst online: 12:50

T1psY

Dumo-Technics

Topicstarter
ok ik zal straks als ik even tijd heb wat gaan lezen over sql injection maar nu ff leren want morgen examen :P

http://www.dumo-technics.com


Acties:
  • 0 Henk 'm!

  • ATS
  • Registratie: September 2001
  • Laatst online: 18-09 15:14

ATS

Misschien heb je nog wel even tijd om een backup van je db te draaien? Anders heb je goede kans dat hij morgen leeg is door een SQL injection hackje.

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

  • T1psY
  • Registratie: December 2006
  • Laatst online: 12:50

T1psY

Dumo-Technics

Topicstarter
is gebeurd. Ty allemaal

http://www.dumo-technics.com

Pagina: 1