[PHP] $textStr = <<< TXTSTR ?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb laatst een paar php scripts bekeken waar statements in staan zoals die van het topictitel. Omdat dit blijkbaar interessant is om gewoon html in je php te schrijven zonder met echo, print etc te moeten prutsen wou ik dit eens proberen.

Ik heb 2 bestanden:

register.php die de <<< notatie gebruikt
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
34
35
36
<?php

require_once('includes/register.inc.php');

if ($login == "Validate") {
    $feedback = register_user();
    
    // Feedback to the user
    $strForm = "</i>$feedback</i>";
} else {
    // Show form for the first time
    $strForm = '';
}

$php_self = $_SERVER['PHP_SELF'];

print("Header<br>");

$strRegister = <<< EOREG
<h1>Registration Form</h1>
<b>Feedback: $strForm</b>
<form action="$php_self" method="post"><table>
<tr><td>User name</td><td>: <input name="user_login" type="text" size="20" maxlength="20"></td></tr>
<tr><td>Password</td><td>: <input name="password" type="password" size="16" maxlength="16"></td></tr>
<tr><td>Password</td><td>: <input name="password2" type="password" size="16" maxlength="16"></td></tr>
<tr><td>&nbsp;</td><td>&nbsp;&nbsp;<input type="submit" name="login" value="Validate"></td></tr>
</table></form>
EOREG;

echo $strRegister;

print("<br>Footer<br>");

print("User: ".$_POST['user_login']);

?>


en register.inc.php die gewoon een functie bevat
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
    function register_user() {
        /*if ((strlen($_POST['user_login']) <= 20) && (strlen($_POST['password']) <= 16) && ($_POST['password'] == $_POST['password2'])) {
            // Validate user name and password
            // Confirmation Mail
            $feedback = 'You are successfully registered';
            return $feedback;
        }*/
        if($_POST['user_login'] <> "") {
            $feedback = 'You are registered.';
            return $feedback;
        }
        else {
            $feedback = 'ERROR - Please fill in all field correctly';
            return $feedback;
        }
    }
?>


Die register_user() wordt echter nooit opgeroepen, alhoewel ie weet dat er data is gepost:
code:
1
print("User: ".$_POST['user_login']);


Weet iemand wat er precies fout is? Of misbruik ik die <<< notatie?
Indien zo, kan iemand me uitleggen waarom het wel dient, want googlen levert niks op :/

