Undefined index error

Status
Niet open voor verdere reacties.

xBart

Gebruiker
Lid geworden
4 jan 2013
Berichten
34
Goedenavond!
Ik ben niet echt bekend in PHP, heb al op internet gezocht maar kom er niet uit.

Ik heb dit stukje code:
Code:
<?
$file = "9908131231.txt";

if(!$file){echo "You haven't specified the file containing your data";exit;};


$array = file($file);
$count = count($array);
$quote = $_REQUEST["quote"];
$rand = rand(0, --$count);
if (!$quote){ echo $array[$rand];}
else {echo $array[--$quote];};
?>

En ik krijg deze melding:
HTML:
Notice: Undefined index: quote in /public/sites/generators.bartschriever.nl/netflix/gen.php on line 9
 
Waar heb je deze code vandaan? Erg actueel is het in ieder geval niet :)

$_REQUEST is niet de meest veilige manier van variabele-gebruik. Het kan nu een $_GET- of een $_POST-variabele zijn. Ook wordt er een short-tag (<?) gebruikt, die worden niet op elke server toegestaan.

Wat het probleem nu is, is dat in de array $_REQUEST überhaupt geen key "quote" bekend is, je roept de URL niet aan met ?quote= en er is ook geen formulier verzonden met een veld genaamd "quote".

Wijzig de code eens naar dit, voorzien van nuttige controles:
PHP:
<?php
$array = file("9908131231.txt");

if (!$array) {
    echo "You haven't specified the file containing your data";
    exit;
};


if (!isset($_GET['quote'] && !ctype_digit($_GET['quote'])) {
    echo array_rand($array);
} else {
    echo $array[--$_GET['quote']];
}

Mocht je een specifieke regel op willen vragen dan zul je de url met ?quote={getal} moeten aanroepen.
 
Waar heb je deze code vandaan? Erg actueel is het in ieder geval niet :)

$_REQUEST is niet de meest veilige manier van variabele-gebruik. Het kan nu een $_GET- of een $_POST-variabele zijn. Ook wordt er een short-tag (<?) gebruikt, die worden niet op elke server toegestaan.

Wat het probleem nu is, is dat in de array $_REQUEST überhaupt geen key "quote" bekend is, je roept de URL niet aan met ?quote= en er is ook geen formulier verzonden met een veld genaamd "quote".

Wijzig de code eens naar dit, voorzien van nuttige controles:
PHP:
<?php
$array = file("9908131231.txt");

if (!$array) {
    echo "You haven't specified the file containing your data";
    exit;
};


if (!isset($_GET['quote'] && !ctype_digit($_GET['quote'])) {
    echo array_rand($array);
} else {
    echo $array[--$_GET['quote']];
}

Mocht je een specifieke regel op willen vragen dan zul je de url met ?quote={getal} moeten aanroepen.

Oh bedankt! Zal zo even kijken of het nu wel werkt!
 
Laatst bewerkt:
Ik krijg nu opeens deze melding:
Code:
Parse error: syntax error, unexpected '&&' (T_BOOLEAN_AND), expecting ',' or ')' in

Heb bij jou code een aanpassing gedaan, na "if (!isset($_GET['quote']" moet nog een ')'.
Code:
<?php
$array = file("9908131231.txt");
 
if (!$array) {
    echo "You haven't specified the file containing your data";
    exit;
};
 
 
if (!isset($_GET['quote']) && !ctype_digit($_GET['quote'])) {
    echo array_rand($array);
} else {
    echo $array[--$_GET['quote']];
}

Nadat ik de code heb aangepast krijg ik weer de oude melding :(
 
Laatst bewerkt:
PHP:
<?php
$array = file("9908131231.txt");

if (!$array) {
    echo "You haven't specified the file containing your data";
    exit;
};


if (!in_array('quote', $_GET) || !ctype_digit($_GET['quote'])) {
    echo array_rand($array);
} else {
    echo $array[--$_GET['quote']];
}
Nieuwe poging, iets andere functies :)
 
Bedankt!
Ik heb even de code aangepast maar hij doet iets raars?
Ik heb in "9908131231.txt" allemaal regels met usernames.
Hij moet er random eentje laten zien. Maar ik als ik telkens refresh geeft hij een 3 cijferige code weer...
Wat hij nu doet is denk ik een code laten zien van een regel, dus regel 171.
 
Laatst bewerkt:
Ah, ik zie al waarom. Ik maak niet vaak gebruik van array_rand maar die schijnt dus alleen de key terug te geven in tegenstelling tot, wat ik verwachtte, het daadwerkelijke element.

Dus dan wordt het zo:
PHP:
<?php
$array = file("9908131231.txt");
 
if (!$array) {
    echo "You haven't specified the file containing your data";
    exit;
};

if (!in_array('quote', $_GET) || !ctype_digit($_GET['quote'])) {
    echo $array[array_rand($array)];
} else {
    echo $array[--$_GET['quote']];
}
Of als je daar een foutmelding op krijgt, eerst een random waarde pakken en dan gebruiken:
PHP:
<?php
$array = file("9908131231.txt");
 
if (!$array) {
    echo "You haven't specified the file containing your data";
    exit;
};

if (!in_array('quote', $_GET) || !ctype_digit($_GET['quote'])) {
    $randomKey = array_rand($array);
    echo $array[$randomKey];
} else {
    echo $array[--$_GET['quote']];
}
 
Hardstikke bedankt! Hij doet nu precies wat hij moet doen!
Toch blij met een forum zoals dit :d
 
Laatst bewerkt door een moderator:
Welke van de twee variaties werkt? :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan