couldn't fetch mysqli error in shoutbox

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4 5 volgende »

- Ariën  -
Beheerder

- Ariën -

04/01/2014 23:20:45
Quote Anchor link
Tabblad SQL...
maar ik durf de gok te wagen dat je de tabelnaam gewoon naar shout moet hernoemen, zoals ik net al zei.
Gewijzigd op 04/01/2014 23:21:23 door - Ariën -
 
PHP hulp

PHP hulp

23/12/2024 11:30:17
 
Fabian W

Fabian W

04/01/2014 23:21:47
Quote Anchor link
oke tabel is hernoemt naar shouts
 
- Ariën  -
Beheerder

- Ariën -

04/01/2014 23:23:42
Quote Anchor link
Dan moet het opgelost zijn.
Zo niet ben ik benieuwd naar het SHOW TABLES-commando
 
Fabian W

Fabian W

04/01/2014 23:25:23
Quote Anchor link
waar moet je dat show table commando invullen?
 
- Ariën  -
Beheerder

- Ariën -

04/01/2014 23:27:11
Quote Anchor link
Net zoals ik al net zei, in je tabblad SQL. Dat is de plek waar je commando's in hoort te voeren. Kies eerst wel even je database in de linkerkolom.
Gewijzigd op 04/01/2014 23:28:32 door - Ariën -
 
Fabian W

Fabian W

04/01/2014 23:28:28
Quote Anchor link
Maar volgens mij doet hij het nu al, al is de verbinding ontiegelijk traag bij mij.
 
- Ariën  -
Beheerder

- Ariën -

04/01/2014 23:29:02
Quote Anchor link
Dat zal wel bij je hosting liggen.
 
Fabian W

Fabian W

04/01/2014 23:29:37
Quote Anchor link
shouts staat bij het show tables commando trouwens aangegeven als enige tabel.

Toevoeging op 04/01/2014 23:31:17:

shoutbox doet het, maar als ik iets intyp komt dat wel 2x in het scherm te staan.

Toevoeging op 04/01/2014 23:33:32:

als ik een naam en bericht intyp verschijnt eerst snel 1 keer dat bericht op het scherm en na een seconde verschijnt dat bericht voor de 2e keer op het scherm.
 
- Ariën  -
Beheerder

- Ariën -

04/01/2014 23:34:28
Quote Anchor link
Ah, daar was die comment op lijn 24 voor die ik weg had gehaald. Die regel is nergens voor nodig, omdat een functie elke seconde zelf de reacties laat refreshen.
Gewijzigd op 04/01/2014 23:35:53 door - Ariën -
 
Fabian W

Fabian W

04/01/2014 23:41:14
Quote Anchor link
Je hebt gelijk, als ik die aanhalingstekens op line 24 weghaal verschijnt het bericht 1 keer in beeld.
Echter, wanneer ik op F5 druk komt het bericht voor de 2e keer in beeld helaas.
 
- Ariën  -
Beheerder

- Ariën -

04/01/2014 23:43:14
Quote Anchor link
Logisch want je doet een refresh, waarmee je opnieuw een POST-request doet.
Dan zou je een anti-spam check moeten inbouwen. Bij voorkeur met een sessie die je na 1 minuut weer verwijdert.
 
Fabian W

Fabian W

04/01/2014 23:49:38
Quote Anchor link
Bedankt voor alle hulp Aar!
Echt geweldig wat je allemaal voor mij doet.
Ik ga je niet meer vragen om een anti-spam check, dat zou teveel van het goede zijn. Hij werkt nu iig.

Slaap lekker.
 
- Ariën  -
Beheerder

- Ariën -

04/01/2014 23:50:56
Quote Anchor link
Fijn dat het werkt!
Alles valt zelf ook uit te proberen natuurlijk ;-)
Gewijzigd op 04/01/2014 23:52:55 door - Ariën -
 
Fabian W

Fabian W

20/07/2014 23:13:13
Quote Anchor link
Hoi

Het laatste bericht op dit forum is alweer een tijdje geleden. Nu ik met een site begonnen ben, zou ik graag de shoutbox willen perfectioneren.

Het grootste probleem is nog steeds dat een bericht bij het indrukken van f5 zich herhaalt.

- Aar - op 04/01/2014 23:43:14:
Logisch want je doet een refresh, waarmee je opnieuw een POST-request doet.
Dan zou je een anti-spam check moeten inbouwen. Bij voorkeur met een sessie die je na 1 minuut weer verwijdert.


Verder moet een shoutbox natuurlijk niet gemakkelijk te hacken zijn. Zijn er nog veel mogelijkheden op dit punt?

Zelf heb ik in de tussentijd wat php ervaring opgedaan, maar een expert ben ik allerminst. Zou iemand me nog eens willen helpen?

Fabian





Toevoeging op 20/07/2014 23:23:24:

De files nog een keer:

shoutbox.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link type="text/css" rel="stylesheet" href="shoutbox.css" />
<script type="text/javascript" src="shoutbox.js"></script>
<script type="text/javascript" >
$(document).ready(function(){
 $("#shout_button").click(function(){
   var msg = $("#shout_message").val();
   var nam = $("#shout_name").val();
   var value =  $(this).val();
   $(this).val('sending...');
    var datastring = 'name='+nam+'&msg='+msg;
    $.ajax({
    type:'POST',
    url:'shout.php',
    data:datastring,
    cache:false,
    success:function(){
     $("#shouts ul").prepend("<li><span class='shout_post_name'>"+nam+"</span>:"+msg+"</li>").fadeIn();
     $("#shout_button").val(value);
     $("#shout_message").val('');
     }
    });  
    
 });

 $("#shouts ul").load("shout.php?show");
 
});
</script>
<title>Chat Box</title>
</head>

<body>
<div id="container">

<h3>Shoutbox</h3>

<p>Een berichtje in de <Strong>'Shoutbox'</strong> is altijd leuk. Stel een vraag, maak een opmerking over een chart of start een discussie. De keuze is aan jou!</p>

<div id="write">
       <input type="text" id="shout_message" placeholder="Message" name="message"><br/>
       <input type="text" id="shout_name" name="name" placeholder="Name" ><input id="shout_button" type="button" value="Shout">
 </div>
<div id="shouts">
<ul></ul>
</div>

</div>
</body>
</html>


shout.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
  $mysqli
= new mysqli("mysql.hostinger.nl", "u493******_00***", "*********", "u493******_00***");
if(isset($_POST['name'],$_POST['msg'])){
  $name = trim($_POST['name']);
  $msg = trim($_POST['msg']);
  if(!empty($name)&&!empty($msg)){
      $sql = "INSERT INTO `shouts` (`id`,`name`,`message`,`post_date`) VALUES(NULL,'".mysqli_real_escape_string($mysqli,$name)."','".mysqli_real_escape_string($mysqli,$msg)."',NOW())";
      $mysqli->query($sql);
  }
}


if(isset($_GET['show'])){

 $sql = "SELECT `name`,`message`,`post_date` FROM shouts ORDER BY `id` DESC";
 if($result = $mysqli->query($sql)){
 while($row = $result->fetch_assoc()){
    echo "<li><span class='shout_post_name'>".$row['name']."</span>:".$row['message']."</li>";
    }
 }
}

?>


<?php // kleurtjes

if(!$mysqli->query($sql)) {
echo "Error: ".$mysqli->error;
}

?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/07/2014 23:26:44
Quote Anchor link
Je zou gewoon na de acties die je uitvoert nadat een formulier verstuurt is een redirect moeten doen, al is het naar dezelfde pagina.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    // valideer je formulier zodat je weet dat de verplichte velden ook ingevuld zijn etc.
    if(validate() == true)
    {

        // doe de noodzakelijke acties zoals database updaten of een email versturen

        // redirect de gebruiker om te voorkomen dat het nog een keer gepost wordt

        header('Location: waarjewil.php');
        exit();
    }
}

?>
Gewijzigd op 20/07/2014 23:31:56 door Frank Nietbelangrijk
 
Fabian W

Fabian W

20/07/2014 23:33:41
Quote Anchor link
Waar zou je dat stukje neerzetten?
en de redirect, gaat die naar shout.php, shoutbox.php of index.php?
(index.php roept shoutbox.php op via include)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/07/2014 23:40:09
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$mysqli
= new mysqli("mysql.hostinger.nl", "u493******_00***", "*********", "u493******_00***");


if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    $name = trim($_POST['name']);
    $msg = trim($_POST['msg']);
  
//  if(!empty($name)&&!empty($msg)) { // pas op met empty! Als $msg een 0 als inhoud heeft dan weigert ie.
    if(strlen($name) && strlen($msg))
    {
    
        $sql = "INSERT INTO `shouts` (`id`,`name`,`message`,`post_date`) VALUES(NULL,'".mysqli_real_escape_string($mysqli,$name)."','".mysqli_real_escape_string($mysqli,$msg)."',NOW())";
        $mysqli->query($sql);
        
        // klaar met de INSERT dus redirect!
        header('Location: shout.php');
        exit;
    }
}

?>


Toevoeging op 20/07/2014 23:42:34:

Fabian W op 20/07/2014 23:33:41:
En de redirect, gaat die naar shout.php, shoutbox.php of index.php?
(index.php roept shoutbox.php op via include)


dan naar in index.php, desnoods zo als voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
header('Location: index.php?page=shoutbox');
?>
 
Fabian W

Fabian W

20/07/2014 23:44:52
Quote Anchor link
thanks man, hij doet het nu in. Geeft geen extra bericht meer bij refreshen.

Heb je nog tips m.b.t. de veiligheid?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/07/2014 23:55:45
Quote Anchor link
mysqli_real_escape_string gebruik je al dus dat gaat goed.
Voor een shoutbox zou je nog een blacklist kunnen maken van verboden woorden.
Tevens zou je er voor kunnen kiezen dat berichten naar jou gemaild worden, met een linkje om ze direct weer te verwijderen.
Ook zou je er voor kunnen kiezen dat men zich moet registreren alvorens iets te kunnen plaatsen
 
Fabian W

Fabian W

21/07/2014 00:33:00
Quote Anchor link
Een inlogsysteem is wel aardig, alleen weet ik van mijzelf dat ik niet genoeg kennis heb om de veiligheid van w8woorden te garanderen en w8woord vergeten emails op te stellen.
 

Pagina: « vorige 1 2 3 4 5 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.