Replace character with preg replace - php

I have been trying to replace/ remove any special characters when added in the form below. Characters like: +-()*&^%$##!~
I have been trying to do this with preg replace but im not able to get it working. Code which i wrote is below. Am i missing something?
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
</head>
<body>
<form method="post" action="kenteken.php">
<input type="text" name="kenteken" />
<input type="submit" name="verzend" value="Check kenteken" />
</form>
<?php
// Include de benodigde classes
include_once 'api/loader.php';
// Kijken of er een kenteken is ingevoerd.
if(!isset($_POST["kenteken"])) {
echo 'Geen kenteken ontvangen. Ga terug er probeer opnieuw!';
exit;
} else {
// Witte characters (spaties) weghalen
$k = trim($_POST["kenteken"]);
$k2 = preg_replace('/[^A-Za-z0-9\-]/', '', $k);
// Kijken of kenteken leeg is met spaties
if(empty($k2)) {
echo 'Geen kenteken ingevoerd. Ga terug er probeer opnieuw!';
exit;
} else {
header("Location: http://domain.nl/kenteken/?kenteken=$k2");
}
}
?>
</body>
</html>

$k2 = preg_replace('/[^[:alnum:]]/', '', $k);
simple and quick ;)

Related

PHP MySQL Success Delete Message Always Shows

this is my HTML code:
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>supprimer un moyen</title>
<link rel="stylesheet" href="style.css">
</head>
<body class="example">
<br><br><br>
<form name="f" method="post" action=" supprimer_moyen.php ">
<center><b><h1>supprimer un moyen</h1> </b>
<label> &nbsp Entrer le code du moyen : </label>
<input type="text" name="code_moy" value="" placeholder="Code" required>
&nbsp <input id="gobutton" type="submit" name="sup" value="Supprimer"><br><br>
</center>
</form>
</body>
</html>
and this is my php code:
<?php
if (isset ($_POST['sup']))
{
$code_moy= $_POST["code_moy"];
$con=mysql_connect("localhost","root","") or die("Echec de connexion au serveur.".mysql_error());
mysql_select_db("ttp",$con) or die("Echec de sélection de la base.".mysql_error());
$sql = "delete from moyen_transport where ID='$code_moy'";
if (mysql_query($sql))
{
echo '<br>';
echo '<h1><center><font color="white"> suppression avec succès <font></center> </h1>';
echo '<center></center>';
}
else
{
echo '<br>';
echo '<h1><center><font color="red"> ce moyen n\'&eacutexiste pas <font></center> </h1> ';
echo '<center></center>';
}
mysql_close();
}
?>
My problem is that no matter what i enter in input the php result is always "suppression avec succès" even if the "ID" dosen't exist in my database!!!
First try using mysqli
second you can use mysqli_num_rows like that
<?php
if (isset ($_POST['sup'])){
$code_moy= $_POST["code_moy"];
$con=mysqli_connect("localhost","root","","ttp") or die("Echec de connexion au serveur.".mysqli_error($con));
$sql = "select * from moyen_transport where ID='$code_moy'";
$query = mysqli_query($con,$sql);
if(mysqli_num_rows($query) == 0){
//No id found
echo '<br>';
echo '<h1><center><font color="red"> ce moyen n\'&eacutexiste pas <font></center> </h1> ';
echo '<center></center>';
}else{
//id found
$sql = "delete from moyen_transport where ID='$code_moy'";
$query = mysqli_query($con,$sql)or die(mysqli_error($con));
echo '<br>';
echo '<h1><center><font color="white"> suppression avec succès <font></center> </h1>';
echo '<center></center>';}}
?>
Try checking if the returned value is empty
$result = mysql_query($sql);
if(!empty($result)){
//success code here
} else {
//fail code here
}

Changing button to <a>

