Ga naar inhoud


Aanbevolen berichten

Geplaatst:

Ik wil een poll maken op een website met ja, nee of anders.

Zijn hier goed werkende scripjes voor zonder reclame en die makkelijk inpasbaar zijn?

 

Heeft iemand een script beschikbaar?

 

Groetjes van john

Openbox sg9 HD PVR


Geplaatst:

Gaat het om 1 of om meerder vragen?

 

Als het om 1 vraag gaat kan je daar een standaard formulier voor gebruiken.

 

Indien meerdere vragen moet je formulieren aan elkaar koppelen.

Dus de verwerk pagina van de eerste vraag is formulier 2.

 

Op pagina 1 stel je een vraag.

Die laat je verwerken op pagina 2. (controle op invullen, opslaan in db, enz,...)

Eens alles verwerkt, toon je het tweede formulier die onderaan op pagina 2 staat. Die laat je weer verwerken op pagina 3.

Zo kan je oneindig verder gaan.

iMac 27" macOS Sierra
iPhone 5s iOS 10

Geplaatst:

In eerste instantie gaat het om 1 vraag met een keuze uit 3 antwoorden.

Wie heeft, of waar kan ik een scriptje vinden die ook nog makkelijk is te installeren.

 

Openbox sg9 HD PVR

Geplaatst:

Maak een mysql database aan met de naam "form_antwoorden"

In die database maak je 1 tabel aan met de naam "antwoorden"

De tabel heeft 2 velden

 

veld 1 => id (unsigned, auto increment, primary key)

veld 2 => antwoord (varchar => 10)

 

Daarna kan je onderstaand script gebruiken.

 

Php Code:

<?phpif (isset($_POST['submit'])){		$antwoord = $_POST['antwoord'];		if ($antwoord == ""){		$waarschuwing = "<font color=red>Je moet een keuze maken<font>";	}	else{		$dbhost = 'localhost';		$dbuser = 'root';		$dbpass = 'password';		$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql');		$dbname = 'form_antwoorden';		mysql_select_db($dbname);		$query= ("INSERT INTO `antwoord`			(`antwoord`)			VALUES			('$antwoord')");			$input = mysql_query($query) or die (mysql_error());			$waarschuwing = "<font color=red>Bedankt voor uw antwoord</font>";	}}?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">		<title>Untitled 2</title></head><body><form id="form1" name="form1" method="post" action="<?php print $_SERVER['PHP_SELF']; ?>"><?php if (isset($waarschuwing)){ echo $waarschuwing . "<br />"; }?>Stel hier de vraag:<br /><input type="radio" name="antwoord" value="Ja"> Ja<br /><input type="radio" name="antwoord" value="Nee"> Nee<br /><input type="radio" name="antwoord" value="Anders"> Anders<br /><input type="submit" id="submit" name="submit" value="Verzenden"></form><?php unset($waarschuwing); ?></body></html>

 

Met dit script lees je de database uit voor de resultaten

 

Php Code:

<?phpfunction percent($aantal_records, $totaal_aantal_records) {$bereken1 = $aantal_records / $totaal_aantal_records;$bereken2 = $bereken1 * 100;$uitkomst = number_format($bereken2, 2, ',', '');return $uitkomst;}$dbhost = 'localhost';$dbuser = 'root';$dbpass = 'password';$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql');$dbname = 'form_antwoorden';mysql_select_db($dbname);		$query1 = "SELECT * FROM antwoord";$sql1 = mysql_query($query1) or die (mysql_error());$totaal_aantal = mysql_num_rows($sql1);		$query2 = "SELECT * FROM  antwoord WHERE antwoord = 'Ja'";$sql2 = mysql_query($query2) or die (mysql_error());$aantal_ja = mysql_num_rows($sql2);$resultaat_ja = percent($aantal_ja,$totaal_aantal);		$query3 = "SELECT * FROM  antwoord WHERE antwoord = 'Nee'";$sql3 = mysql_query($query3) or die (mysql_error());$aantal_nee = mysql_num_rows($sql3);$resultaat_nee =percent($aantal_nee,$totaal_aantal);		$query4 = "SELECT * FROM  antwoord WHERE antwoord = 'Anders'";$sql4 = mysql_query($query4) or die (mysql_error());$aantal_anders = mysql_num_rows($sql4);$resultaat_anders = percent($aantal_anders,$totaal_aantal);		if ($totaal_aantal > 0){		echo "Er werd in totaal ".$totaal_aantal." maal gestemd<br />";	echo $aantal_ja." maal Ja ".$resultaat_ja."%<br />";	echo $aantal_nee." maal Nee ".$resultaat_nee."%<br />";	echo $aantal_anders." maal anders ".$resultaat_anders."%";}	else{		echo "Er werd nog niet gestemd";	}?>

iMac 27" macOS Sierra
iPhone 5s iOS 10

Geplaatst:

Ik zie een veiligheids risico in dit script;

Citaat:
$antwoord = $_POST['antwoord'];

en dan

Citaat:
Php Code:
$query= ("INSERT INTO `antwoord`			(`antwoord`)			VALUES			('$antwoord')"); 

Dit zet de deur wagenwijd open voor database injection etc.

 

Hier een functie die je kan gebruiken om het veel veiliger te maken;

Php Code:
function clean($data) {  $data = trim(htmlentities(strip_tags($data)));  if (get_magic_quotes_gpc()) $data = stripslashes($data);  return mysql_real_escape_string($data);} 

 

Als je dan "$antwoord = $_POST['antwoord'];" aanpast naar

Php Code:
$antwoord = "";if (isset($_POST['antwoord']) $antwoord = clean($_POST['antwoord']); 

dan is het een heel stuk veiliger... smile

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Geplaatst:

Yep, helemaal gelijk, het scriptje was dan ook maar vlug vlug in elkaar gezet.

 

Echter als je mysql_real_escape_string() wil gebruiken moet je eerst connectie maken met de database anders gaat hij een fout geven.

iMac 27" macOS Sierra
iPhone 5s iOS 10

Geplaatst:

Je hebt gelijk kwa connectie naar de database.

Wat ik normaal gesproken doe is een include file maken welke ik in elk script als eerste aanroep. In de include file wordt meteen de db connectie gemaakt. Dan hoef ik niet meer na te denken of die connectie er al is.

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Geplaatst:
Origineel bericht van: Big fellow

Wat ik normaal gesproken doe is een include file maken welke ik in elk script als eerste aanroep. In de include file wordt meteen de db connectie gemaakt. Dan hoef ik niet meer na te denken of die connectie er al is.


Inderdaad, dit doe ik ook altijd.
Ik gebruik onderstaande functie die in de pagina includes.php staat.
Bovenaan de pagina zet ik een require(includes.php); en ik roep de functie aan bij de eerste query die ik moet uitvoeren.

Php Code:
function verbinden(){$host = "localhost";$gebruiker = "db_user";$ww_db = "password";$database = "db_naam";$link = mysql_connect("$host", "$gebruiker", "$ww_db");mysql_select_db ("$database");} 

iMac 27" macOS Sierra
iPhone 5s iOS 10

Geplaatst:

Uhhh, nu wordt het te ingewikkeld. Volgens mij lopen er nu 2 scriptjes door elkaar heen.

 

Toppie dat er gelijk duidelijkheid wordt gegeven over de beveiliging van het script. Ik ga er mee aan de slag.

Openbox sg9 HD PVR

Geplaatst:

ik voor jou de twee scripts gecombineerd naar 1 veilig script.

De tweede pagina blijft hetzelfde

 

Php Code:

<?phpfunction clean($data) {  $data = trim(htmlentities(strip_tags($data)));  if (get_magic_quotes_gpc()) $data = stripslashes($data);  return mysql_real_escape_string($data);} $dbhost = 'localhost';		$dbuser = 'root';		$dbpass = 'password';		$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql');		$dbname = 'form_antwoorden';		mysql_select_db($dbname);if (isset($_POST['submit'])){		$antwoord = "";		if (isset($_POST['antwoord'])) $antwoord = clean($_POST['antwoord']);		if ($antwoord == ""){		$waarschuwing = "<font color=red>Je moet een keuze maken</font>";	}	else{		$query= ("INSERT INTO `antwoord`			(`antwoord`)			VALUES			('$antwoord')");			$input = mysql_query($query) or die (mysql_error());			$waarschuwing = "<font color=red>Bedankt voor uw antwoord</font>";	}}?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">		<title>Untitled 2</title></head><body><form id="form1" name="form1" method="post" action="<?php print $_SERVER['PHP_SELF']; ?>"><?php if (isset($waarschuwing)){ echo $waarschuwing . "<br />"; }?>Stel hier de vraag:<br /><input type="radio" name="antwoord" value="Ja"> Ja<br /><input type="radio" name="antwoord" value="Nee"> Nee<br /><input type="radio" name="antwoord" value="Anders"> Anders<br /><input type="submit" id="submit" name="submit" value="Verzenden"></form><?php unset($waarschuwing); ?></body></html>

iMac 27" macOS Sierra
iPhone 5s iOS 10

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
  • Wie is er online   0 leden

    • Er zijn geen geregistreerde gebruikers deze pagina aan het bekijken
×
×
  • Nieuwe aanmaken...