[ Voor 22% gewijzigd door Verwijderd op 21-02-2004 14:35 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Wat werkt niet, dan?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • pimlie
  • Registratie: November 2000
  • Laatst online: 16:52
Is het niet gewoon een register_globals probleem? Je zegt:
PHP:
1
if($login == "Validate") {


als je dat nu verandert in:
PHP:
1
if($_POST["login"] == "Validate") {


werkt het dan nog steeds niet?

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

pimlie: als je goed leest dan zie je dat het niet uitmaakt of ie ingelogd is of niet, die code wordt altijd uitgevoerd ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • pimlie
  • Registratie: November 2000
  • Laatst online: 16:52
.oisyn schreef op 21 februari 2004 @ 15:25:
pimlie: als je goed leest dan zie je dat het niet uitmaakt of ie ingelogd is of niet, die code wordt altijd uitgevoerd ;)
Hoe dan? Hij schrijft:
Verwijderd schreef op 21 februari 2004 @ 14:33:
..
Die register_user() wordt echter nooit opgeroepen, alhoewel ie weet dat er data is gepost:
code:
1
print("User: ".$_POST['user_login']);
Ik zie die register_user functie maar op 1 plaats aangeroepen worden, en daar gebruikt hij geen superglobal ($login). Maar waar hij in zijn code checkt of er iets gepost is gebruikt ie wel een superglobal ($_POST['user_login']).

Verlicht me, want ik zie niet hoe die register_user functie anders uitgevoerd kan worden :)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Oh, ik lees zelf verkeerd, mijn excuus |:(. Ik snap dan ook totaal niet waarom z'n probleem heel anders is dan wat er in z'n topicstart staat (wat heeft die <<< notatie daar nou mee te maken :?)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • pimlie
  • Registratie: November 2000
  • Laatst online: 16:52
Volgens mij helemaal niets. Vandaar dat ik dan ook zeg:
pimlie schreef op 21 februari 2004 @ 15:02:
Is het niet gewoon een register_globals probleem?
;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oei oei :|

Wat voel ik me dom... het moet inderdaad
code:
1
if($_POST['login'] == "Login")
zijn, gezien ik register_globals uitgeschakeld heb in php.

Ik dacht echt dat de fout lag bij die formStr = <<< FORMSTR notatie.

Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 20:04

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Wat ik me trouwens afvraag:
PHP:
1
$strForm = "</i>$feedback</i>";

Werkt dit? Dit moet toch zijn:
PHP:
1
    $strForm = "</i>" . $feedback . "</i>";
Of werkt het eerste ook gewoon :) ?

[ Voor 40% gewijzigd door We Are Borg op 22-02-2004 11:04 ]


Acties:
  • 0 Henk 'm!

  • dArtagnan
  • Registratie: Mei 2002
  • Laatst online: 23-08 22:47

dArtagnan

Een voor allen, allen voor een

We Are Borg schreef op 22 februari 2004 @ 11:04:
Wat ik me trouwens afvraag:
PHP:
1
$strForm = "</i>$feedback</i>";

Werkt dit? Dit moet toch zijn:
PHP:
1
    $strForm = "</i>" . $feedback . "</i>";
Of werkt het eerste ook gewoon :) ?
Het eerste werkt gewoon zolang je maar " gebruikt in plaats van '.

[ Voor 13% gewijzigd door dArtagnan op 22-02-2004 11:08 ]


Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 20:04

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Koraalduivel schreef op 22 februari 2004 @ 11:07:
[...]

Het eerste werkt gewoon zolang je maar " gebruikt in plaats van '.
Ah, prima, weer wat geleerd

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 22 februari 2004 @ 10:24:
Oei oei :|

Wat voel ik me dom... het moet inderdaad
code:
1
if($_POST['login'] == "Login")
zijn, gezien ik register_globals uitgeschakeld heb in php.

Ik dacht echt dat de fout lag bij die formStr = <<< FORMSTR notatie.
en nu ga ik je gek maken: test die pagina eens in IE en submit je formulier door op enter te drukken in plaats van op de submit-knop te drukken :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

[rml]Form Submitten werkt niet met [ enter]-toest?[/rml]

>:) (was zelf ook ff benieuwd wat daar ook alweer achter zat)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
crisp schreef op 22 februari 2004 @ 12:07:
[...]

en nu ga ik je gek maken: test die pagina eens in IE en submit je formulier door op enter te drukken in plaats van op de submit-knop te drukken :)
Dat werkt hoor ^^
Niets speciaals voor moeten doen. Zowel met FireFox(Windows & Gentoo) als IE

Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

kgeloof ergens gelezen te hebben dat het probleem idd pas optreed bij 0 of 1 input fields

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

X-Lars schreef op 22 februari 2004 @ 13:34:
kgeloof ergens gelezen te hebben dat het probleem idd pas optreed bij 0 of 1 input fields
Het treed inderdaad niet altijd op, maar ik meen bij 1 of 2 inputs wel. In dit geval zijn er 3, dus het zou kunnen dat dit probleem niet speelt. Ik ben er echter voorstander van om er nooit vanuit te gaan dat de value van de input-button meegestuurd wordt. In plaats daarvan gebruik ik of een hidden field, of ik vraag de request method uit in m'n script.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

crisp schreef op 22 februari 2004 @ 13:46:
[...] ...dat de value van de input-button meegestuurd wordt ...
o, dus dat is het enige probleem, ik dacht even dat de form-data not at all meegestuurd werden. tnx, that's clear now :)
Pagina: 1