I have 2 questions. The first one is probably really easy but I don't know how to do it. I made a code that lets you save a music artist and a single and after you save it you can open it with a but I want to open it with a button how do i do that.
And the second question is when you open the saved files I get 20 lines of things that are empty and 1 that is full (sorry for my bad english). How do I change that into normal lines so it only makes a line if needed. Here are my 2 codes:
FILE NAME SEB2.php
<!DOCTYPE html>
<html>
<head>
<title></title>
<?php
if (!empty($_POST)) {
$artiest = $_POST["artiest"];
$single = $_POST["single"];
$fp = fopen("muziekcollectie.txt", "a+");
fputs($fp, $artiest."\r\n");
fputs($fp, $single."\r\n");
fclose($fp);
}
?>
</head>
<body>
<form name="woorden" method="post">
Artiest:<input type="text" name="artiest"><br>
Single:<input type="text" name="single"><br>
<input type="submit" name="Add" value="Add"><br><br>
<form>
<!-- <input type="submit" name="Watch" value="Watch" action="SEB2.php"> -->TEST
</body>
</html>
FILE NAME SEB2.php
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<title>Het gastenboek lezen</title>
</head>
<body>
<?php
$bestandsnaam = "muziekcollectie.txt";
// aantal regels per bijdrage om in te lezen
// elke bijdrage bestaat uit 5 regels
$aantal_regels = 2;
// teller om bij te houden hoeveel regels
// zijn gelezen
$teller = 0;
// Aantal bijdragen wordt bijgehouden.
$aantal_bijdragen = 0;
// gastenboek openen om te lezen
if (file_exists($bestandsnaam)){
$fp = fopen($bestandsnaam, "r");
}
else{
echo "<h2>De muziekcollectie is nog leeg!</h2>
<a href= 'SEB1.php'>
Wees de eerste die erin schrijft!</a> ";
exit;
}
while (!feof($fp)){
$regel = fgets($fp);
if (!feof($fp)){
if ($teller % $aantal_regels == 0){
// kop afdrukken
$aantal_bijdragen++;
// echo "<hr>";
echo "<h3>Bijdrage: $aantal_bijdragen</h3>";
}
}
// regel afdrukken
echo "$regel <br>";
// echo "<hr>";
$teller++;
}
echo "<a href='SEB1.php'>Terug naar de
homepage</a>";
?>
</body>
</html>
The button link is not that hard
<button onclick="window.location.href='SEB2.php';"></button>
I noticed you didn't close your form so that could be the problem when you tested it.
I'm not sure what you mean with the second part but I think it's just cause you do not have an if empty check on your post so empty input will be added to the file as well. If that's the problem this will solve it:
if (!empty($_POST['artiest']) && !empty($_POST['single']))

PHP Enter In textbox

I have a problem I am gonna try my best to explain it. So I have a code where you have 2 links the first link is where you can put your name address and email in a textbox and you can leave a message. The second link will recover this information into a nice page but after 6 lines the next page will generate so if you put more than 1 line of words in the message box it will put everything into a mess it is really hard to explain hope this is enough information. If there is anything you don't understand about my question let me know thanks for the help. There are 4 codes.
here are all the codes:
First file called "opdracht32.php":
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<title>Gastenboek</title>
</head>
<body>
<h2>Gastenboek met PHP</h2>
<hr>
<?php echo date("d-m-Y, G:i");?>
<hr>
<br>
Wat wil je gaan doen?
<ul>
<li><a href="gastenboekschrijven.php">
Schrijf in het gastenboek</a></li>
<br>
<li><a href="gastenboeklezen.php">
Lees het gastenboek</a></li>
</ul>
</body>
</html>
Second file called "gastenboekschrijven.php":
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<title>In het gastenboek schrijven</title>
</head>
<body>
<form action="opslaan.php" method="post">
<p>
De gegevens die u via het volgende
formulier invult, worden op het
gastenboek geplaatst en zullen voor
iedereen zichtbaar zijn.
</p>
<p>
Naam: <br>
<input name="naam" type="text" size="40" tabindex="1">
</p>
<p>
E-mail: (optioneel)<br>
<input name="email" type="text" size="40" tabindex="2">
</p>
<p>
Woonplaats: (optioneel)<br>
<input name="woonplaats" type="text" size="40" tabindex="3">
</p>
<p>
Uw bericht: <br>
<textarea name="bericht" rows="8" cols="40" tabindex="4">
</textarea>
</p>
<p>
<input type="submit" name="submit" value="Verstuur" title="Verstuur dit formulier" tabindex="5">
</p>
</form>
</body>
</html>
Third file called "gastenboeklezen.php":
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<title>Het gastenboek lezen</title>
</head>
<body>
<?php
$bestandsnaam = "gastenboek.txt";
// aantal regels per bijdrage om in te lezen
// elke bijdrage bestaat uit 5 regels
$aantal_regels = 6;
// teller om bij te houden hoeveel regels
// zijn gelezen
$teller = 0;
// Aantal bijdragen wordt bijgehouden.
$aantal_bijdragen = 0;
// gastenboek openen om te lezen
if (file_exists($bestandsnaam)){
$fp = fopen($bestandsnaam, "r");
}
else{
echo "<h2>Het gastenboek is nog leeg!</h2>
<a href= 'gastenboekschrijven.php'>
Wees de eerste die erin schrijft!</a> ";
exit;
}
while (!feof($fp)){
$regel = fgets($fp);
if (!feof($fp)){
if ($teller % $aantal_regels == 0){
// kop afdrukken
$aantal_bijdragen++;
// echo "<hr>";
echo "<h3>Bijdrage: $aantal_bijdragen</h3>";
}
}
// regel afdrukken
echo "$regel <br>";
// echo "<hr>";
$teller++;
}
echo "<a href='opdracht32.php'>Terug naar de
homepage</a>";
?>
</body>
</html>
The last file called "opslaan.php":
<?php
$bestandsnaam = "gastenboek.txt";
$datum = date("d-m-Y, G:i");
// gastenboek openen of maken
if (!$fp = fopen($bestandsnaam, "a+")){
echo "<h2>Het lukt niet om het gastenboek te openen</h2>";
exit;
}
// het wegschrijven van de gegevens
fputs($fp, "Datum: ".$datum);
fputs($fp, "\r\n");
fputs($fp, "Naam: ".$_POST["naam"]);
fputs($fp, "\r\n");
fputs($fp, "Email: ".$_POST["email"]);
fputs($fp, "\r\n");
fputs($fp, "Woonplaats: ".$_POST["woonplaats"]);
fputs($fp, "\r\n");
fputs($fp, "Bericht: ".$_POST["bericht"]);
fputs($fp, "\r\n"."\r\n");
fclose($fp);
echo "<h2>Klaar</h2>";
echo "<p>De bijdrage is opgeslagen</p>";
echo "<a href = 'opdracht32.php'>Terug naar het
beginscherm</a>";
?>
The problem is that you restrict your self to a fixed number of lines for each comment, so when a comment exceed the maximum number of lines, the code will split it as more than one comment.
I prefer to use database to store the comments, but if you need to use files, here is my approach.
Before save comment to the file append a special token to define the comment like [start-of-comment]
When display the comments, use that token to split each comment regardless of number of lines.
The comments in file will look like:
[start-of-comment]
Datum: 23-11-2016, 14:23
Naam: name
Email: email
Woonplaats: ***
Bericht: -***-*/*-/-*
[start-of-comment]
Datum: 23-11-2016, 14:23
Naam: fgh
Email: fghf
Woonplaats: dfgh
Bericht: dfhfghgfh
To test it, i made changes in the following files: opslaan.php and gastenboeklezen.php
replace them with your files and clear gastenboek.txt file and try it
opslaan.php
<?php
$bestandsnaam = "gastenboek.txt";
$datum = date("d-m-Y, G:i");
// gastenboek openen of maken
if (!$fp = fopen($bestandsnaam, "a+")){
echo "<h2>Het lukt niet om het gastenboek te openen</h2>";
exit;
}
// het wegschrijven van de gegevens
fputs($fp, "[start-of-comment]\r\n");
fputs($fp, "Datum: ".$datum);
fputs($fp, "\r\n");
fputs($fp, "Naam: ".$_POST["naam"]);
fputs($fp, "\r\n");
fputs($fp, "Email: ".$_POST["email"]);
fputs($fp, "\r\n");
fputs($fp, "Woonplaats: ".$_POST["woonplaats"]);
fputs($fp, "\r\n");
fputs($fp, "Bericht: ".$_POST["bericht"]);
fputs($fp, "\r\n"."\r\n");
fclose($fp);
echo "<h2>Klaar</h2>";
echo "<p>De bijdrage is opgeslagen</p>";
echo "<a href = 'opdracht32.php'>Terug naar het
beginscherm</a>";
?>
gastenboeklezen.php
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="utf-8">
<title>Het gastenboek lezen</title>
</head>
<body>
<?php
$bestandsnaam = "gastenboek.txt";
// aantal regels per bijdrage om in te lezen
// elke bijdrage bestaat uit 5 regels
$aantal_regels = 6;
// teller om bij te houden hoeveel regels
// zijn gelezen
$teller = 0;
// Aantal bijdragen wordt bijgehouden.
$aantal_bijdragen = 0;
// gastenboek openen om te lezen
if (file_exists($bestandsnaam)){
$fp = fopen($bestandsnaam, "r");
}
else{
echo "<h2>Het gastenboek is nog leeg!</h2>
<a href= 'gastenboekschrijven.php'>
Wees de eerste die erin schrijft!</a> ";
exit;
}
while (!feof($fp)){
$regel = fgets($fp);
if (!feof($fp)){
if($regel !== "[start-of-comment]\r\n"){
echo "$regel <br>";
}else{
$aantal_bijdragen++;
echo "<h3>Bijdrage: $aantal_bijdragen</h3>";
}
}
$teller++;
}
echo "<a href='opdracht32.php'>Terug naar de
homepage</a>";
?>
</body>
</html>

creating an array from database

I'm using a array to get a range between 1011-2371 but I'didnt need all digits. It's a long list thats why I import the CSV to the database.
I want to create a array from a database table.
But I can't get it.
Here's a rough mockup of the old php:
<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
<input type="text" placeholder="1234AB" name="postcode" />
<input type="submit" value="verstuur" />
</form>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
$postcode = range(1011,2371);
if(preg_match('/^[1-9][0-9]{3} ?[a-zA-Z]{2}$/', $_POST['postcode'])) {
if(in_array($_POST['postcode'],$postcode)) {
echo 'FreshFoods is beschikbaar bij jou in de buurt.';
} else {
echo 'FreshFoods is nog niet beschikbaar bij u in de buurt.';
}
} else {
echo 'Voer 4 cijfers en 2 letters in als postcode. Voorbeeld 1234AB';
}
}
?>
and this is what I try do get the array from the database:
<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
<input type="text" placeholder="1234AB" name="postcode" />
<input type="submit" value="verstuur" />
</form>
<?php
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == "POST") {
$postcode = array();
$result = mysql_query("SELECT postcode FROM postcode_check");
if(preg_match('/^[1-9][0-9]{3} ?[a-zA-Z]{2}$/', $_POST['postcode'])) {
if(in_array($_POST['postcode'],$postcode)) {
echo 'FreshFoods is beschikbaar bij jou in de buurt.';
} else {
echo 'FreshFoods is nog niet beschikbaar bij u in de buurt.';
}
} else {
echo 'Voer 4 cijfers en 2 letters in als postcode. Voorbeeld 1234AB';
}
}
?>
the db_config.php file looks like:
<?php
$db = array (
'host' => 'localhost',
'user' => 'root',
'pass' => 'root',
'dbname' => 'testzip'
);
if(!mysql_connect($db['host'], $db['user'], $db['pass']))
{
trigger_error('Fout bij verbinden: '.mysql_error());
}
elseif(!mysql_select_db($db['dbname']))
{
trigger_error('Fout bij selecteren database: '.mysql_error());
}
else
{
$sql = "SET SESSION sql_mode = 'ANSI,ONLY_FULL_GROUP_BY'";
if(!mysql_query($sql))
{
trigger_error('MySQL in ANSI niet mogelijk');
}
}
?>
you have to use mysql_fetch_array or mysql_fetch_assoc to fetch the result from database.
<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
<input type="text" placeholder="1234AB" name="postcode" />
<input type="submit" value="verstuur" />
</form>
<?php
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == "POST") {
$postcode = array();
$result = mysql_query("SELECT postcode FROM postcode_check");
while ($row = mysql_fetch_array($result)) {
$postcode[] = $row['postcode'];
}
if(preg_match('/^[1-9][0-9]{3} ?[a-zA-Z]{2}$/', $_POST['postcode'])) {
if(in_array($_POST['postcode'],$postcode)) {
echo 'FreshFoods is beschikbaar bij jou in de buurt.';
} else {
echo 'FreshFoods is nog niet beschikbaar bij u in de buurt.';
}
} else {
echo 'Voer 4 cijfers en 2 letters in als postcode. Voorbeeld 1234AB';
}
}
?>
Try this code.
You need to fetch the result. Your regex will never match your sample data from the db though so you will always get the nog niet message. or voorbeeld. Never 'FreshFoods is beschikbaar bij jou in de buurt'
<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
<input type="text" placeholder="1234AB" name="postcode" />
<input type="submit" value="verstuur" />
</form>
<?php
require_once 'db_config.php';
if($_SERVER['REQUEST_METHOD'] == "POST") {
$postcode = array();
$result = mysql_query("SELECT postcode FROM postcode_check");
while($row = mysql_fetch_assoc($result)){
$postcode[] = $row['postcode'];
}
if(preg_match('/^[1-9][0-9]{3} ?[a-zA-Z]{2}$/', $_POST['postcode'])) {
if(in_array($_POST['postcode'],$postcode)) {
echo 'FreshFoods is beschikbaar bij jou in de buurt.';
} else {
echo 'FreshFoods is nog niet beschikbaar bij u in de buurt.';
}
} else {
echo 'Voer 4 cijfers en 2 letters in als postcode. Voorbeeld 1234AB';
}
}
?>

PHP Unexpected T_VARIABLE

I'm making a basic lotery script and i'm getting the same error the whole time: Unexpected T_Variable on line 5. Here is my script, I hope someone can help me:
<?php
$invulcijfer = '';
if (isset($_POST['sumbitBtn']))
{
$invulcijfer = $_POST['cijfer'];
$pinda = preg_replace("/[^0-9]/", "", $invulcijfer);
$lotnummer = "1234"; // Hier je 4 cijfers voor lotnummer
if($invulcijfer = '') {
echo "<font color='#FF000'>Je moet alles invullen</font>";
} else if($pinda !== $invulcijfer) {
echo "<font color='#FF000'>Dat zijn geen cijfers</font>";
} else {
if ($pinda == $lotnummer) {
     echo "<font color='green'>WAUW! Het is je gelukt!</font>";
} else {
echo "<font color='#FF000'>Sorry, het is niet gelukt..</font>";
// Maybe update query van dat ze - points hebben ofso? q wat jij wilt
}
}
}
}?>
<br><br>
<h3>Loterij Script</h3>
<font color="green">Typ 4 cijfers in en misschien win jij!</font><br><br>
<form action="" method="post">
<input type="text" id="naam" name="naam" maxlength="4"/><br>
<input type="text" id="cijfer" name="cijfer" maxlength="4"/><br>
<input type="submit" id="submitBtn" name="submitBtn" value="Check je lot"/>
</form>
EDIT
I spotted a few errors:
THIS:
if (isset($_POST['sumbitBtn']))
it needs to read as
if (isset($_POST['submitBtn']))
there was a spelling mistake.
Also if($invulcijfer = '') { needs to be if($invulcijfer == '') {
You have one closing brace too many.
Remove the one this one in }?> and your script will work.
This is the code that I ran, deleting the extra closing brace.
EDIT #2 (fixed conditions and spelling mistake for submit button.
<?php
$invulcijfer = '';
if (isset($_POST['submitBtn']))
{
$invulcijfer = $_POST['cijfer'];
$pinda = preg_replace("/[^0-9]/", "", $invulcijfer);
$lotnummer = "1234"; // Hier je 4 cijfers voor lotnummer
if($invulcijfer == '') {
echo "<font color='#FF000'>Je moet alles invullen</font>";
}
elseif ($pinda !== $invulcijfer){
echo "<font color='#FF000'>Dat zijn geen cijfers</font>";
} else {
if ($pinda == $lotnummer) {
echo "<font color='green'>WAUW! Het is je gelukt!</font>";
}
else {
echo "<font color='#FF000'>Sorry, het is niet gelukt..</font>";
// Maybe update query van dat ze - points hebben ofso? q wat jij wilt
}
}
}
?>
<br><br>
<h3>Loterij Script</h3>
<font color="green">Typ 4 cijfers in en misschien win jij!</font><br><br>
<form action="" method="post">
<input type="text" id="naam" name="naam" maxlength="4"/><br>
<input type="text" id="cijfer" name="cijfer" maxlength="4"/><br>
<input type="submit" id="submitBtn" name="submitBtn" value="Check je lot"/>
</form>

Categories