Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

probleempje met php poll

marientje
10 antwoorden
  • Ik heb een poll vor op mijn site, maar sinds vandaag doet ie het niet goed. Nadat je hebt gestemd moet je worden doorgezonden naar de resultaten (heeft ie altijd gedaan) maar je zite helemaal niks nada noppes… Dit is het script, misschien vinden jullie er nog een bug in die ik niet heb kunne vinden..:
    [code:1:a15a4d0651]<html>

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Poll</title>
    </head>

    <body bgcolor="#DBC98A">
    <center><?php
    /////////////////////////////////////////////////////////////////////////
    /////////
    ///////// Vz Poll 1.0
    ///////// Author : Luca Penzo <starluka@libero.it>
    ///////// Visit the site VzScripts at http://adpforum2.sourceforge.net
    /////////
    /////////////////////////////////////////////////////////////////////////
    ////////////
    //////////// Configuration
    // title
    $title_size="2";
    // table
    $contour=1;
    $padding=4;
    $contour_color="#ffffff";
    $width=150;
    $width_results=600;
    $bgcolor="#DBC98A";
    // fonts
    $font_face="Arial";
    $font_size="3";
    $font_size_results="3";
    $font_color="#ffffff";
    // button
    $submit="Stem!";
    // results tab
    $results="Resultaten";
    $votes="Stemmen";
    $voted="Je hebt al gestemd!!!";
    $thanks="Bedankt voor je mening!!!";
    $color1="#CCCCCC";
    $color2="#999999";
    /////////////////// end of configuration
    /////////////////// POLL 1.0
    if(!isset($mode)){$mode="poll";}
    switch($mode){
    case("poll"):
    echo"<table cellspacing=\"$contour\" cellpadding=\"$padding\" border=\"0\" bgcolor=\"$contour_color\" width=\"$width\">";
    echo"<tr>";
    echo"<td bgcolor=\"$bgcolor\" width=\"$width\">";
    echo"<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">";
    echo"<tr>";
    $file_options=fopen("poll.txt","r");
    $options=fread($file_options,filesize("poll.txt"));
    fclose($file_options);
    $options=explode("
    ",$options);
    echo"<td width=\"100%\" align=\"center\"><font face=\"$font_face\" size=\"$title_size\" color=\"$font_color\"><b>$options[0]</b></font></td>";
    echo"</tr>";
    echo"<tr>";
    echo"<td height=\"5\"></td>";
    echo"</tr>";
    echo"</table>";
    echo"<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">";
    echo"<form action=\"poll.php?mode=vote\" method=\"post\" target=\"frame1\">";
    while (list($chiave,$valore)=each($options)){
    if($chiave==0){}else{
    $options_values=explode("|",$valore);
    $option=$options_values[0];
    echo"<tr>";
    echo"<td width=\"15%\" valign=\"top\"><input type=\"radio\" name=\"id\" value=\"$chiave\"></td>";
    echo"<td width=\"85%\" valign=\"middle\"><font face=\"$font_face\" size=\"$font_size\" color=\"$font_color\">$option</font></td>";
    echo"</tr>";
    echo"<tr>";
    echo"<td height=\"6\"></td>";
    echo"<td height=\"6\"></td>";
    echo"</tr>";
    }
    }
    echo"</table>";
    echo"<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">";
    echo"<tr>";
    echo"<td height=\"6\"></td>";
    echo"</tr>";
    echo"<tr>";
    echo"<td width=\"100%\" align=\"center\"><input type=\"submit\" value=\"$submit\"></td>";
    echo"</form>";
    echo"</tr>";
    echo"<tr>";
    echo"<td height=\"3\"></td>";
    echo"</tr>";
    echo"<tr>";
    echo"<td width=\"100%\" align=\"center\"><a href=\"poll.php?mode=results&what=0\" target=\"frame1\"><font face=\"$font_face\" size=\"$font_size\" color=\"$font_color\">$results</font></a></td>";
    echo"</tr>";
    echo"</table>";
    echo"</td></tr></table>";
    break;

    case("vote"):
    if ($HTTP_X_FORWARDED_FOR == "") {
    $ip = getenv(REMOTE_ADDR);
    }
    else {
    $ip = getenv(HTTP_X_FORWARDED_FOR);
    }
    $ip_read=fopen("ip.txt","r");
    $ip_data=fread($ip_read,filesize("ip.txt"));
    fclose($ip_read);
    $ip_data=explode("
    ",$ip_data);
    while (list($key,$value)= each($ip_data)){
    if($value==$ip){header("Location: poll.php?mode=results&what=2");exit;}
    }
    $ip_file = fopen ("ip.txt", "a");
    fwrite($ip_file,"$ip
    ");
    fclose($ip_file);

    $file_options=fopen("poll.txt","r");
    $options=fread($file_options,filesize("poll.txt"));
    fclose($file_options);
    $options=explode("
    ",$options);
    $risultati=array();
    $risultati[]=$options[0];
    while (list($chiave,$valore)= each($options)){
    if($chiave==0){}else{
    $options_values=explode("|",$valore);
    $option=$options_values[0];
    $vote=$options_values[1];
    if($id==$chiave){$vote=$vote+1;}
    $risultati[]="$option|$vote";
    }
    }
    $risultati=implode("
    ",$risultati);
    $new_file = fopen ("poll.txt", "w");
    fputs($new_file,"$risultati");
    fclose($new_file);
    header("Location: poll.php?mode=results&what=1");
    break;

    case("results"):
    $file_options=fopen("poll.txt","r");
    $options=fread($file_options,filesize("poll.txt"));
    fclose($file_options);
    $options=explode("
    ",$options);
    $count=$options;
    echo"<table cellspacing=\"$contour\" cellpadding=\"$padding\" border=\"0\" bgcolor=\"$contour_color\" width=\"$width_results\">";
    echo"<tr>";
    echo"<td bgcolor=\"$bgcolor\" width=\"$width_results\">";
    echo"<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">";
    while (list($chiave1,$valore1)=each($count)){
    if($chiave1==0){}else{
    $options_values=explode("|",$valore1);
    $vote=$options_values[1];
    $a=$a+$vote;
    }
    }
    echo"<tr>";
    echo"<td width=\"100%\" align=\"center\"><font face=\"$font_face\" size=\"$title_size\" color=\"$font_color\"><b>$options[0]</b><br>$a $votes</font></td>";
    echo"</tr>";
    echo"<tr>";
    echo"<td height=\"5\"></td>";
    echo"</tr>";
    echo"</table>";
    echo"<table cellspacing=\"0\" cellpadding=\"5\" border=\"0\" width=\"100%\">";
    if($a==0){$percent=0;}
    else{$percent=100/$a;}
    $col=1;
    while (list($chiave,$valore)=each($options)){
    if($chiave==0){}else{
    if($col=="1"){$bgcolor=$color1;$col–;}
    else{$bgcolor=$color2;$col++;}
    $options_values=explode("|",$valore);
    $option=$options_values[0];
    $vote=$options_values[1];
    echo"<tr>";
    echo"<td width=\"4%\" align=\"left\" valign=\"top\" bgcolor=\"$bgcolor\"><font face=\"$font_face\" size=\"$font_size_results\" color=\"$font_color\"><b>$chiave</b></font></td>";
    echo"<td width=\"38%\" align=\"left\" valign=\"top\" bgcolor=\"$bgcolor\"><font face=\"$font_face\" size=\"$font_size_results\" color=\"$font_color\">$option</font></td>";
    echo"<td width=\"38%\" align=\"left\" bgcolor=\"$bgcolor\">";
    $percentage=$vote*$percent;
    $point=explode(".",$percentage);
    $units=$point[0];
    $decimals=$point[1];
    $count=count($point);
    if($count>1){
    $len=strlen ($decimals);
    $decimals=substr_replace($decimals, '', 1, $len);
    $percentage="$units.$decimals";
    }
    for($i=1;$i<=$percentage;$i++){echo"<img src=\"bar.gif\" border=\"0\">";}
    echo"</td>";
    echo"<td width=\"10%\" align=\"left\" valign=\"middle\" bgcolor=\"$bgcolor\">";
    echo"<font face=\"$font_face\" size=\"1\" color=\"#000000\">$percentage %</font>";
    echo"</td>";
    echo"<td width=\"10%\" align=\"left\" valign=\"middle\" bgcolor=\"$bgcolor\">";
    echo"<font face=\"$font_face\" size=\"1\" color=\"#000000\">$vote $votes</font>";
    echo"</td>";
    echo"</tr>";
    }
    }
    echo"</table>";
    echo"</td></tr></table>";
    if($what=="1"){
    echo"<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"$width_results\">";
    echo"<tr>";
    echo"<td width=\"100%\" align=\"center\"><br><br><font face=\"$font_face\" size=\"2\" color=\"#000000\"><b>$thanks</b></font></td>";
    echo"</tr>";
    echo"</table>";
    }
    if($what=="2"){
    echo"<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"$width_results\">";
    echo"<tr>";
    echo"<td width=\"100%\" align=\"center\"><br><br><font face=\"$font_face\" size=\"2\" color=\"#000000\"><b>$voted</b></font></td>";
    echo"</tr>";
    echo"</table>";
    }
    break;
    }
    ?>

    </body>

    </html>
    [/code:1:a15a4d0651]
    :(





  • Dit is natuurlijk debugwerk, waar je ook de maker van de file ook zou kunnen vragen. Hij weet meer van het script dan wij. Maar leerzamer is natuurlijk om het zelf te doen :) Probeer eens uit te vinden waarom je script stopt. Echo zo her en der wat output etc.

    Maar ik heb nog een poging gedaan om eens te kijken wat er fout gaat. Maar daarvoor heb ik een voorbeeld nodig van poll.txt Zonder die file kan ik zo vlug niet zien wat er fout gaat.

    Is je host recentelijk overgeschakeld op een nieuwe versie van PHP. Wellicht dat hier je probleem zit. Dat komt er op neer dat

    [code:1:149ea52c22]
    $_GET['bla'] != $bla
    [/code:1:149ea52c22]
  • [code:1:6cd3b0b87c]Kende je de mythen die op onze site staan al ?
    Ik kende ze allemaal:)|0
    Sommigen wel en sommigen niet|0
    Eigenlijk geen een..:(|0[/code:1:6cd3b0b87c]
    dit was mijn poll.txt
  • [quote:d405bd1ff8="Japaveh"]Dit is natuurlijk debugwerk, waar je ook de maker van de file ook zou kunnen vragen. Hij weet meer van het script dan wij. Maar leerzamer is natuurlijk om het zelf te doen :) Probeer eens uit te vinden waarom je script stopt. Echo zo her en der wat output etc.

    Maar ik heb nog een poging gedaan om eens te kijken wat er fout gaat. Maar daarvoor heb ik een voorbeeld nodig van poll.txt Zonder die file kan ik zo vlug niet zien wat er fout gaat.

    Is je host recentelijk overgeschakeld op een nieuwe versie van PHP. Wellicht dat hier je probleem zit. Dat komt er op neer dat

    [code:1:d405bd1ff8]
    $_GET['bla'] != $bla
    [/code:1:d405bd1ff8][/quote:d405bd1ff8]
    Volgens mij heeft dat niet te maken met de php versie maar met de instelling (van de host) register_globals (hier dus off).
  • [quote:dc7febe1e8="Alexander Online"]Volgens mij heeft dat niet te maken met de php versie maar met de instelling (van de host) register_globals (hier dus off).[/quote:dc7febe1e8]

    Nieuwere versies hebben register_globals standaard uit staan terwijl die vroeger standaard aan stonden. Dus in die zin kan een andere versie wel verschil maken.

    Maar ja, het blijft wel een instelling in php.ini that's true
  • Das waar :)
    Je kan je script aanpassen (vind ik beter, want ik het is wat veiliger), of op de host in een .htaccess de register_globals wijzigen (mogelijk werkt dit niet als de host suPHP gebruikt, zoals wij, dan moet je het even met een ander trucje doen)
  • [quote:e9b1ef4136="Japaveh"]
    [code:1:e9b1ef4136]
    $_GET['bla'] != $bla
    [/code:1:e9b1ef4136][/quote:e9b1ef4136]

    Er staat nergens in deze code $_GET['bla'] != $bla, dus waar zou ik dat moeten veranderen??
  • [quote:606ca5c3f7="maartendd"]Er staat nergens in deze code $_GET['bla'] != $bla, dus waar zou ik dat moeten veranderen??[/quote:606ca5c3f7]
    Er is ook niet gezegd dat het in je code staat, het is juist een voorbeeld.

    Wat bedoeld wordt, is dat met de nieuwere php versies de REGISTER_GLOBALS uit staan.
    Dus $_GET['bla'] is niet gelijk aan $bla.
    Als je REGISTER_GLOBALS gewent bent, en ook gebruikt in je code, zal deze nu dus lege variabelen hebben.

    Wat voor instelling is er eigenlijk mbt foutmeldingen? E_ALL/E_NOTICE etc.
  • er is geen foutmelding, alleen wanneer ik op Stem! klik verbind ie me door naar lege pagina, trwijl hij me moet doorverbinden naar de resultaten van de poll-pagina :-?
  • [quote:a15740643a="maartendd"]er is geen foutmelding, alleen wanneer ik op Stem! klik verbind ie me door naar lege pagina, trwijl hij me moet doorverbinden naar de resultaten van de poll-pagina :-?[/quote:a15740643a]
    Ik bedoel niet welke foutmeldingen je krijg, maar welke eventueel weergegeven zullen worden.
    http://nl2.php.net/manual/nl/function.error-reporting.php

    Als je error-reporting op E_ALL ^ E_NOTICE staat (standaard waarde), dan zie je niet wanneer een variabele leeg blijft, terwijl dit wel nuttige informatie kan bieden.

    Krijg je een foutmelding als je bovenaan
    error_reporting(E_ALL);
    neerzet?

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.