Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  12 3246
Hei,

Jeg prøver å reloade en side tilbake til besøkerens browser gjennom et php-skript. Siden skal reloades da besøker kun trykker submit uten å oppgi data. Dette kan sikkrert valideres via javaskript eller lignende men vil nå laste siden på nytt via php_self, men det funker ikke...
undefinedindex... 'thename' not defined klager php-kompilatoren på.( Har og testet med if (!isset$_POST['thename']). Men ifølge google skal dette funke via php-self.
Om brukeren ikke setter variabelen thename så bør vel min if-setning ordne dette?

Kode

<?php

if (!$_POST['thename'] {

$page=$_SERVER['PHP_SELF'];

$sec="4";

header("Refresh: $sec; url=$page");
}

else
{
echo "Du er registrert";
}
?>
websiden som skal reloades tilbake til besøkeren:

Kode

<html><head><title></title></head>
<body bgcolor="grey">
<form action="idag.php" method="post">
Navn:<input type="text" name="thename">
<br>
<input type="submit" value="registrer">
</form>
</body>
</html>
Har du skrevet koden på nytt her? Eller kopiert? Det er en feil i if-setningen din.

'if (!$_POST['thename'] {' mangler avsluttende parentes. Dvs., det skulle vært if (!$_POST['thename']) {
Sitat av lroedal Vis innlegg
Har du skrevet koden på nytt her? Eller kopiert? Det er en feil i if-setningen din.

'if (!$_POST['thename'] {' mangler avsluttende parentes. Dvs., det skulle vært if (!$_POST['thename']) {
Vis hele sitatet...
Hei, ble feil da jeg skrev av koden manuelt men originalet har avluttende parentes i if-setningen så samme feilkode er der fortsatt.

Dvs da jeg trykker registrer på websiden uten å fylle i navn så lastes ikke originalsiden opp på nytt. Kun feilkoden vises:

Notice: undefined index: thename
Sikkerhetsklarert
Går det i det hele tatt ann å bruke "if (!$_POST['blblb']){}" ?

Jeg bruker "if(empty($_POST['blabla'])){}" og det fungerer fint.

Bruker så header() for å redirecte.
Sist endret av Pjukern; 9. mai 2014 kl. 14:44.
Sitat av Pjukern Vis innlegg
Går det i det hele tatt ann å bruke "if (!$_POST['blblb']){}" ?

Jeg bruker "if(empty($_POST['blabla'])){}" og det fungerer fint.

Bruker så header() for å redirecte.
Vis hele sitatet...
Takker,

if(empty($_POST['thename']){} funket da jeg fjernet

Kode

$page=$_SERVER['PHP_SELF'];

$sec="4";

header("Refresh: $sec; url=$page");
og erstattet med:

Kode

$sec="4";
header('Location: http://localhost/mappe/siden.html');
Hvordan diverse eksem$pelsider om php på nettet greier å reloade siden med $_SERVER['PHP_SELF'] er dog et lite mysterium.
Skulle jeg gjort det du ber om i php, ville det i valideringsfilen vært greit å benytte:

Kode

header( 'Location: http://localhost/form.php?error=feil' );
men tror jeg ville valgt denne veien: https://www.lullabot.com/blog/articl...orms-angularjs
Da jeg ikke liker å plage serveren, med det jeg kan plage nettleseren med.
Sist endret av nudo; 9. mai 2014 kl. 16:59.
Hei, har nå en litt lignende problemstilling. Nå vil jeg at siden skal reloades og at en counter som har telt brukerens besøk skal nullstilles om brukeren velger å krysse for det.
Jeg bruker session_unset før siden reloades via header-kommandoen men får feilmelding
Notice: Undefined variable: _SESSSION in /var/www/mer-php/neocounter.php on line 6
Ser ikke helt hvorfor
$_SESSION er udefinert?

Kode

<?php

session_start();


if (isset($_SESSION['views'])&& $_SESSSION['views']==0)
{
        session_destroy();
}


if  (!isset($_SESSION['views']))
        {
                $_SESSION['views']=1;
        }
else {
        $_SESSION['views']++;
}

?>

<html><head><title></title></head>
<body bgcolor="grey">
<br><br>

<?php
echo "Antal besok:". $_SESSION['views'];
?>

<form action="" method="post">
<input type="checkbox" name="stopcount" value="1">Ja, nullstill
<input type="submit" value="send inn">
</form>

<?php
$val=$_POST['stopcount'];
if ($val==1)
{
        session_unset($_SESSION['views']);
        header('Location: http://localhost/mer-php/neocounter.php');

}

?>
</body>
Sist endret av sinsenkrysset; 11. mai 2014 kl. 19:58.
"if (isset($_SESSION['views'])&& $_SESSSION['views']==0)"

Du har en S for mye.

Her er et litt enklere variant av koden din:

Kode

<?php

session_start();

if (isset($_POST['stopcount']) && $_POST['stopcount'] == 1) {
  $_SESSION['views'] = 0;
  header('Location: http://localhost/mer-php/neocounter.php');
}
else {
  $_SESSION['views'] = (isset($_SESSION['views']) ? $_SESSION['views']++ : 0);
}
?>

<html><head><title></title></head>
<body bgcolor="grey">
<br><br>

<?php
echo "Antal besok:". $_SESSION['views'];
?>

<form action="" method="post">
<input type="checkbox" name="stopcount" value="1">Ja, nullstill
<input type="submit" value="send inn">
</form>

</body>
Sist endret av Yochi; 11. mai 2014 kl. 21:38. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Sitat av sinsenkrysset Vis innlegg
Hei,

Jeg prøver å reloade en side tilbake til besøkerens browser gjennom et php-skript. Siden skal reloades da besøker kun trykker submit uten å oppgi data. Dette kan sikkrert valideres via javaskript eller lignende men vil nå laste siden på nytt via php_self, men det funker ikke...
undefinedindex... 'thename' not defined klager php-kompilatoren på.( Har og testet med if (!isset$_POST['thename']). Men ifølge google skal dette funke via php-self.
Om brukeren ikke setter variabelen thename så bør vel min if-setning ordne dette?

Kode

<?php

if (!$_POST['thename'] {

$page=$_SERVER['PHP_SELF'];

$sec="4";

header("Refresh: $sec; url=$page");
}

else
{
echo "Du er registrert";
}
?>
websiden som skal reloades tilbake til besøkeren:

Kode

<html><head><title></title></head>
<body bgcolor="grey">
<form action="idag.php" method="post">
Navn:<input type="text" name="thename">
<br>
<input type="submit" value="registrer">
</form>
</body>
</html>
Vis hele sitatet...
Du må alltid huske å sjekke at variabler som dynamisk opprettes er opprettet i runtime. isset ( ) er funksjonen for det, du kan også bruke i tillegg empty ( ) for å sjekke at den ikkje er tom.

Sitat av sinsenkrysset Vis innlegg
Hei, har nå en litt lignende problemstilling. Nå vil jeg at siden skal reloades og at en counter som har telt brukerens besøk skal nullstilles om brukeren velger å krysse for det.
Jeg bruker session_unset før siden reloades via header-kommandoen men får feilmelding
Notice: Undefined variable: _SESSSION in /var/www/mer-php/neocounter.php on line 6
Ser ikke helt hvorfor
$_SESSION er udefinert?

Kode

<?php

session_start();


if (isset($_SESSION['views'])&& $_SESSSION['views']==0)
{
        session_destroy();
}


if  (!isset($_SESSION['views']))
        {
                $_SESSION['views']=1;
        }
else {
        $_SESSION['views']++;
}

?>

<html><head><title></title></head>
<body bgcolor="grey">
<br><br>

<?php
echo "Antal besok:". $_SESSION['views'];
?>

<form action="" method="post">
<input type="checkbox" name="stopcount" value="1">Ja, nullstill
<input type="submit" value="send inn">
</form>

<?php
$val=$_POST['stopcount'];
if ($val==1)
{
        session_unset($_SESSION['views']);
        header('Location: http://localhost/mer-php/neocounter.php');

}

?>
</body>
Vis hele sitatet...
Den der koden kommer aldri til å fungere, headeren blir sendt linje 22. Så denne linjen kommer til å trigge error:

Kode

        header('Location: http://localhost/mer-php/neocounter.php');
Det må i såfall gjøres slik:

Kode

if ( !headers_sent ( ))
{
        header("Location: http://localhost/mer-php/neocounter.php");
        exit ( 0 );
}
else
{
       echo ( "<meta http-equiv=\"refresh\" content=\"0; url=http://localhost/mer-php/neocounter.php\">" );
       exit ( 0 );
}
Takker for utfyllende svar
Sitat av sinsenkrysset Vis innlegg
Hei, har nå en litt lignende problemstilling. Nå vil jeg at siden skal reloades og at en counter som har telt brukerens besøk skal nullstilles om brukeren velger å krysse for det.
Jeg bruker session_unset før siden reloades via header-kommandoen men får feilmelding
Notice: Undefined variable: _SESSSION in /var/www/mer-php/neocounter.php on line 6
Ser ikke helt hvorfor
$_SESSION er udefinert?

Kode

<?php

session_start();


if (isset($_SESSION['views'])&& $_SESSSION['views']==0)
{
        session_destroy();
}


if  (!isset($_SESSION['views']))
        {
                $_SESSION['views']=1;
        }
else {
        $_SESSION['views']++;
}

?>

<html><head><title></title></head>
<body bgcolor="grey">
<br><br>

<?php
echo "Antal besok:". $_SESSION['views'];
?>

<form action="" method="post">
<input type="checkbox" name="stopcount" value="1">Ja, nullstill
<input type="submit" value="send inn">
</form>

<?php
$val=$_POST['stopcount'];
if ($val==1)
{
        session_unset($_SESSION['views']);
        header('Location: http://localhost/mer-php/neocounter.php');

}

?>
</body>
Vis hele sitatet...
Jeg har skrevet noe som fungerer til deg.

Kode

<?php
        session_start ( );

        header ( "Content-type: text/html" );

        if ( isset ( $_SESSION [ "views" ] ))
        {
                if ( empty ( $_SESSION [ "views" ] ) || $_SESSION [ "views" ] == false )
                {
                        $_SESSION [ "views" ] = 0;
                }

                if ( isset ( $_POST [ "stopcount" ] ) && $_POST [ "stopcount" ] == 1 )
                {
                        session_destroy ( );
                        header ( "Location: http://localhost/mer-php/neocounter.php" );
                }

                $_SESSION [ "views" ] ++;
        }
        else
        {
                $_SESSION [ "views" ] = 1;
        }
?>

<html>
        <head>
                <meta http-equiv="content-type" content="text/html; charset=UTF-8">
                <title>Besøks teller</title>
        </head>
        <body>
                <span>Antall besøk: <?php echo isset ( $_SESSION [ "views" ] ) ? $_SESSION [ "views" ] : 0 ; ?></span>
                <form action="" method="post">
                        <input type="checkbox" name="stopcount" value="1"><span>Ja, nullstill</span>
                        <input type="submit" value="send inn">
                </form>
        </body>
</html>
Pastebin: http://pastebin.com/Vm70Pyfg
0xFF: Er det noen fordeler med å bruke session_destroy() + redirect kontra å bare sette telleren til 0 og redirecte?
Sitat av Yochi Vis innlegg
0xFF: Er det noen fordeler med å bruke session_destroy() + redirect kontra å bare sette telleren til 0 og redirecte?
Vis hele sitatet...
Det er spørs hva du skal bruke den til. Som i dette tilfelle så blir man redirektet etter å ha reset tellere å har antagelig ikkje bruk for session igjen, da er det greit å bruke session_destroy. Men hvis man blir redirektet til samme server og trenger sessions på den siden man blir redirektet til, så kan man bare sette den til verdi 0.